2012-12-20 9 views
7

मैं निम्नलिखित निर्माण के साथ एक .less स्टाइलशीट मिल गया है:.लेस परिवर्तनीय इंटरपोलेशन के लिए सही वाक्यविन्यास क्या है?

@width:600; 

.some-style 
{ 
    width:@{width}px; 
} 

और इस निम्न त्रुटि देता है: क्योंकि मैं से चर भेद करने के लिए की जरूरत है

Expected '}' on line x in file '..\styles.less' 

मैं उन ब्रेसिज़ की जरूरत है, निम्नलिखित px प्रत्यय (@widthpx काम नहीं करता है क्योंकि तब यह widthpx नामक एक चर के लिए दिखता है)। और मैं एक जगह का उपयोग नहीं कर सकता क्योंकि 600 px मान्य सीएसएस नहीं है। घुंघराले ब्रेसिज़ के बजाय कोष्ठक का उपयोग करना या तो काम नहीं करता है।

मैं यहाँ क्या गलत कर रहा हूं?

अद्यतन: मैं पैकेज प्रबंधक से .less का नवीनतम संस्करण स्थापित है, और अब यह एक छोटे बेहतर काम करता है, लेकिन एक मिथ्या दोष के साथ:

width:@(width)px; <--note the parentheses 

अब संकलित है, लेकिन इस सीएसएस का उत्सर्जन करता है:

600 px <--note the space, which is invalid CSS, thus useless. 

हल: Scotts मुझे समाधान की ओर इशारा किया। अपने दो तरीकों से जोड़ने में, ऐसा लगता है कि कंपाइलर स्ट्रिंग पर गणित कर सकता है। तो यह काम करता है:

@width:600px; 

.some-style 
{ 
    width:@width/2; <--correctly emits "300px" 
} 

उत्तर

11

तो अगर मैं सही ढंग से समझ, आप width एक मूल्य, लेकिन किसी भी इकाइयों के बिना देते हैं, और कॉल के समय इकाइयों प्रदान करना चाहते हैं। मुझे यकीन है कि क्यों आप ऐसा करना चाहते हैं नहीं कर रहा हूँ, लेकिन वहाँ दो तरीके हैं जिनके काम करेगा कर रहे हैं:

एक: width एक स्ट्रिंग बनाने के लिए और फिर एक स्ट्रिंग प्रक्षेप कार्य करें:

@width: '600'; 

.some-style 
{ 
    width: ~'@{width}px'; 
} 

दो: 1px से गुणा:

@width: 600; 

.some-style 
{ 
    width: @width * 1px; 
} 

मैंने उपर्युक्त उत्तरों को "यूनिटलेस" संख्याओं के मामले में और बाद में इकाई को जोड़ने के तरीके को छोड़ दिया है (जैसा कि प्रश्न पहले दिखाई दिया था)। हालांकि, आपकी टिप्पणी के आधार पर मुझे समझाएं कि क्यों @width: 600px काम करता है। कम नहीं है कि स्ट्रिंग के रूप में (जैसा कि आप उल्लेख करते हैं कि आप इसे देखते हैं)। इसके बजाय, यह इसे इकाइयों के साथ एक संख्या के रूप में देखता है। कम 600px वर्णों की स्ट्रिंग नहीं है (जब तक यह उद्धरण में लपेटा नहीं जाता है), लेकिन pixels की इकाइयों में 600 संख्या। यही कारण है कि आप इसके बारे में चिंता किए बिना, इसे ठीक से संचालन कर सकते हैं। ऐसा कर सकता है कि क्या वे इकाइयां em या % या किसी अन्य वैध सीएसएस इकाई हैं।

+0

कारण यह है कि मैं इकाइयों के साथ गणित कर सकता हूं। उदाहरण के लिए, मैं चौड़ाई करना चाहता हूं: @ {चौड़ाई/2} पीएक्स। लेकिन मैंने अभी जांच की है और ऐसा लगता है कि संकलक वास्तव में इसे समझता है। अगर मैं अपनी मूल परिभाषा को @ विड्थ: 600 पीएक्स में बदलता हूं, और फिर शैली को चौड़ाई के लिए सेट करता हूं: @ विड्थ/2, कंपाइलर 300px को सही ढंग से उत्सर्जित करता है। मेरे लिए यह प्रतिद्वंद्वी है कि गणित संख्या 600 की बजाय स्ट्रिंग 600px पर किया जाता है, लेकिन यह मेरी समस्या हल करता है। क्या आप इस समाधान के साथ अपना उत्तर अपडेट कर सकते हैं (या एक नया जोड़ सकते हैं), और मैं इसे स्वीकार करूंगा?उपर्युक्त समाधान वास्तव में समस्या को हल नहीं करता है। –

+0

@ जोशुआ फ्रैंक: शायद आपने टिप्पणी पोस्ट करने से पहले मैंने आपको भी हराया था। मैंने जाहिर तौर पर इकाइयों को 'चौड़ाई' पर नहीं डालने के आपके कारण को गलत समझा। मैं यह समझने में मदद के लिए उत्तर अपडेट करूंगा कि यह _not_ "काउंटर-अंतर्ज्ञानी" क्यों है जैसा आप मानते हैं। – ScottS

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