कम

2013-04-16 8 views
11

के साथ स्ट्रिंग के अंदर एकाधिक फ़ंक्शन मैंने कुछ समय पहले similar question से पूछा, और एक अच्छा जवाब प्राप्त हुआ। दुर्भाग्यवश, इस दौर के उत्तर में पर्याप्त नहीं है, और सवाल थोड़ा अधिक जटिल है।कम

मैं इस समय एक थीम बनाने के लिए LESSHat मिश्रणों के साथ LESS का उपयोग कर रहा हूं। मैंने चर के रूप में कई रंगों को परिभाषित किया है, और वर्तमान में LESSHat के .gradient() मिश्रण का उपयोग करके ढाल को परिभाषित करने का प्रयास कर रहा हूं। समस्या यह है कि mixin एक भी तर्क के रूप में एक स्ट्रिंग के बजाय प्रत्येक ढाल पैरामीटर के लिए तर्क की एक श्रृंखला, उदाहरण के लिए स्वीकार करता है:

#element { 
    .gradient(~"linear-gradient(90deg, #1e5799 0%,#2989d8 50%,#207cca 51%,#7db9e8 100%)"); 
} 

सभी अच्छी तरह से और इसके बाद के संस्करण के साथ अच्छा है, और मैं अपने चर का उपयोग कर सकते हैं स्ट्रिंग इंटरपोलेशन (यानी @{color-var}) का उपयोग कर स्ट्रिंग के अंदर। हालांकि, मैं भी कुछ काम करता है, कुछ इस तरह चर पर चलने के लिए करना चाहते हैं:

.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, darken(@green, 10%) 50%, darken(@green, 10%) 100%)"); 

समस्या यह है कि darken(@green, 10%) संकलित नहीं किया जाता है, और कुछ ब्राउज़रों बस green के रूप में इस रंग की व्याख्या। क्या किसी को उपरोक्त स्ट्रिंग के अंदर darken() फ़ंक्शन की वापसी को शामिल करने का सही तरीका पता है, इसके लिए एक अलग चर बनाने के बिना?

.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, "darken(@green, 10%)" 50%, "darken(@green, 10%)" 100%)"); 
.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, {darken(@{green}, 10%)} 50%, {darken(@{green}, 10%)} 100%)"); 
+0

मेरा मानना ​​है कि "सही का' काला कर वापसी शामिल करने के लिए जिस तरह से) ' स्ट्रिंग के अंदर फ़ंक्शन "_not to_ नहीं है (यानी, मुझे विश्वास नहीं है कि कम फ़ंक्शन _currently_ को स्ट्रिंग और काम में शामिल किया जा सकता है; कोई" फ़ंक्शन इंटरपोलेशन "नहीं है)। – ScottS

उत्तर

11

यह काम करना चाहिए, यह आपकी पहली दृष्टिकोण की तरह है, लेकिन आप भी ~ शामिल करना चाहिए: (

.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, " darken(@green, 10%) ~" 50%, " darken(@green, 10%) ~" 100%)"); 
+0

हम्म, यह काम नहीं लग रहा है। उदाहरण के लिए: '.gradient (~" रैखिक-ढाल (शीर्ष, @ {हरा} 0%, "अंधेरा (@ग्रीन, 10%) ~" 100%) ");' रैखिक-ढाल (शीर्ष, # 77cc33 0%, # 5fa329, 100%); 'गलत कॉमा को नोटिस करें ... – BenM

+0

@ बेनएम: बस एक एफवाईआई, यह LESSHat mixin के साथ एक मुद्दा होना चाहिए (यह स्ट्रिंग मान के साथ कुछ करता है), जैसा कि एक स्ट्रिंग बनाने के परिप्रेक्ष्य से पूरी तरह से, अतिरिक्त कॉमा दिखाई नहीं देते हैं। मुझे लगता है कि यह आवश्यक रूप से सही तरीका है जो आप चाहते हैं (भले ही यह तकनीकी रूप से स्ट्रिंग में फ़ंक्शन का उपयोग नहीं कर रहा हो)। – ScottS

+2

@ScottS आपकी टिप्पणियों के लिए धन्यवाद। मैंने समस्या की जांच की और ऐसा लगता है कि आप काफी सही हैं। समस्या लिपिस द्वारा प्रदान किए गए समाधान के बजाय, LESSHAT से मिश्रण के साथ है। – BenM

3

है आप पहली बार एक चर में अन्धेरा रंग की बचत की कोशिश की:

संदर्भ के लिए, मैं कोई लाभ नहीं हुआ निम्नलिखित की कोशिश की? इस तरह:

@darkened-green: darken(@green, 10%); 
.gradient(~"linear-gradient(top, @{green} 0%, @{green} 50%, @{darkened-green} 50%, @{darkened-green} 100%)"); 
+0

हां, यह निश्चित रूप से काम करता है। कृपया प्रश्न में मेरा अलग नोट देखें, हालांकि: * क्या कोई ऊपर स्ट्रिंग के अंदर अंधेरे() फ़ंक्शन की वापसी को शामिल करने का सही तरीका जानता है, ** इसके लिए एक अलग चर बनाने के बिना ** * – BenM