復(fù)雜的網(wǎng)站都會(huì)有大量的CSS代碼,通常也會(huì)有許多重復(fù)的值。
舉個(gè)例子,同樣一個(gè)顏色值可能在成千上百個(gè)地方被使用到,如果這個(gè)值發(fā)生了變化,需要全局搜索并且一個(gè)一個(gè)替換,效率不高且容易出錯(cuò)。
自定義屬性在某個(gè)地方存儲(chǔ)一個(gè)值,然后在其他許多地方引用它。另一個(gè)好處是語義化的標(biāo)識(shí)。比如,--main-text-color 會(huì)比 #00ff00 更易理解,尤其是這個(gè)顏色值在其他上下文中也被使用到。
自定義屬性(有時(shí)候也被稱作CSS變量或者級(jí)聯(lián)變量)是由CSS作者定義的,它包含的值可以在整個(gè)文檔中重復(fù)使用。
由自定義屬性標(biāo)記設(shè)定值(比如: --main-color: black;),由 var() 函數(shù)來獲取值(比如: color: **var(--main-color)**;)。
在構(gòu)建大型站點(diǎn)時(shí),作者通常會(huì)面對(duì)可維護(hù)性的挑戰(zhàn)。在這些網(wǎng)頁中,所使用的CSS 的數(shù)量是非常龐大的,并且在許多場合大量的信息會(huì)重復(fù)使用。
例如,在網(wǎng)頁中維護(hù)一個(gè)配色方案,意味著一些顏色在 CSS 文件中多次出現(xiàn),并被重復(fù)使用。當(dāng)你修改配色方案時(shí),不論是調(diào)整某個(gè)顏色或完全修改整個(gè)配色,都會(huì)成為一個(gè)復(fù)雜的問題,不容出錯(cuò),而單純查找替換是遠(yuǎn)遠(yuǎn)不夠的。
如果使用了CSS 框架,這種情況會(huì)變得尤其糟糕,此時(shí)如果要修改顏色,則需要對(duì)框架本身進(jìn)行修改。
在這些場合使用 LESS 或 Sass 類似的預(yù)處理器是非常有幫助的,但是這種通過添加額外步驟的方式,可能會(huì)增加系統(tǒng)的復(fù)雜性。
CSS變量為我們帶來一些預(yù)處理器的便利,并且不需要額外的編譯。
這些變量的第二個(gè)優(yōu)勢(shì)就是名稱本身就包含了語義的信息。CSS 文件變得易讀和理解。main-text-color比文檔中的#00ff00更容易理解,特別是同樣的顏色出現(xiàn)在不同的文件中的時(shí)候。
下面是 CSS 變量的使用方法和步驟。
我們都知道,在 JS 中要使用一個(gè)變量前,必須聲明這個(gè)表變量。在 CSS 中也是一樣的道理。
聲明一個(gè)自定義屬性,屬性名需要以兩個(gè)減號(hào)(--)開始,屬性值則可以是任何有效的CSS值。和其他屬性一樣,自定義屬性也是寫在規(guī)則集之內(nèi)的,如下:
body {
--bg-color: #7F583F;
--color: #F7EFD2;
}
上面代碼中,body選擇器里面聲明了兩個(gè)變量:--bg-color和--color。
它們與color、font-size等正式屬性沒有什么不同,只是沒有默認(rèn)含義。所以 CSS 變量(CSS variable)又叫做**"CSS 自定義屬性"**(CSS custom properties)。
規(guī)則集所指定的選擇器定義了自定義屬性的可見作用域。通常的最佳實(shí)踐是定義在根偽類 :root下,這樣就可以在HTML文檔的任何地方訪問到它了:
:root {
--main-bg-color: #eee;
}
自定義屬性名是大小寫敏感的,--my-color 和 --My-color 會(huì)被認(rèn)為是兩個(gè)不同的自定義屬性。
通過var()函數(shù)來讀取變量。語法如下:
var(custom-property-name, value)
變量名稱必須以兩個(gè)破折號(hào)(--)開頭,且區(qū)分大小寫!
使用方法:
element {
background-color: var(--main-bg-color);
}
變量也可以使用在變量聲明中:
:root {
--primary-color: #eee;
--primary-bg-color: var(--main-bg-color);
}
變量值只能用作屬性值,不能用作屬性名。
在 JS 代碼中,我們可能需要讀取 CSS 變量的值,其方法如下:
const root = document.querySelector(":root");
// 設(shè)置 CSS 變量
root.style.setProperty("--main-bg-color", "red");
// 讀取 CSS 變量
const computedStyle = getComputedStyle(root);
const mainBgColor = computedStyle.getPropertyValue("--main-bg-color");
console.log(mainBgColor);
// 刪除 CSS 變量
root.style.removeProperty("--main-bg-color");
以上就是關(guān)于 CSS 變量的一些基本概念及使用方法,更多詳情待后續(xù)!
靈活使用 CSS 變量,不僅可以提高生產(chǎn)力,也能夠提高代碼的可閱讀性和維護(hù)性。
~
~
~ 本文完
學(xué)習(xí)有趣的知識(shí),結(jié)識(shí)有趣的朋友,塑造有趣的靈魂!
大家好!我是〖編程三昧〗的作者 隱逸王,我的公眾號(hào)是『編程三昧』,歡迎關(guān)注,希望大家多多指教!
知識(shí)與技能并重,內(nèi)力和外功兼修,理論和實(shí)踐兩手都要抓、兩手都要硬!
例
對(duì)文檔中的文本進(jìn)行格式化:
<code>一段電腦代碼</code>
瀏覽器支持
所有主流瀏覽器都支持 <code> 標(biāo)簽。
標(biāo)簽定義及使用說明
<code> 標(biāo)簽是一個(gè)短語標(biāo)簽,用來定義計(jì)算機(jī)代碼文本。
提示:我們并不反對(duì)使用這個(gè)標(biāo)簽,但是如果您只是為了達(dá)到某種視覺效果而使用這個(gè)標(biāo)簽的話,我們建議您使用 CSS ,這樣可能會(huì)取得更豐富的效果。
所有短語標(biāo)簽:
標(biāo)簽 | 描述 |
---|---|
<em> | 呈現(xiàn)為被強(qiáng)調(diào)的文本。 |
<strong> | 定義重要的文本。 |
<dfn> | 定義一個(gè)定義項(xiàng)目。 |
<code> | 定義計(jì)算機(jī)代碼文本。 |
<samp> | 定義樣本文本。 |
<kbd> | 定義鍵盤文本。它表示文本是從鍵盤上鍵入的。它經(jīng)常用在與計(jì)算機(jī)相關(guān)的文檔或手冊(cè)中。 |
<var> | 定義變量。您可以將此標(biāo)簽與 <pre> 及 <code> 標(biāo)簽配合使用。 |
HTML 4.01 與 HTML5之間的差異
無。
全局屬性
<code> 標(biāo)簽支持 HTML 的全局屬性。
事件屬性
<code> 標(biāo)簽支持 HTML 的事件屬性。
如您還有不明白的可以在下面與我留言或是與我探討QQ群308855039,我們一起飛!
(1)css中聲明變量
--color:red
(2)使用變量
color:var(--color) //color:red獲取到全局聲明變量值為red
(1)在html標(biāo)簽中
<span :style="{'--color':變量color}" ref='devcolor' />
data中聲明變量color
data() {
return {
color: red,
};
}
或者使用this.$refs.devcolor.style.setProperty('--color',this.color)
(2)css中使用color變量
color:var(--color) //使用變量color:red
*請(qǐng)認(rèn)真填寫需求信息,我們會(huì)在24小時(shí)內(nèi)與您取得聯(lián)系。