摘要:但不能包含,,,,等字符,普通字符局限在只要是數(shù)字字母下劃線和短橫線這些組合,但是可以是中文,日文或者韓文。
前言
剛開(kāi)始的“css變量”,經(jīng)擴(kuò)展之后,稱為“css自定義屬性”
當(dāng)各種預(yù)處理器滿天飛的時(shí)候,css變量已經(jīng)開(kāi)始漸漸普及
在特定的應(yīng)用場(chǎng)景,css變量確實(shí)發(fā)揮了很大的作用
下面開(kāi)始學(xué)習(xí)css變量
CSS選擇器不能是數(shù)字開(kāi)頭,JS中的變量是不能直接數(shù)值的,但是,在CSS變量中,這些限制通通沒(méi)有。 但不能包含$,[,^,(,%等字符,普通字符局限在只要是“數(shù)字[0-9]”“字母[a-zA-Z]”“下劃線_”和“短橫線-”這些組合,但是可以是中文,日文或者韓文。
1. 聲明:大小寫敏感, --variable-name: variable-value;
:root{ --color: red; }
2. 使用:使用var(變量名)來(lái)使用一個(gè)變量
#div { color: var(color) }
3. 變量組合使用
使用變量的時(shí)候,通常不會(huì)多帶帶使用,可以組合使用
當(dāng)變量的值是字符串時(shí),可以直接拼接,如下
:root{ --screen-category: "category" //變量值是字符串 } body:after { content: "--screen-category: "var(--screen-category); // 直接拼接 }
當(dāng)變量的值是數(shù)值時(shí),必須使用calc()函數(shù)計(jì)算,就算還是簡(jiǎn)單的單位拼接
.foo { --gap: 20; /* 無(wú)效 */ margin-top: var(--gap)px; } .foo { --gap: 20; margin-top: calc(var(--gap) * 1px); }
4. 變量未定義和錯(cuò)誤定義
如果我們使用的變量沒(méi)有定義,則使用后面的值作為元素的屬性值, 如下所示
body里面訪問(wèn)不到.box定義的--1,因此使用#cd0000
.box { --1: #369; } body { background-color: var(--1, #cd0000); }
使用變量時(shí),若變量已定義,但是變量的值不正確,則使用缺省值,如:
body { --color: 20px; background-color: #369; background-color: var(--color, #cd0000); }
結(jié)果body的顏色是transparent,因?yàn)閎ackground-color的缺省值就是transparent
二、繼承和作用域1. 作用域
使用:root{}來(lái)定義全局css變量
想讓變量在局部可用,就定義在某個(gè)特定的選擇器下
還是下面這段代碼
:root{ color: red; //全局可用 } .box { --1: #369; //只在.box這個(gè)作用域可用 } body { background-color: var(--1, #cd0000); }
2. 繼承
.wrapper { --color: red; } .content1 { --color: yellow; }
content1的--color為yellow
content2的--color沒(méi)有定義,繼承了wrapper的--color為red
--color: yellow只在content1的作用域內(nèi)有效
:root { --color: red; }
//讀取 var root = getComputedStyle(document.documentElement); var color = root.getPropertyValue("--color").trim(); console.log(color); // "70px" //改變 document.documentElement.style.setProperty("--color", "yellow"); var color = root.getPropertyValue("--color").trim(); console.log(color); // "100px" //刪除 document.documentElement.style.removeProperty("--color"); var color = root.getPropertyValue("--color").trim(); console.log(color); // "70px"四、與預(yù)處理器(sass,less)比較
1. css變量:
動(dòng)態(tài)性,可以在運(yùn)行時(shí)更改 可以方便地從js讀寫 可繼承,可組合,有作用域
2. 預(yù)處理器:
預(yù)處理器的變量不是動(dòng)態(tài)的,在運(yùn)行時(shí)不可更改 預(yù)處理器的變量沒(méi)有作用域的說(shuō)法 不能與js交互五、兼容
基本上能兼容大部分主流瀏覽器,直接使用沒(méi)有太大問(wèn)題
如果想使用但又想兼容所有瀏覽器,就是用下面的方法檢測(cè)瀏覽器是否支持CSS自定義屬性的方法
/*css*/ @supports ( (--a: 0)) { /* supported */ } @supports ( not (--a: 0)) { /* not supported */ } // Js if (window.CSS && window.CSS.supports && window.CSS.supports("--a", 0)) { alert("CSS properties are supported"); } else { alert("CSS properties are NOT supported"); }六、常用場(chǎng)景
為風(fēng)格統(tǒng)一而使用顏色變量
一致的組件屬性(布局,定位等)
避免代碼冗余(響應(yīng)式布局,制動(dòng)動(dòng)畫)
這里是常用場(chǎng)景的demo:https://github.com/shinyshine...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/113674.html
摘要:變量的函數(shù)引用的自定義屬性被稱為變量。為此,可讀性和可維護(hù)性是自定義屬性最大的優(yōu)勢(shì)。自定義屬性作用域在中,變量有作用域一說(shuō)。因此,在選擇器中聲明的自定義屬性,其作用域的范圍是全局范圍,也就是全局作用域。 引言 ??CSS語(yǔ)言是一種聲明式語(yǔ)言,不像其他語(yǔ)言有變量、條件和邏輯等特性,因?yàn)檫@個(gè)原因,社區(qū)中有了各種CSS處理器語(yǔ)言,比如Sass、LESS和Stylus等。這些處理器語(yǔ)言引入了一...
摘要:預(yù)處理器可以讓你設(shè)置變量,并且在函數(shù)循環(huán)和數(shù)學(xué)操作等中使用。不同之處在于變量是運(yùn)行在瀏覽器中的動(dòng)態(tài)屬性,而預(yù)處理器變量會(huì)被編譯成普通的代碼。變量提供了更多可能性但這并不是說(shuō)你需要在二者之間選擇其一你可以同時(shí)使用變量和預(yù)處理器變量的強(qiáng)大功能。 CSS預(yù)處理器,如Sass和Less,使得CSS代碼易于組織和維護(hù)。通過(guò)提供變量、混合、循環(huán)等特性,使得CSS具有動(dòng)態(tài)編寫的能力,從而減少重復(fù)性工...
摘要:預(yù)處理器可以讓你設(shè)置變量,并且在函數(shù)循環(huán)和數(shù)學(xué)操作等中使用。不同之處在于變量是運(yùn)行在瀏覽器中的動(dòng)態(tài)屬性,而預(yù)處理器變量會(huì)被編譯成普通的代碼。變量提供了更多可能性但這并不是說(shuō)你需要在二者之間選擇其一你可以同時(shí)使用變量和預(yù)處理器變量的強(qiáng)大功能。 CSS預(yù)處理器,如Sass和Less,使得CSS代碼易于組織和維護(hù)。通過(guò)提供變量、混合、循環(huán)等特性,使得CSS具有動(dòng)態(tài)編寫的能力,從而減少重復(fù)性工...
摘要:和這樣的預(yù)處理器,讓我們的代碼保持良好的結(jié)構(gòu)和可維護(hù)性。這是否意味著變量已經(jīng)無(wú)關(guān)緊要了呢那可未必,主要是因?yàn)?,變量與預(yù)處理器中的變量其實(shí)是不同的東西。而你是無(wú)法對(duì)預(yù)處理器中的變量做上面這些操作的。 本文翻譯自:https://www.sitepoint.com/practical-guide-css-variables-custom-properties/ 轉(zhuǎn)載請(qǐng)注明出處:葡萄城官網(wǎng),葡萄城...
摘要:變量,或者用它的官方稱謂,叫作自定義屬性,已經(jīng)可用,并且有非常棒的瀏覽器支持,而也正在取得進(jìn)展。這是否意味著變量已經(jīng)無(wú)關(guān)緊要了呢那可未必,主要是因?yàn)?,變量與預(yù)處理器中的變量其實(shí)是不同的東西。 轉(zhuǎn)載請(qǐng)注明出處:葡萄城官網(wǎng),葡萄城為開(kāi)發(fā)者提供專業(yè)的開(kāi)發(fā)工具、解決方案和服務(wù),賦能開(kāi)發(fā)者。 Sass和Less這樣的預(yù)處理器,讓我們的CSS代碼保持良好的結(jié)構(gòu)和可維護(hù)性。像變量、混合(mixin...
閱讀 2675·2019-08-30 15:53
閱讀 2885·2019-08-29 16:20
閱讀 1092·2019-08-29 15:10
閱讀 1032·2019-08-26 10:58
閱讀 2201·2019-08-26 10:49
閱讀 641·2019-08-26 10:21
閱讀 713·2019-08-23 18:30
閱讀 1642·2019-08-23 15:58