var()

2017-12-08 21 views
5

में गतिशील गुण नाम कैसे सेट करें मैं attr() जैसे गतिशील मानों के आधार पर कस्टम गुणों का उपयोग करने का प्रयास कर रहा हूं।var()

उदाहरण के लिए, नीचे दिए गए कोड में, मैंने वर्तमान तत्व के id विशेषता के आधार पर दोनों कस्टम-गुणों तक पहुंचने का प्रयास किया।

:root{ 
 
    --app-foo: 'Hello'; 
 
    --app-bar: 'World'; 
 
    } 
 
div::after{ 
 
/* expected : 
 
      'Hello' for #foo 
 
      'World' for #bar */ 
 
    content: var('--app-'attr(id)); 
 
    }
<div id="foo"></div> 
 
<div id="bar"></div>

लेकिन यह स्पष्ट रूप से विफल रहता है।

क्या यह हासिल करने का कोई तरीका है?

+0

जेएस सीएसएस नहीं बदल सकता है। आप स्टाइल बदल सकते हैं लेकिन सीएसएस – Rajesh

+0

@ राजेश * जेएस सीएसएस * नहीं बदल सकता है। क्या आपको यकीन है? यह क्या है? https://developer.mozilla.org/en-US/docs/Web/CSS/Reference#DOM-CSS_CSSOM – zer00ne

+0

काइडो मैं सीएसएस वैरिएबल के नाम को पूरा करने के लिए बटन आईडी विशेषता का उपयोग करना चाहता हूं ताकि उचित सीएसएस वैरिएबल को सम्मिलित किया जा सके बटन की सामग्री के बाद ::। – Tygari

उत्तर

4

grammarvar() अभिव्यक्ति के पहले तर्क को किसी भी कस्टम प्रॉपर्टी नाम पर हार्डकोड करने की अनुमति नहीं देता है। इसका अर्थ यह है कि आप किसी कस्टम नाम को var() सीएसएस का उपयोग करके अभिव्यक्ति में संदर्भित नहीं कर सकते हैं, क्योंकि यह एक संपत्ति नाम के लिए स्ट्रिंग (या एक attr() स्ट्रिंग लौटने वाली अभिव्यक्ति) स्वीकार नहीं करता है। आपको जेएस का उपयोग कर var() अभिव्यक्ति वाले मान को सेट करने की आवश्यकता होगी।

+0

दरअसल, मुझे यकीन नहीं है कि समस्या वास्तव में कस्टम प्रॉपर्टी का नामकरण करने के बारे में है 'var() 'अभिव्यक्तियों में स्ट्रिंग्स का उपयोग करने में असमर्थता की बजाय। – Kaiido

+0

@ काइडो: शायद मुझे यह जवाब हटा देना चाहिए और सवाल को अस्पष्ट के रूप में बंद करना चाहिए। बहुत सारे कोड हैं और शायद ही कभी कोई सादा अंग्रेजी स्पष्टीकरण है, इसलिए वास्तव में वे जो करने की कोशिश कर रहे हैं उसके सिर या पूंछ बनाना मुश्किल है। (लेकिन क्या होगा अगर पूछने वाले को सादे अंग्रेजी में अपने लक्ष्यों को व्यक्त करने में परेशानी हो?) – BoltClock

+0

नहीं, मुझे नहीं लगता कि आप जो चाहते हैं उसके करीब आ गए हैं (जो आईएमके असंभव है)। अंतिम स्निपेट को देखें :, उन्होंने '' ('var (' - 'attr (id))') '' की कोशिश की; 'जैसे कि यह' '(' var (- app-id) ')' ' लेकिन उनका संस्करण वास्तव में '' ('var (' - app-id ')' 'के बराबर होगा' 'जो अवैध है। – Kaiido

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