摘要:七與預(yù)處理器的不同七與預(yù)處理器的不同預(yù)處理器變量不是實(shí)時(shí)的編譯結(jié)果預(yù)處理器不能限定作用域編譯為預(yù)處理器變量不可互操作原生的自定義屬性可以與任何預(yù)處理器或純文件一起使用。
示例地址:https://github.com/ccyinghua/Css-Variables
變量聲明使用兩根連詞線"--"表示變量,"$color"是屬于Sass的語(yǔ)法,"@color"是屬于Less的語(yǔ)法,為避免沖突css原生變量使用"--"
// 聲明變量 --color:#000; // 讀取變量 var(--color)
注:
1、變量聲明不能包含$,[,^,(,%等字符,普通字符局限在只要是“數(shù)字[0-9]”“字母[a-zA-Z]”“下劃線_”和“短橫線-”這些組合,但是可以是中文,日文或者韓文
2、變量的值可以是顏色、字符串、多個(gè)值的組合等
示例:
<h3>css variables基礎(chǔ)使用h3> <div class="btn_box"> <button type="button" class="login_btn">登錄button> div>
/* css variables基礎(chǔ)使用 */ :root{ --content1:"abc"; --content2:"efg"; --width:calc(100px + 200px); --btn-bg:#279cff; --字體:18px; } .btn_box:before{ content:var(--content1) with add; display:block; line-height: 50px; } .btn_box:after{ content:var(--content1),var(--content2); display:block; line-height: 50px; } .login_btn{ width:var(--width); height:50px; border-radius:30px; border:0; background: var(--btn-bg); box-shadow: 0 5px 5px rgba(39,156,255,.42); text-align: center; font-size:var(--字體); line-height: 50px; color:#fff; cursor:pointer; outline:none; }
1、變量是遵循CSS語(yǔ)法的優(yōu)先級(jí)高低的 Id > class > 標(biāo)簽 > *
2、注意并無!important這種用法;
3、如果變量所在的選擇器和使用變量的元素沒有交集,是沒有效果的。
<div>藍(lán)色div> <div class="divbox">綠色div> <div class="divbox" id="alert">紅色div>
:root { --color: blue; } .divbox { --color: green; } #alert { --color: red; } div{ color: var(--color); width:300px; line-height: 50px; text-align: center; }
div { --color: #7F583F; --bg: #F7EFD2; } .mediabox { color: var(--color); background: var(--bg); } @media screen and (min-width: 768px) { body { --color: #F7EFD2; --bg: #7F583F; } }
1、屬性名(例:width/height/margin....等)不可以走變量
.divbox { --side: margin-top; /* 無效 */ var(--side): 20px; }
2、var()的完整的寫法是"var(<自定義屬性名> [, <默認(rèn)值 ]?)",在變量的名字后面可以有一個(gè)默認(rèn)值,如果引用的變量沒有定義(注意,僅限于沒有定義),則使用后面的值作為元素的屬性值
body { background:var(--bg,skyblue); }
3、如果變量值是不合法的,例如下面設(shè)置背景色background只能是色值而不能是像素,則使用背景色屬性的默認(rèn)值代替。
body { --bg: 20px; background-color: #369; background-color: var(--bg, #cd0000); }
等同于
body { --bg: 20px; background-color: #369; background-color: transparent; }
4、CSS變量設(shè)置數(shù)值
(1)
h3 { --size: 30; font-size: var(--size)px; }
結(jié)果h3元素的字體大小就是本身的默認(rèn)大小
(2)
h3 { --size: 30px; font-size: var(--size); } 等于 h3 { font-size:30px; }
(3)使用CSS3 calc()計(jì)算:
h3 { --size: 30; font-size: calc(var(--size) * 1px); } 等于 h3 { font-size:30px; }
5、如果變量值帶有單位,就不能寫成字符串。
/* 無效 */ .divbox { --size: 30px; font-size: var(--size); } /* 有效 */ .divbox { --size: 30px; font-size: var(--size); }
6、進(jìn)行calc()運(yùn)算時(shí),最好能提供默認(rèn)值: calc(var(--base-line-height, 0) * 1rem)
7、不能作為媒體查詢值使用:
@media screen and (min-width: var(--desktop-breakpoint) {})
8、圖片地址,如url(var(--image-url)) ,不會(huì)生效
檢測(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); }
CSS 變量可以和 JS 互相交互
:root{ --testMargin:75px; }
// 讀取 var root = getComputedStyle(document.documentElement); var cssVariable1 = root.getPropertyValue(--testMargin).trim(); console.log(cssVariable1); // 75px // 寫入 document.documentElement.style.setProperty(--testMargin, 100px); var cssVariable2 = root.getPropertyValue(--testMargin).trim(); console.log(cssVariable2); // 100px // 刪除 document.documentElement.style.removeProperty(--testMargin); var cssVariable3 = root.getPropertyValue(--testMargin).trim(); console.log(cssVariable3); // 75px
javascript可以把任意值存入css變量,可以讀取變量的值,實(shí)現(xiàn)javascript與css的通信。
1、預(yù)處理器變量不是實(shí)時(shí)的
$color:#7F583F; @media screen and (min-width: 768px) { $color: #F7EFD2; } .mediabox { background: $color; }
編譯結(jié)果
.mediabox { background: #7F583F; }
2、預(yù)處理器不能限定作用域
$zcolor:blue; .ulbox { $zcolor:red; } ul{ color: $zcolor; }
編譯為
ul { color: blue; }
3、預(yù)處理器變量不可互操作
原生的CSS自定義屬性可以與任何CSS預(yù)處理器或純CSS文件一起使用。
4、總結(jié)
https://caniuse.com/#search=css%20var
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/2189.html
摘要:注本文首發(fā)于個(gè)人博客學(xué)習(xí)筆記。最近看了下變量,又名自定義屬性,跟大家分享一下我的學(xué)習(xí)筆記。使用自定義屬性來設(shè)置變量名,并使用特定的來訪問。二學(xué)習(xí)筆記聲明調(diào)用聲明方式變量聲明的方式非常簡(jiǎn)單,如下,聲明了一個(gè)名叫的變量。 注:本文首發(fā)于個(gè)人博客 《CSS Variables學(xué)習(xí)筆記》。 最近看了下CSS Variables(CSS變量,又名CSS自定義屬性),跟大家分享一下我的學(xué)習(xí)筆記。 ...
摘要:例如變量同樣是可嵌套使用的,用來定義全局變量瀏覽器兼容性我在寫這篇文章的時(shí)候,這個(gè)特性依然處于實(shí)驗(yàn)階段,所以,目前來說,只有以及支持了這個(gè)特性。變量也是可用嵌套的變量還可以更另一個(gè)特性方法一起使用本文來自我的博客 showImg(http://7xiyp1.com1.z0.glb.clouddn.com/3310efbad24e13eb3c16748b8bc49644.png); 如果...
摘要:環(huán)境和及其等先安裝,下已配置如何之間共享變量文件目錄文件夾下代碼核心代碼文件定義變量,然后使用。文件有一個(gè)關(guān)鍵字,它在功能上等同于的關(guān)鍵字,即導(dǎo)出一個(gè)對(duì)象。 原博文地址,此博文首次發(fā)于csdn,原創(chuàng) 前段時(shí)間遇到網(wǎng)站換膚的需求,本想挺簡(jiǎn)單的,直接用 Sass 或者 Less 設(shè)置變量就好了,結(jié)果導(dǎo)致的問題就是 js 中設(shè)置的樣式 得單獨(dú)設(shè)置,好麻煩。 本文章代碼gitHub地址 ...
摘要:環(huán)境和及其等先安裝,下已配置如何之間共享變量文件目錄文件夾下代碼核心代碼文件定義變量,然后使用。文件有一個(gè)關(guān)鍵字,它在功能上等同于的關(guān)鍵字,即導(dǎo)出一個(gè)對(duì)象。 原博文地址,此博文首次發(fā)于csdn,原創(chuàng) 前段時(shí)間遇到網(wǎng)站換膚的需求,本想挺簡(jiǎn)單的,直接用 Sass 或者 Less 設(shè)置變量就好了,結(jié)果導(dǎo)致的問題就是 js 中設(shè)置的樣式 得單獨(dú)設(shè)置,好麻煩。 本文章代碼gitHub地址 ...
摘要:原子性的默認(rèn)變量一般是用來設(shè)置默認(rèn)值,然后根據(jù)需求來覆蓋的。語(yǔ)義化的變量名,值為直接的屬性值。組件文件互不引用。組合有幾個(gè)入口文件對(duì)組件進(jìn)行按順序的引入,形成不同的專用,形成完整可用的樣式,注意引用順序。 原子性 sass的默認(rèn)變量一般是用來設(shè)置默認(rèn)值,然后根據(jù)需求來覆蓋的。覆蓋的方式也很簡(jiǎn)單,只需要在默認(rèn)變量之前重新聲明下變量即可 存放變量的文件。語(yǔ)義化的變量名,值為直接的屬性值。 ...
閱讀 713·2023-04-25 19:43
閱讀 3910·2021-11-30 14:52
閱讀 3784·2021-11-30 14:52
閱讀 3852·2021-11-29 11:00
閱讀 3783·2021-11-29 11:00
閱讀 3869·2021-11-29 11:00
閱讀 3557·2021-11-29 11:00
閱讀 6105·2021-11-29 11:00