2015-03-25 5 views
9

में फॉर्म का चयन तत्व गलत तरीके से काट दिया गया है, मैं फ़ायरफ़ॉक्स में कुछ चुनिंदा फ़ील्ड के संबंध में कुछ अजीब व्यवहार देख रहा हूं।फ़ायरफ़ॉक्स

व्यूपोर्ट चौड़ाई के आधार पर, 33.333% की चौड़ाई के साथ चयन करें, कभी-कभी इसकी दाएं सीमाएं बंद हो जाएंगी।

enter image description here

कृपया एक उदाहरण के लिए इस बेला देखें: http://jsfiddle.net/pjv0adhw/

क्या मैं एक पूर्ण चौड़ाई के साथ एक क्षैतिज रूप से केंद्रित पैरेंट कंटेनर, एक आंशिक चौड़ाई के साथ एक का चयन युक्त है, तो जैसे:

.parent { 
    margin: 0 auto; /* centered on viewports > 1200px */ 
    width: 300px; 
} 
.select { 
    width: 33.333%; 
} 

सरलीकृत मार्कअप:

<body> 
    <div class="parent"> 
    <select class="select"> 
     <option>cat</option> 
     <option>dog</option> 
     <option>manatee</option> 
    </select> 
    </div> 
</body> 

अब, फ़ायरफ़ॉक्स पर, जब व्यूपोर्ट चौड़ाई 300px से अधिक है और .parent तत्व केंद्रित है, select अजीब तरीके से व्यवहार करना शुरू कर देता है।

यहां तक ​​कि व्यूपोर्ट चौड़ाई (302px, 1326px) में, सब ठीक है। लेकिन अजीब व्यूपोर्ट चौड़ाई (301px, 1317px) में, चयन की दायां सीमा काट दिया जा रहा है।

मैंने इसे फ़ायरफ़ॉक्स 32-35 में देखा है। अन्य ब्राउज़र विक्रेताओं को प्रभावित नहीं लग रहा है।

इसके अलावा, यह तब होता है जब option एस select से संकुचित होते हैं।

मुझे लगता है कि क्या होता है यह है कि, यदि बाएं ओवर व्यूपोर्ट चौड़ाई एक विषम संख्या है, तो margin: auto; संपत्ति के लिए कुछ गणना आधे पिक्सल की गणना कर रही है और गोल त्रुटियां कर रही है।

मुझे समझ में नहीं आ रहा है कि माता-पिता पर मार्जिन का असर कैसे हो सकता है, जिनकी आंशिक चौड़ाई, जैसा कि मैं इसे समझता हूं, हमेशा 300px की माता-पिता की पूर्ण चौड़ाई के आधार पर गणना की जानी चाहिए ।

क्या मुझे यहां बॉक्स मॉडल के बारे में कुछ मौलिक याद आ रही है, या यह फ़ायरफ़ॉक्स में बस एक बग है? क्या इस मुद्दे के लिए कोई ज्ञात कामकाज है कि मैंने अभी तक खोला नहीं है?

एक sidenote पर, box-sizing: border-box; इस व्यवहार पर कोई प्रभाव नहीं लग रहा है।

उत्तर

0

यह समस्या has been reported to firefox, और वहाँ एक अच्छा समाधान नहीं है:

http://jsfiddle.net/pjv0adhw/10/

मैं इसे चारों ओर एक सा खेला है और इस कोड को आपके द्वारा दी गई साथ काम करने जा रहा है। बात एक आकार देने वाले कंटेनर को सेट करना है और फिर अनुभाग को इसकी चौड़ाई का केवल 99.99% बनाना है। कुछ इस तरह:

.sizing-container { width: *desiredwidth*; } 
.sizing-container section { width: 99.99%; } 

मैं भी ब्राउज़र-विशिष्ट कोड के इस बिट को लागू करने की कोशिश की:

-webkit-box-sizing: border-box; 
-moz-box-sizing: border-box; 
-ms-box-sizing: border-box; 
box-sizing: border-box; 

लेकिन किसी भी तरह अपने मामले में इस समस्या को हल करने के लिए नहीं मालूम था।

मुझे आशा है कि यह मदद की, एंड्रयू

2

DEMO

यह वह जगह है आसानी से अपने select रों

यहाँ है एक स्क्रीन शॉट आकार बदलने के लिए flexbox का उपयोग कर हल फ़ायरफ़ॉक्स से भाग गया the border on the second select is not being cut anymore

एचटीएमएल

<div> 
    <select class='flex-1'> 
     <option>abc</option> 
     <option>def</option> 
    </select> 
    <select class='flex-2'> 
     <option>cat</option> 
     <option>dog</option> 
     <option>manatee</option> 
    </select> 
    <span class='flex-3'></span> 
</div> 

सीएसएस

* { 
    margin: 0; 
    outline: 0; 
    padding: 0; 
} 
div{ 
    margin: 5em auto; 
    padding: 1em; 
    width: 300px; 
    background-color: slategray; 
    display: flex; 
} 
[class*='flex']{ 
    flex-basis: 0; 
} 
.flex-1{ flex-grow: 1; } 
.flex-2{ flex-grow: 2; } 
.flex-3{ flex-grow: 3; } 
flexbox के बारे में अधिक जानकारी के

here

0

आप इस कोशिश कर सकते हैं:

.select { 
    width: calc(100%/3); 
}