2012-06-18 15 views
200

मैं अपने वर्तमान प्रोजेक्ट के लिए सैस (.scss) का उपयोग कर रहा हूं।सास। एससीएसएस: नेस्टिंग और एकाधिक कक्षाएं?

उदाहरण के बाद

:

एचटीएमएल

<div class="container desc"> 
    <div class="hello"> 
     Hello World 
    </div> 
</div> 

एससीएसएस

.container { 
    background:red; 
    color:white; 

    .hello { 
     padding-left:50px; 
    } 
} 

यह महान काम करता है।

क्या मैं नेस्टेड शैलियों का उपयोग करते समय कई कक्षाएं संभाल सकता हूं।

नमूने में ऊपर मैं इस बारे में बात कर रहा हूँ:

सीएसएस

.container.desc { 
    background:blue; 
} 

इस मामले में सभी div.container सामान्य रूप से red होगा, लेकिन div.container.desc नीला होगा।

मैं इसे सास के साथ container के अंदर कैसे घोंसला कर सकता हूं?

+0

आपको डबल क्लास चयनकर्ता का उपयोग करना चाहिए। यह समस्या सास में घोंसले विकल्प का एक आदर्श उदाहरण है। आप इसके बारे में सब कुछ यहां पढ़ सकते हैं https://kolosek.com/nesting-in-less-and-sass –

उत्तर

390

आप संकलन के बाद माता-पिता चयनकर्ता द्वारा parent selector reference&, यह बदल दिया जाएगा उपयोग कर सकते हैं:

अपने उदाहरण के लिए:

.container { 
    background:red; 
    &.desc{ 
     background:blue; 
    } 
} 

/* compiles to: */ 
.container { 
    background: red; 
} 
.container.desc { 
    background: blue; 
} 

& पूरी तरह से, हल होगा इसलिए यदि आपके माता-पिता चयनकर्ता नीडिंत है खुद, घोंसले को & को बदलने से पहले हल किया जाएगा।

.element{ 
    &:hover{ ... } 
    &:nth-child(1){ ... } 
} 

हालांकि, अगर आप & पर वास्तव में किसी भी स्थिति में आप * चाहते जगह कर सकते हैं, तो निम्न भी संभव है::

इस टिप्पणी को सबसे अधिक बार pseudo-elements and -classes लिखने के लिए प्रयोग किया जाता है

.container { 
    background:red; 
    #id &{ 
     background:blue; 
    } 
} 

/* compiles to: */ 
.container { 
    background: red; 
} 
#id .container { 
    background: blue; 
} 

हालांकि ध्यान रखें, कि यह किसी भी तरह से आपके घोंसले की संरचना को तोड़ देता है और इस प्रकार आपकी स्टाइलशीट में एक विशिष्ट नियम खोजने का प्रयास बढ़ा सकता है।

*: व्हाइटस्पेस से कोई अन्य पात्रों & के सामने की अनुमति है। तो आप selector + & - #id& का प्रत्यक्ष समन्वय नहीं कर सकते हैं।

+10

बस एक साइड नोट, छद्म-तत्वों और छद्म-वर्गों का उपयोग करते समय '&' का एक सामान्य उपयोग होता है। उदाहरण के लिए: '&: होवर'। – crush

+0

@ क्रश पूर्णता के लिए मैंने इसे अपने उत्तर में जोड़ा। टिप्पणी के लिये आपका धन्यवाद। – Christoph

+1

धन्यवाद। मैंने सोचा कि मैं बेवकूफ था क्योंकि मूलभूत मार्गदर्शिका में इसका उल्लेख नहीं है! बीटीडब्ल्यू डॉक्स ने यूआरएल को इस पर ले जाया है: http://sass-lang.com/documentation/file.SASS_REFERENCE.html#parent-selector – scipilot

2

यदि ऐसा है, तो मुझे लगता है कि आपको कक्षा का नाम या कक्षा नाम सम्मेलन बनाने का बेहतर तरीका उपयोग करने की आवश्यकता है। उदाहरण के लिए, जैसा कि आपने कहा था कि आप .container कक्षा को विशिष्ट उपयोग या उपस्थिति के अनुसार अलग-अलग रंग रखना चाहते हैं।

.container { 
    background: red; 

    &--desc { 
    background: blue; 
    } 

    // or you can do a more specific name 
    &--blue { 
    background: blue; 
    } 

    &--red { 
    background: red; 
    } 
} 

सीएसएस

.container { 
    background: red; 
} 

.container--desc { 
    background: blue; 
} 

.container--blue { 
    background: blue; 
} 

.container--red { 
    background: red; 
} 

ऊपर कोड वर्ग नामकरण सम्मेलनों में कार्यलय पद्धति पर आधारित है

एससीएसएस: आप ऐसा कर सकते हैं। आप इस लिंक को देख सकते हैं: BEM — Block Element Modifier Methodology

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