2013-04-23 13 views
6

में अलग-अलग काम करने के बाद मुझे एक बहुत ही विशिष्ट समस्या है क्योंकि मैं एक नेविगेशन बनाने की कोशिश कर रहा हूं जिसमें छवियों या जावास्क्रिप्ट के बिना पूरी तरह से सीएसएस का उपयोग कर कोण हैं। मैंने इसे समझ लिया है ताकि यह पूरी तरह से काम कर सके लेकिन जिस समस्या में मैं आ रहा हूं वह यह है कि आईई 9 और क्रोम अलग दिखते हैं। मैं छद्म तत्वों के मार्जिन को बदलकर काम करने के लिए दोनों मिल सकता हूं लेकिन मैं दोनों में काम करने के लिए एक ही समाधान पसंद करूंगा। अगर कोई यह समझ सकता है कि मार्जिन अलग क्यों हैं और मुझे दोनों ब्राउज़रों में काम करने के लिए एक सीएसएस समाधान दें जो बहुत अच्छा होगा। अन्यथा मुझे आईई के लिए एक अलग वर्ग जोड़ना होगा और इसे एक अलग सीएसएस प्रविष्टि का उपयोग करके काम करने के लिए मजबूर करना होगा।सीएसएस छद्म-तत्व: पहले और: इंटरनेट एक्सप्लोरर

यहाँ arrow-nav

यहाँ के साथ काम करने जाता है एचटीएमएल

<ul> 
    <li><a href="#" >Some Navigation</a></li> 
    <li><a href="#">More navigation</a></li> 
    <li><a href="#">Another Nav</a></li> 
    <li><a href="#">Test Nav</a></li> 
    <li><a href="#">A Test Navigation</a></li> 
</ul> 

सीएसएस jsfiddle है

ul { 
    float:right; 
    list-style-type:none; 
    margin:0; 
    padding:0; 
    width: 300px; 
} 
ul li a { 
    float:left; 
    width:300px; 
} 
ul li{ 
    float:left; 
    width: 300px; 
    height:50px; 
    line-height:50px; 
    text-indent:10%; 
    background: grey; 
    margin-bottom:10px; 
    border:1px solid black; 
} 
ul li:before { 
    content:""; 
    position:absolute; 
    margin-top:-1px; 
    border-top: 26px solid transparent; 
    border-bottom: 26px solid transparent; 
    border-right: 21px solid black; 
    margin-left:-22px; 
} 
ul li:after { 
    content:""; 
    position:absolute; 
    border-top: 25px solid transparent; 
    border-bottom: 25px solid transparent; 
    border-right: 20px solid grey; 
    margin-left:-320px; 
} 
+2

आप एक सीएसएस रीसेट करने स्टाइलशीट कम करने के लिए इस्तेमाल किया है/पार ब्राउज़र चूक निकालना चाहते हैं? –

+1

मैं इसे आई 7 या 8 में काम नहीं कर सकता और न ही मोज़िला ब्राउज़र में। यह उपयोगकर्ताओं का एक बड़ा हिस्सा है! क्या यह आंतरिक के लिए है? और यदि हां, तो क्या उपयोगकर्ता मशीनों पर कोई मानक-स्थापित मॉड्यूल/प्लगइन्स हैं? बस यह पूछने पर कि यह एक कंपनी की आंतरिक साइट के लिए है जो प्रायः ब्राउज़रों को बदल देता है। –

+0

': पहले 'और': आईई 8 में काम करने के बाद (लेकिन आईई 7 नहीं) - http://caniuse.com/#feat=css-gencontent। समाधान के लिए नीचे दिए गए मेरे उत्तर को देखें जो IE8 + – ryanbrill

उत्तर

7

आप छद्म तत्वों पर पूर्ण स्थिति का उपयोग करके इसे ठीक कर सकते हैं। इस काम को सही तरीके से करने के लिए, ul li की स्थिति को सापेक्ष में सेट करें (जो ली के सापेक्ष होने के लिए तत्वों को बिल्कुल भीतर रखेगा)। फिर, left बजाय margin-left उपयोग करने के लिए छद्म तत्वों की स्थिति को अद्यतन:

ul li{ 
    position: relative; // Add this. 
    float:left; 
    width: 300px; 
    height:50px; 
    line-height:50px; 
    text-indent:10%; 
    background: grey; 
    margin-bottom:10px; 
    border:1px solid black; 
} 
ul li:before { 
    content:""; 
    position:absolute; 
    margin-top:-1px; 
    border-top: 26px solid transparent; 
    border-bottom: 26px solid transparent; 
    border-right: 21px solid black; 
    left:-22px; // Update from margin-left to left 
} 
ul li:after { 
    content:""; 
    position:absolute; 
    border-top: 25px solid transparent; 
    border-bottom: 25px solid transparent; 
    border-right: 20px solid grey; 
    left:-20px; // Update from margin-left to left 
} 

http://jsfiddle.net/ryanbrill/jSdWR/5/

+4

यह अजीब बात है कि मैंने बहुत लंबे समय तक सीएसएस के साथ काम किया है और कभी नहीं महसूस किया है कि माता-पिता तत्व स्थिति को सापेक्ष रखने से पूर्ण स्थिति की अनुमति मिलती है दस्तावेज़ के बजाय माता-पिता के साथ काम करने के लिए बाल तत्व। मैं हमेशा दस्तावेज़ के साथ काम करने की वजह से पूर्ण स्थिति से परहेज करता हूं। यह वही है जो मैं अपने वर्तमान कोड को अपडेट करने के लिए ढूंढ रहा था और सरल था। धन्यवाद! –

0

आप तत्वों (उदाहरण के top के लिए के लिए स्थिति निर्दिष्ट करने की आवश्यकता है और left मूल्य)। और किसी कारण है, जो मैं पूरी तरह से समझ में नहीं आता के लिए - li (नहीं ul) को position: relative जोड़ने के लिए:

http://jsfiddle.net/jSdWR/4/

+1

में 'स्थिति' को जोड़कर 'ली' में सापेक्ष' जोड़ना एक नया पोजिशनिंग संदर्भ बनाता है, जहां तत्व तत्व के भीतर बिल्कुल स्थित तत्व मूल तत्व (दस्तावेज़ के बजाय, उदाहरण के लिए)। – ryanbrill

+0

मुझे इसके बारे में पता है। :) मुझे आश्चर्य है कि 'पहले' और ': तत्वों' के बाद इस मामले में 'li' के बच्चे माना जाता है। – Kaloyan

+0

हां, ': पहले 'और': बाद में तत्व के बच्चे माना जाता है जिन्हें वे संलग्न कर रहे हैं। यह स्पष्ट हो जाता है जब आप इसके चारों ओर एक सीमा लागू करते हैं: http://tinker.io/98f9b – cimmanon

संबंधित मुद्दे