मैंने divs के लिए डिस्प्ले प्रॉपर्टी को in . पर सेट किया है लाइन-ब्लॉक । मैंने तब चार वर्ग बनाए:

  • नो-वर, जो डिस्प्ले को inherit पर सेट करता है
  • var, जो डिस्प्ले को inherit पर सेट वेरिएबल पर सेट करता है
  • var-none, जो डिस्प्ले को none पर वेरिएबल सेट पर सेट करता है
  • वर-डिफॉल्ट, जो डिस्प्ले को inherit पर सेट वेरिएबल और grid के डिफॉल्ट पर सेट करता है

प्रत्येक वर्ग द्वारा उपयोग की जाने वाली वास्तविक शैली सही प्रतीत नहीं होती है, हालांकि:

  • नो-वर वर्ग सही ढंग से प्रदर्शित करता है block
  • var वर्ग को वेरिएबल से inherit मान नहीं मिलता है और inline-block के रूप में प्रदर्शित होता है
  • var-none वर्ग सही ढंग से प्रदर्शन को none पर सेट करता है और छिपा हुआ है
  • वर-डिफॉल्ट क्लास को वेरिएबल से inherit मान नहीं मिलता है और डिस्प्ले को डिफॉल्ट पर सेट करता है

इनमें से प्रत्येक वर्ग के लिए मैंने रंग संपत्ति के लिए चर और डिफ़ॉल्ट जोड़े, जो सभी अपेक्षित रूप से काम करते हैं। क्या चरों को inherit और unset मानों को अनदेखा करना चाहिए?

:root {
  --display: inherit;
  --display-none: none;
  --color: red;
}
div  {
  display: inline-block;
  color: green;
}
.no-var {
  display: inherit;
  color: red;
}
.var {
  display: var(--display);
  color: var(--color);
}
.var-none {
  display: var(--display-none);
}
.var-default {
  display: var(--display, grid);
  color: var(--color, purple);
}
<div class="no-var">
  No variable
</div>
<div class="no-var">
  No variable
</div>
<div class="var">
  Variable
</div>
<div class="var">
  Variable
</div>
<div class="var-none">
  None
</div>
<div class="var-none">
  None
</div>
<div class="var-default">
  Default
</div>
<div class="var-default">
  Default
</div>
4
GammaGames 8 नवम्बर 2018, 21:19

1 उत्तर

सबसे बढ़िया उत्तर

ऐसी स्थिति में, inherit का उपयोग कस्टम प्रॉपर्टी के लिए एक मान के रूप में किया जाता है और var() का उपयोग करके inherit मान पर इसका मूल्यांकन नहीं किया जाएगा।

इस मुद्दे को समझने के लिए यहां एक बुनियादी उदाहरण दिया गया है:

.box {
  --c:inherit;
  color:var(--c,red);
}
<div>
  <div class="box">I am a text</div>
</div>
<div style="--c:blue">
  <div class="box">I am a text</div>
</div>

ध्यान दें कि दूसरे मामले में हमारे पास नीला रंग कैसे है क्योंकि कस्टम प्रॉपर्टी को यह मान शीर्ष div से विरासत में मिला है, फिर इसे उस मान पर निकाला जा रहा है। पहले मामले में, हम डिफ़ॉल्ट रंग का उपयोग करेंगे क्योंकि इनहेरिट करने के लिए कुछ भी नहीं है।

enter image description here

दूसरे शब्दों में, inherit को कस्टम प्रॉपर्टी के लिए माना जाएगा, न कि उस प्रॉपर्टी के लिए जहां आप var() का उपयोग करके कस्टम प्रॉपर्टी का मूल्यांकन करेंगे। आपको इनहेरिट करने के लिए के बराबर परिकलित मान वाली कोई कस्टम प्रॉपर्टी नहीं मिलेगी, लेकिन इनहेरिट किए गए मान के बराबर परिकलित मान के साथ।


विनिर्देश से:

कस्टम गुण साधारण गुण हैं, इसलिए उन्हें किसी भी तत्व पर घोषित किया जा सकता है, सामान्य विरासत और कैस्केड नियमों के साथ हल किया जाता है

4
Temani Afif 10 नवम्बर 2018, 13:25