2017-03-06 11 views
5

सीएसएस वर्र्स की शुरूआत के साथ, मैं के तर्क को जानना चाहता हूं क्यों-- को var को इंगित करने के तरीके के रूप में चुना जाएगा।क्या सीएसएस के भीतर कोई तकनीकी सीमाएं थीं जिसके कारण वर्रों के लिए `--` का उपयोग करने का निर्णय लिया गया था?

को ध्यान में रखते सीएसएस एक अर्द्ध सक्षम calc समारोह मुझे लगता है कि -- आसानी से अन्य भाषाओं में एक घटती ऑपरेटर के लिए भ्रमित हो सकता है।

मुझे कोई उत्सुकता है कि कोई ऐतिहासिक महत्व या तकनीकी सीमा है जो -- चुनने का कारण बनती है। विशेष रूप से डबल मुझे परेशान करता है, जब सीएसएस मार्कर आम तौर पर एकल होते हैं (#,।, @, आदि)। इसके अलावा अन्य चीजों द्वारा पहले से इस्तेमाल किए जा रहे प्रतीक का भी उपयोग करना दिलचस्प है (विशेष रूप से जब यह वर्ग नाम के लिए मान्य है -- से शुरू होता है)।

उदाहरण:

@custom-media --lt-sm (width < 576px); 
--grey300: #e0e0e0; 

.navbarItem { 
    display: inline-block; 
    text-align: center; 
    border-top: 1px solid var(--grey300); 
    border-left: 1px solid var(--grey300); 

    @media (--lt-sm) { 
     flex-grow: 1; 
    } 

    &:last-child { 
     border-right: 1px solid var(--grey300); 
    } 
} 

अस्वीकरण

कुछ इस सवाल की वैधता तर्क कर सकता है, लेकिन क्यों को समझने के लिए एक विशेष अवधारणा को याद करने के लिए एक महत्वपूर्ण तकनीक है।

केवल चर्चा मैं यह करने के लिए संबंधित पा सकते हैं: - कस्टम गुण और अन्य कस्टम बातें इंगित करने के लिए उपसर्ग ""

TELCON में आज, हम एक का उपयोग का संकल्प लिया।

हमने चर्चा की कि क्या उपसर्ग को बनाए रखा गया है या एक var() फ़ंक्शन से कस्टम प्रॉपर्टी का जिक्र करते हुए गिरा दिया गया है, लेकिन वास्तव में हल नहीं किया गया था। उपसर्ग को छोड़ने की ओर झुकाव कॉल में चर्चा, जैसे कि मैं वर्तमान में var- * गुणों के साथ करता हूं, लेकिन कुछ पक्ष साइमन और सिल्वेन के साथ चर्चा ने पूर्ण नाम का उपयोग करने के लिए तर्क दिया, जैसे भ्रमित मामले "--0" हैं या "----"।

तो, जबकि मैं संभावित लेखकों संभवतः कि वर (सोच की वजह से भ्रम की स्थिति) को समझने के लिए एक तर्क के रूप में किसी भी संपत्ति नाम ले सकते हैं, मुझे लगता है कि यह क्या करने की जरूरत है विभिन्न परिस्थितियों में बच गए हो अधिक भ्रम की स्थिति से खारिज कर रहा है। नियमों से बचने के लिए हमेशा लेखकों को भ्रमित कर रहे हैं, इसलिए मैं "कस्टम प्रॉपर्टी नाम का उपयोग शाब्दिक रूप से var() तर्क" के रूप में करने जा रहा हूं।

संदर्भ:

http://lists.w3.org/Archives/Public/www-style/2014Mar/0467.html

https://www.w3.org/TR/css-variables/#defining-variables

+0

हां, लेकिन आपको सीएसएस और अन्य भाषाओं को मिश्रण नहीं करना चाहिए। निश्चित रूप से '-' कमीशन ऑपरेटर की तरह दिखता है, लेकिन फिर, अन्य भाषाओं की तुलना में एक एकल '-' शब्द को घटाव की तरह दिखता है। तो, सीएसएस बल्कि अद्वितीय है! वैसे भी, प्रश्न एक चरित्र के बजाय दो शून्य संकेतों का उपयोग क्यों करें; शायद वे डर गए थे कि वे एकल पात्रों से बाहर निकल रहे थे। अधिकांश लोग पहले से ही उपयोग में थे। –

+0

अनोखा इसे समझाने के लिए शुरू नहीं होता है! पूरी तरह से समझें कि आप क्या कह रहे हैं, मुझे लगता है कि अगर वे बाहर निकलने के बारे में सोच रहे थे तो केवल एक''' का उपयोग क्यों न करें? मैं समझता हूं कि कुछ कारण हो सकते हैं (या कोई भी नहीं) लेकिन अगर दिलचस्पी हो रही है तो उन्हें – Chris

उत्तर

4

विक्रेता उपसर्गों कि एक पानी का छींटा के रूप में अन्य उत्तर ने उल्लेख के साथ शुरू के साथ संघर्ष से बचने के शीर्ष पर, ध्यान रखें कि एक सीएसएस अध्यक्ष के लिए व्याकरण अक्षर, संख्या, डैश और अंडरस्कोर के अलावा और कुछ की अनुमति नहीं है में रखना (सीएसएस 2 के section 4.1.3 देखें)। किसी भी अन्य प्रतीक द्वारा एक कस्टम प्रॉपर्टी को इंगित किया जाना चाहिए, प्रत्येक मौजूदा सीएसएस कार्यान्वयन को कस्टम पार्स नामों के लिए जो भी प्रतीक इस्तेमाल किया जा रहा था, उसे समायोजित करने के लिए बस अपने पार्सर को अपडेट या फिर भी लिखना होगा।

telecon कि संदेश में संकेत है की minutes से

, आप देख सकते हैं कि विक्रेता उपसर्गों कि एक पानी का छींटा के साथ शुरू के साथ संघर्ष से बचने की परिकल्पना सच है। -- के उपयोग के लिए एक मामूली पार्सर परिवर्तन की आवश्यकता थी, क्योंकि idents normally cannot start with double dashes (जैसा कि क्लूम ने बताया)। मुझे यकीन है कि वास्तव में कैसे मौजूदा कार्यान्वयन पार्स (घ) घोषणाओं नहीं कर रहा हूँ, लेकिन यह मान लेना कि मेरी तर्क अभी भी रखती है सुरक्षित है: idents के बाद से एक पानी का छींटा के साथ शुरू कर सकते हैं, उपभोक्ता पहले पानी का छींटा तुरंत एक पार्स त्रुटि में परिणाम नहीं होगा, इसलिए एक पार्सर निर्धारित कर सकता है कि यह <property> या <custom-property-name> (या तब पर एक पार्स त्रुटि का सामना कर रहा है यदि यह कस्टम प्रोप का समर्थन नहीं करता है) यह तय करने से पहले कि यह आगे बढ़ना चाहिए या नहीं।

यह परिवर्तन भी सीएसएस-चर में दिखाई देता है विशिष्ट जानकारी, section 2 में (जो मैं भी here कवर):

एक कस्टम गुण किसी भी संपत्ति जिसका नाम दो डैश के साथ शुरू होता (यू है + 002 डी हाइफ़न-मिनस), जैसे --foo<custom-property-name> उत्पादन इस से मेल खाता है: इसे किसी भी वैध पहचानकर्ता के रूप में परिभाषित किया गया है जो दो डैश से शुरू होता है।

तो डैश उपयोग किया जाता है, क्योंकि वे केवल मामूली पार्सर परिवर्तन के साथ मौजूदा व्याकरण में फिट, और विक्रेता उपसर्गों के साथ टकरा को रोकने के लिए विशेष रूप से डबल (ध्यान दें कि डैश और अंडरस्कोर, विक्रेता उपसर्गों के लिए परस्पर विनिमय कर रहे तो एक भी अंडरस्कोर wouldn इसे या तो कटौती नहीं)।


तथ्य की बात के रूप में, मैं this very same reasoning किसी और के सवाल के जवाब में बस कुछ ही हफ्ते पहले दिया था, हालांकि उनके प्रश्न कस्टम प्रोप नाम के लिए चुना उपसर्ग के बारे में नहीं था।

+0

उत्कृष्ट में धन्यवाद मिली है, धन्यवाद @ बोल्टक्लॉक – Chris

+0

मैं इसे वापस नहीं कर सकता, लेकिन मैं अस्पष्टता से सुनवाई याद रखना कि "--prop" मौजूदा विक्रेता-उपसर्ग वाक्यविन्यास का पुन: उपयोग करता है, लेकिन "शून्य विक्रेता" के साथ। टैब एटकिन्स रिकॉर्ड पर चला गया है कि वह [सीधे 'इंटरैपोलेशन की तरह कुछ' के लिए '$' बचाएं] (http://www.xanthir.com/blog/b4KT0)। – Tigt

1

मुझे लगता है कि यह संभावित रूप से कैसे विक्रेताओं अपने स्वयं के उपसर्ग जिसमें हाइफन निरूपित किया जाता विशेषताओं को अनदेखा कर रहे हैं अगर वे कर रहे हैं के लिए किसी तरह से संबंधित था ब्राउज़र/पार्सर द्वारा समझा नहीं गया। मुझे लगता है। यह एक ऐसा तरीका भी है जो किसी अन्य सीएसएस फ़ंक्शन या ऑब्जेक्ट के साथ संघर्ष नहीं करेगा जो पहले से मौजूद है।

उदाहरण के लिए preprocessors जबकि एस.ए.एस.एस.$ प्रतीक का उपयोग करता है की तरह कम@ प्रतीक का उपयोग करें। इस पर Software Engineering SE पर चर्चा की गई थी जिसमें इसके साथ जाने का एक सुंदर सभ्य उत्तर है।

अनिवार्य रूप से, ऐसा लगता है कि यह किसी कुछ भी ऊपर संगतता कारणों के लिए किया गया था। कोई तर्क दे सकता है कि & प्रतीक और % प्रतीक जैसी अन्य चीजों की तुलना में एक चर है जो दर्शाता है।

यहाँ जो वेनिला सीएसएस, कम और एस.ए.एस.एस. आदि

0

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

एक नियम सेट के अंदर चर घोषित किया जा सकता है, एक हाइफ़न विक्रेता उपसर्गों के साथ भ्रम पैदा कर सकता है। और कक्षा चयनकर्ता में वर्ग का नाम वास्तव में कम से कम the CSS 2.1 spec में दो हाइफ़न से शुरू करने की अनुमति नहीं है।

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

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