2012-02-11 14 views
11

परिचय:क्या मैं कम सीएसएस में यूआरएल पैरामीटर का उपयोग कर सकता हूं?

मैं एक asp.net MVC वातावरण में कम बाहर कोशिश कर रहा हूँ।

मैं सर्वर साइड प्रसंस्करण के लिए dotless का उपयोग करें (और मैं विशेष रूप से पूरा प्रोजेक्ट का प्रकाशन afer क्लाइंट साइड प्रसंस्करण का उपयोग नहीं करना चाहते)।

मैं एक डिजाइन जहां अलग अलग बातें आधार पर अलग अलग रंग योजनाओं (जैसे दिन का समय) देखते हैं आवेदन करना होगा।

कम एक पैरामिट्रीकृत सीएसएस डिजाइन और केवल फ़ाइल की शुरुआत में 10 चर की तरह बदलने के लिए हर विषय वास्तव में उत्थान था, जैसा कि इस मामले में बहुत शक्तिशाली महसूस किया।

समस्या:

लेकिन मैं किसी भी तरह एक बाहर पैरामीटर से रंग विषयों को बदलने के लिए की आवश्यकता होगी।

विचार:

सबसे पहले मैंने सोचा था कि जैसे style.less विषय = fuschia एक URL पैरामीटर अच्छा होगा, लेकिन मैं कुछ इस तरह पार्स करने के लिए कोई रास्ता नहीं मिला।

तब मैंने सोचा कि बहुत छोटा नीला, बिना, ग्रीन.लेस, नारंगी। जब तक केवल रंग परिवर्तनीय घोषित नहीं होते हैं, और उनमें से प्रत्येक में मुख्य .less सहित ठोस समाधान होगा।

मैं दूसरा समाधान आज़माने के लिए कोई मौका नहीं था, लेकिन मुझे लगा कि यह ऐसा करने का सबसे मजबूत रास्ते पर सलाह के लिए पूछने के लिए एक अच्छा समय होगा।

समस्या फिर से है: मैं बाहर से मेरी कम फ़ाइल में कुछ चीजें नियंत्रित करना चाहते हैं।

उत्तर

22

हाँ आप कर सकते हैं (क्योंकि मैं वास्तव में इस वजह से है कि सुविधा को लागू)।

Dotless क्वेरी स्ट्रिंग पैरामीटर के माध्यम से बाहर से मानकों का समर्थन करता है।

@foo = bar; 

पैरामीटर इंजेक्शन कोड बहुत सरल है:

<link rel="stylesheet" href="style.less?foo=bar" /> 

कम निम्नलिखित आप का उपयोग करने देगा। यह सिर्फ आपकी सामान्य कम फ़ाइल में परिवर्तनीय घोषणाओं को पूर्ववत करता है, इसलिए क्वेरीस्ट्रिंग पैरामीटर के रूप में आने वाली कुछ भी उपरोक्त वाक्यविन्यास का पालन करेगी।

प्रश्न में कोड बहुत सरल है: https://github.com/dotless/dotless/blob/master/src/dotless.Core/Engine/ParameterDecorator.cs

+1

यह वह उत्तर है जिसके लिए मैं उम्मीद कर रहा था! : डी – SoonDead

+0

@ टिग्रेन: यह कैसे बचा है? एक हमलावर आसानी से स्टाइलशीट में दुर्भावनापूर्ण कोड इंजेक्ट कर सकता है। – jor

+0

इसका उपयोग करना इतना सरल नहीं है। मुझे '@import "थीम-param-default.less"; "मेरी लाइन के ऊपर' @import "अंधेरे-चर -" {theme} .less ";" जिसमें '@theme: dark;' था मुद्दों को संकलित कर रहे थे। –

5

AFAIK, आप dotnetless के लिए मानकों पारित नहीं हो सकता संकलन करने के लिए उपयोग करने के लिए।

एक सुझाव के रूप में, क्यों न केवल अलग-अलग फाइलों को कॉल करें? व्यूबैग संपत्ति का उपयोग करके यह करना आसान होगा।

आप पहली बार उन्हें रंगों में से प्रत्येक सेट के साथ एक कम फ़ाइल बनाने के विभिन्न कम लोगों को बनाने के लिए,। फिर आप अपनी बेस सीएसएस फ़ाइल आयात करते हैं। dotnetless मूल फ़ाइल में आधार फ़ाइल में उपयोग के साथ रंग परिभाषा विलय करेगा।

@baseGray: #ddd; 
@baseGrayDark: darken(@baseGray, 15%); 
@baseGrayLight: lighten(@baseGray, 10%); 
@import "baseCss.less"; 

मैं सिर्फ इस पर और MVC3 परियोजना का परीक्षण किया और यह काम करता है - तो क्या आप की तरह कुछ है।

+0

धन्यवाद, यह भी कुछ मैं जरूरत है। ऐसे मामले हैं जब मैं खुशी से एक से अधिक जवाब स्वीकार करता हूं। यह वही है। – SoonDead

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

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