2013-01-10 21 views
24

मेरे पास बूटस्ट्रैप्स "टैब" प्लगइन का उपयोग करके एक अनियमित सूची है। कोड इस तरह दिखता है:सीएसएस 3: नहीं() चयनकर्ता माता-पिता की कक्षा का परीक्षण करने के लिए

<ul> 
    <li class="active span3"><a href="#ourAgency" data-toggle="tab"><i class="icon-building icon-3x"></i>Our Agency</a></li> 
    <li class="span3"><a href="#studentVisas" data-toggle="tab"><i class="icon-laptop icon-3x"></i>Student Visas</a></li> 
    <li class="span3"><a href="#workVisas" data-toggle="tab"><i class="icon-suitcase icon-3x"></i>Work Visas</a></li> 
    <li class="span3"><a href="#accreditation" data-toggle="tab"><i class="icon-legal icon-3x"></i>Accreditation</a></li> 
</ul> 

मैं CSS3 के उपयोग करने के लिए सभी <a> लिंक जिसकी मूल <li> करता वर्ग .active है नहीं का रंग बदलने के लिए करना चाहते हैं।

मैं कुछ इस तरह की कोशिश की है:

a:not(li.active>a){ 
    color:grey; 
} 

लेकिन कोई लाभ नहीं हुआ। क्या ऐसा करने का कोई तरीका है या क्या मैं गलत पेड़ को भड़क रहा हूं?

+1

वर्तमान में सीएसएस (हालांकि CSS4 जाहिर इस क्षमता होगा) ताकि आप एक और समाधान के लिए देखने के लिए चाहते हो सकता है –

+0

खैर कि सिर्फ कष्टप्रद है कोई "जनक" seletor है! मुझे लगता है कि मैं सिर्फ 'li.active> a' पर एक विशेष शैली लागू कर सकता हूं जो नियमित' ए 'शैली को ओवरराइड करता है, लेकिन अगर मैं अभिभावक को पा सकता हूं तो मैं चाहूंगा। ओह अच्छा! – Jascination

+0

@ एक्सप्लोज़न पिल्स: यहां कोड माता-पिता का चयन करने की कोशिश नहीं कर रहा है; यह अभिभावक मिलान (या मेल नहीं खाता) के आधार पर एक बच्चे का चयन करने की कोशिश कर रहा है। इसे माता-पिता चयनकर्ता के साथ हल नहीं किया जा सकता है। – BoltClock

उत्तर

33

कॉम्बिनेटर्स जैसे >, + और वंश के लिए स्थान को :not() सीएसएस में अनुमति नहीं है; उन्हें केवल एक jQuery चयनकर्ता के रूप में अनुमति दी जाती है। आप this other question में और अधिक जानकारी प्राप्त कर सकते हैं।

यह कहा गया है कि, आप पर :not() का उपयोग करने में सक्षम हो सकते हैं, और > a भाग को बाहर ले जा सकते हैं; हालांकि यह आपके ul और li तत्वों की संरचना पर निर्भर करेगा:,

li:not(.active) > a { 
    color: grey; 
} 

उदाहरण के लिए, आप हमेशा अन्य चयनकर्ताओं श्रृंखला कर सकते हैं इस तरह के रूप .span3 यदि आप उस वर्ग के li माता पिता के साथ a तत्वों के लिए यह सीमित करना चाहते हैं केवल :

li.span3:not(.active) > a { 
    color: grey; 
} 

ध्यान रखें, हालांकि, कि आप केवल आप मार्कअप पर नियंत्रण है या संरचना में कम से कम उम्मीद के मुताबिक है अगर इस तरह से :not() के प्रयोग पर भरोसा कर सकते हैं (उदाहरण के लिए आप जानते हैं कि तत्वों की किस तरह माता-पिता हैं)। उदाहरण के लिए, आपके मामले में, आप केवल li.span3 > a देख रहे हैं, और केवल शैलियों को लागू करते हैं जब li.span3 में सक्रिय कक्षा नहीं है। इस जानकारी के साथ आप उपर्युक्त में से एक की तरह चयनकर्ता बना सकते हैं, जो अपेक्षित कार्य करना चाहिए।

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

  • कोई संबंधित समस्या नहीं^_^