當(dāng)Web項(xiàng)目變得越來(lái)越大時(shí),他的CSS會(huì)變得像天文數(shù)字那么大而且還變得混亂。為了幫助我們解決這個(gè)問(wèn)題,新的CSS變量很快就會(huì)出現(xiàn)在主流瀏覽器中,它讓開(kāi)發(fā)人員能夠重用并輕松編輯重復(fù)出現(xiàn)的CSS屬性。用過(guò)SASS或Less的人應(yīng)該知道他的變量功能有多棒,但這些變量是預(yù)處理器,需要在使用前進(jìn)行編譯。現(xiàn)在變量在vanilla CSS中可用,您可以立即在瀏覽器中使用它們!
定義和使用CSS變量
與任何其他CSS定義一樣,變量遵循相同的范圍和繼承規(guī)則。使用它們的最簡(jiǎn)單方法是通過(guò)將聲明添加到:root偽類(lèi)來(lái)使它們?nèi)挚捎茫员闼衅渌x擇器都可以繼承它。
:root { --awesome-blue:#2196F3;}
要訪問(wèn)變量中的值,我們可以使用var(…)語(yǔ)法。請(qǐng)注意,名稱(chēng)區(qū)分大小寫(xiě),因此–foo != –FOO。
.element {background-color:var(--awesome-blue);}
瀏覽器支持
常用的瀏覽器除了IE都完美支持,您可以在此處獲取更多詳細(xì)信息 –我可以使用CSS變量。下面是幾個(gè)例子,展示了CSS變量的典型用法。為確保它們正常工作,請(qǐng)嘗試在我們上面提到的其中一個(gè)瀏覽器上查看它們。
示例1 – 主題顏色
當(dāng)我們需要對(duì)多個(gè)元素一遍又一遍地應(yīng)用相同的規(guī)則時(shí),CSS中的變量是最有用的,例如主題中的重復(fù)顏色。我們不是每次想要重復(fù)使用相同顏色時(shí)進(jìn)行復(fù)制和粘貼,而是將其放在變量中并從那里訪問(wèn)它。
現(xiàn)在,如果我們的客戶(hù)不喜歡我們選擇的藍(lán)色陰影,我們可以在一個(gè)地方(變量的定義)改變樣式來(lái)改變整個(gè)主題的顏色。沒(méi)有變量,我們必須手動(dòng)搜索和替換每一次出現(xiàn)。
可將代碼復(fù)制下來(lái)在你的編輯器里面測(cè)試
* {margin: 0;padding: 0;box-sizing: border-box;}html {padding: 30px;font: normal 13px/1.5 sans-serif;color: #546567;background-color: var(--primary-color);}.container {background: #fff;padding: 20px;}h3 {padding-bottom: 10px;margin-bottom: 15px;}p {background-color: #fff;margin: 15px 0;}button {font-size: 13px;padding: 8px 12px;background-color: #fff;border-radius: 3px;box-shadow: none;text-transform: uppercase;font-weight: bold;cursor: pointer;opacity: 0.8;outline: 0;}button:hover {opacity: 1;}<!-- 分割線 -->:root {--primary-color: #B1D7DC;--accent-color: #FF3F90;}html {background-color: var(--primary-color);}h3 {border-bottom: 2px solid var(--primary-color);}button {color: var(--accent-color);border: 1px solid var(--accent-color);}
<div class="container"><h3>對(duì)話框窗口</h3><p>過(guò)放蕩不羈的生活,容易得像順?biāo)浦郏且Y(jié)識(shí)良朋益友,卻難如登天。</p><button>確認(rèn)</button></div>
示例地址
示例2 – 屬性類(lèi)名可讀性
變量的另一個(gè)重要用途是當(dāng)我們想要保存更復(fù)雜的屬性值時(shí),我們不必記住它。最好的例子就是有多個(gè)參數(shù),如CSS規(guī)則box-shadow,transform和font。
通過(guò)將屬性放在變量中,我們可以使用語(yǔ)義可讀的名稱(chēng)來(lái)訪問(wèn)它。
html{background-color: #F9F9F9;}ul{padding: 20px;list-style: none;width: 300px;}li{font: normal 18px sans-serif;padding: 20px;transition: 0.4s;margin: 10px;color: #444;background-color: #fff;cursor: pointer;}<!-- 分割線 -->:root{--tiny-shadow: 0 2px 1px 0 rgba(0, 0, 0, 0.2);--animate-right: translateX(20px);}li{box-shadow: var(--tiny-shadow);}li:hover{transform: var(--animate-right);}
<ul><li>我在這里!</li><li>我在這里!</li><li>我在這里!</li></ul>
示例地址
示例3 – 動(dòng)態(tài)更改變量
當(dāng)多次聲明自定義屬性時(shí),標(biāo)準(zhǔn)規(guī)則有助于解決沖突,樣式表中最后定義的會(huì)覆蓋上面定義的。
下面的示例演示了用戶(hù)動(dòng)態(tài)操作改變屬性是多么容易,同時(shí)仍然保持代碼清晰簡(jiǎn)潔。
*{margin: 0;padding: 0;box-sizing: border-box;}html{background: #eee;padding: 30px;font: 500 14px sans-serif;color: #333;line-height: 1.5;}.blue-container{background: #64B5F6;padding-left: 50px;}.green-container{background: #AED581;padding-left: 50px;}.container{background: #fff;padding: 20px;}p{transition: 0.4s;}.title{font-weight: bold;}<!-- 分割線 -->.blue-container{--title-text: 18px;--main-text: 14px;}.blue-container:hover{--title-text: 24px;--main-text: 16px;}.green-container:hover{--title-text: 30px;--main-text: 18px;}.title{font-size: var(--title-text);}.content{font-size: var(--main-text);}
<div class="blue-container"><div class="green-container"><div class="container"><p class="title">這是個(gè)標(biāo)題</p><p class="content">將鼠標(biāo)懸停在不同的顏色區(qū)域上可以更改此文本和標(biāo)題的大小。</p></div></div></div>
示例地址
正如您所看到的,CSS變量非常簡(jiǎn)單易用,開(kāi)發(fā)人員不必花費(fèi)太多時(shí)間在各處開(kāi)始應(yīng)用它們。以下是擴(kuò)展內(nèi)容:
var()函數(shù)有兩個(gè)參數(shù),如果自定義屬性失敗,它可用于提供回退值:
width: var(–custom-width, 20%);
可以嵌套自定義屬性:
變量可以與CSS的另一個(gè)新增功能- calc() 函數(shù)結(jié)合使用。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選