tutorial - what is css in english




सीएसएस में दोहराया स्थिरांक से बचें (8)

आप अपने html तत्वों (जैसे <div class="one two"> ) में एकाधिक विरासत का उपयोग कर सकते हैं, लेकिन मुझे सीएसएस फ़ाइलों में स्थिर होने की एक तरह से जानकारी नहीं है।

इस लिंक (पहले पाया गया था कि आपके प्रश्न का गोगल करने के लिए) इस मुद्दे पर काफी अभिशाप है:

http://icant.co.uk/articles/cssconstants/

क्या सीएसएस फ़ाइल में स्थिरांक की पुनरावृत्ति को कम करने के लिए कोई उपयोगी तकनीक है?

(उदाहरण के लिए, विभिन्न चयनकर्ताओं का एक गुच्छा जो एक ही रंग, या एक ही फ़ॉन्ट आकार लागू करना चाहिए)?


तत्व एक से अधिक वर्ग के हो सकते हैं, इसलिए आप ऐसा कुछ कर सकते हैं:

.DefaultBackColor
{
    background-color: #123456;
}
.SomeOtherStyle
{
    //other stuff here
}
.DefaultForeColor
{
    color:#654321;
}

और फिर कहीं सामग्री भाग में:

<div class="DefaultBackColor SomeOtherStyle DefaultForeColor">Your content</div>

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

लेकिन, हाँ, मेरी सबसे बड़ी सीएसएस के साथ शिकायत अपने खुद के स्थिरांक को परिभाषित करने में असमर्थता है।


सीएसएस चर , अगर यह कभी भी सभी प्रमुख ब्राउज़रों में लागू हो जाता है, तो एक दिन यह समस्या हल कर सकता है।

तब तक, आपको या तो कॉपी और पेस्ट करना होगा, या किसी भी प्रकार के पूर्वप्रोसेसर का उपयोग करना होगा, जैसे कि दूसरों ने सुझाव दिया है (आमतौर पर सर्वर-साइड स्क्रिप्टिंग का उपयोग करना)।


आप कम तरह गतिशील सीएसएस चौखटे का उपयोग कर सकते हैं


उदाहरण के लिए आपको प्रत्येक आईडी या कक्षा को अलग करना चाहिए:

h1,h2 {
  color: #fff;
}

जहाँ तक मुझे पता है, प्रोग्रामेटिक रूप से सीएसएस फ़ाइल बनाने के बिना, एक और केवल एक स्थान पर अपने पसंदीदा छाया की नीले रंग (# E0EAF1) को परिभाषित करने का कोई तरीका नहीं है, कहते हैं

आप फ़ाइल को जनरेट करने के लिए एक कंप्यूटर प्रोग्राम लिख सकते हैं। एक सरल खोज और बदलें ऑपरेशन निष्पादित करें और फिर एक .css फ़ाइल के रूप में सहेजें।

इस source.css से जाएं ...

h1,h2 {
  color: %%YOURFAVORITECOLOR%%;
}

div.something {
  border-color: %%YOURFAVORITECOLOR%%;
}

इस target.css पर ...

h1,h2 {
  color: #E0EAF1;
}

div.something {
  border-color: #E0EAF1;
}

इस तरह से कोड के साथ ... (VB.NET)

Dim CssText As String = System.IO.File.ReadAllText("C:\source.css")
CssText = CssText.Replace("%%YOURFAVORITECOLOR%%", "#E0EAF1")
System.IO.File.WriteAllText("C:\target.css", CssText)

हाल ही में, चर को आधिकारिक सीएसएस चश्मे में जोड़ा गया है

वेरिएबल्स आपको ऐसा कुछ करने की अनुमति देते हैं:

body, html {
    margin: 0;
    height: 100%;
}

.theme-default {
    --page-background-color: #cec;
    --page-color: #333;
    --button-border-width: 1px;
    --button-border-color: #333;
    --button-background-color: #f55;
    --button-color: #fff;
    --gutter-width: 1em;
    float: left;
    height: 100%;
    width: 100%;
    background-color: var(--page-background-color);
    color: var(--page-color);
}

button {
    background-color: var(--button-background-color);
    color: var(--button-color);
    border-color: var(--button-border-color);
    border-width: var(--button-border-width);
}

.pad-box {
    padding: var(--gutter-width);
}
<div class="theme-default">
    <div class="pad-box">
        <p>
            This is a test
        </p>
        <button>
           Themed button
        </button>
    </div>
</div>

दुर्भाग्य से, ब्राउज़र समर्थन अभी भी बहुत खराब है। कैन्यूस के अनुसार , आज ही इस सुविधा का समर्थन करने वाले एकमात्र ब्राउज़र (मार्च 9, 2016) फ़ायरफ़ॉक्स 43+, क्रोम 49+, सफारी 9.1+ और आईओएस सफारी 9.3+ हैं:

विकल्प:

जब तक सीएसएस चर व्यापक रूप से समर्थित नहीं हैं, तो आप कम या सास जैसी सीएसएस प्री प्रोसेसर भाषा का उपयोग कर सकते हैं।

सीएसएस पूर्व-प्रोसेसर आपको केवल वेरिएबल्स का उपयोग करने की अनुमति नहीं देंगे, लेकिन आप प्रोग्रामिंग भाषा के साथ कुछ भी करने के लिए बहुत ज्यादा अनुमति दे सकते हैं।

उदाहरण के लिए, सास में, आप इस तरह एक फ़ंक्शन बना सकते हैं:

@function exponent($base, $exponent) {
    $value: $base;
    @if $exponent > 1 {
        @for $i from 2 through $exponent {
            $value: $value * $base;
        }
    }
    @if $exponent < 1 {
        @for $i from 0 through -$exponent {
            $value: $value / $base;
        }
    }
    @return $value; 
}

    :root {
      --primary-color: red;
    }

    p {
      color: var(--primary-color);
    } 

<p> some red text </p>

आप जेएस द्वारा रंग बदल सकते हैं

var styles = getComputedStyle(document.documentElement);
var value = String(styles.getPropertyValue('--primary-color')).trim(); 


document.documentElement.style.setProperty('--primary-color', 'blue');






css