2012-04-15 8 views
5

क्या SASS या LESS का कोई विकल्प है जो मॉड्यूल और शेन वैश्विक दायरे जैसे कुछ लागू करता है?मॉड्यूल और सेन स्कोप के साथ सीएसएस प्रीप्रोसेसर?

उदाहरण के लिए

, जब मैं (कम बराबर या) एस.ए.एस.एस. में ऐसा करते हैं:

@import "foo.scss" 

... यह वैश्विक विस्तार करने के लिए सभी mixins, चर, आयात की गई फ़ाइल से आदि धक्का, संभवतः अधिभावी या लोड या परिभाषित mixins/चर के साथ टकराव। मुझे लगता है कि यह एक गड़बड़ है।

मुझे कुछ और मॉड्यूलर चाहिए। कल्पना कीजिए foo.scss एक mixin bar है:

@mixin bar { 
    // ... 
} 

इस mixin उपयोग करने के लिए मैं इसे "foo" नाम स्थान के लिए अपेक्षाकृत फोन चाहते हैं। अधिक या इस तरह:

@import "foo.scss" 

.bar { 
    @include foo.bar; 
} 

दूसरे शब्दों में: अजगर में from foo import * के बराबर के रूप में काम करने के बजाय, एक @import foo वास्तव में import foo की तरह काम करेगा।

तो। क्या कोई सीएसएस प्रीप्रोसेसर है जो इस तरह के नामस्थानों की परवाह करता है?

+2

मैं अगर यह नामस्थान का समर्थन करता है पता नहीं है, लेकिन, एक और जाहिरा तौर पर स्टाइलस http://learnboost.github.com/stylus/ को देखो महान सीएसएस प्रीप्रोसेसर (कभी इसका इस्तेमाल नहीं किया गया) कि आप आसानी से –

+1

बढ़ा सकते हैं आप अपनी कम फ़ाइल को मिक्स्लिन में लपेट सकते हैं (जैसे आप जावास्क्रिप्ट में नामस्थान करेंगे) उदा। । नामांकित() { // चर लीक नहीं करते !! } । नामांकित(); –

+0

@LukePage यह सुविधा साफ है, लेकिन आपके पास एक ही 'नामस्थान' के साथ दो फाइलें हो सकती हैं। वास्तविक मॉड्यूलरिटी के लिए, आयातित फ़ाइलों के सभी नाम वैश्विक दायरे में नहीं छोड़े जाना चाहिए। – moraes

उत्तर

3

कम से कम आप फ़ाइल में अपना नामस्थान परिभाषित कर सकते हैं जो दूसरे को आयात करता है।

foo.less:

.bar() { 
    // … 
} 

main.less:

.namespace { 
    @import "foo"; 
} 
// To use .bar-Mixin prefix namespace: 
body { 
    .namespace .bar(); 
    // .bar(); would throw an error 
} 

एस.ए.एस.एस./एससीएसएस के बारे में पता नहीं है।

3

मैं तुरंत क्रियान्वित mixins साथ सास में मेरी मॉड्यूल नाम स्थान:

@mixin MyAwesomeModule() { 

    $fontColor: red; 
    $bgColor: green; 

    .someDiv { 
     color: $fontColor; 
     background: $bgColor; 
    } 

} 
@include MyAwesomeModule();