在5分鐘內學習CSS變數

CSS Custom Properties(也稱為Variables)是前端開發人員的一大勝利。它為CSS帶來了變數的強大功能,從而減少了重複次數,提高了可讀性並增加了靈活性。

另外,與CSS預處理器的變數不同,CSS變數實際上是DOM的一部分,它有很多好處。所以它們基本上就像類固醇上的SASS和LESS變數一樣。在本文中,我將為您提供有關這項新技術如何運作的速成價格。

我還創建了一個關於CSS變數的免費互動式8部分價格,如果你想成為這個主題的專家,請查看它。

想學習CSS變數嗎?這是我免費的8部分價格

為什麼要學習CSS變數?

在CSS中使用變數有很多原因。其中最引人注目的是它減少了樣式表中的重複。

在上面的例子中,為它創建一個變數要好得多 #ffeead 顏色比重複它,就像我們在這裡做的那樣:

這不僅可以使您的代碼更易於閱讀,而且還可以為您提供更大的靈活性,以防您想要更改此顏色。

現在,多年來SASS和LESS變數確實可以實現。但是,CSS變數有一些很大的好處。

  1. 它們不需要任何轉換工作,因為它們是瀏覽器的本機。因此,您不需要任何設置即可開始,就像使用SASS和LESS一樣。
  2. 他們生活在DOM中,這帶來了很多好處,我將在本文和即將開始的價格中介紹。

現在讓我們開始學習CSS變數

聲明你的第一個CSS變數

要聲明變數,首先需要確定變數應該存在哪個範圍。如果希望全局可用,只需在變數上定義它。 :root 偽類。它匹配文檔樹中的根元素(通常是 標籤)。

隨著變數的繼承,這將使您的變數在整個應用程序中可用,因為所有DOM元素都是變數的後代 標籤。

:root {     --main-color: #ff6f69;   } 

如您所見,您聲明一個變數的方式與設置任何CSS屬性的方式相同。但是,變數必須以兩個達世幣開頭。

要訪問變數,您需要使用 var() 函數,並將變數的名稱作為參數傳遞。

#title {     color: var(--main-color);   } 

這將給你的頭銜 #f6f69 顏色:

聲明一個局部變數

您還可以創建局部變數,這些變數只能在其聲明的元素及其子元素中訪問。如果您知道變數僅用於應用程序的特定部分(或多個部分),則這是有意義的。

例如,您可能有一個警告框,它使用了一種特殊的顏色,這些顏色未在應用程序的其他位置使用。在這種情況下,避免將其放在全局範圍內可能是有意義的:

.alert {     --alert-color: #ff6f69;   } 

該變數現在可由其子項使用:

.alert p {     color: var(--alert-color);     border: 1px solid var(--alert-color);   } 

如果你嘗試過使用 alert-color 變數在應用程序的其他位置,例如在導航欄中,它根本不起作用。瀏覽器只會忽略那一行CSS。

更容易響應變數

CSS Variables的一大優勢是它們可以訪問DOM。 LESS或SASS不是這種情況,因為它們的變數被編譯成常規CSS。

實際上,這意味著您可以根據屏幕寬度更改變數:

:root {     --main-font-size: 16px;   }  media all and (max-width: 600px) {     :root {       --main-font-size: 12px;     }   } 

使用這些簡單的四行代碼,您可以在小屏幕上查看整個應用程序中的主要字體大小。很優雅,對吧?

如何使用JavaScript訪問變數

生活在DOM中的另一個優點是,您可以使用JavaScript訪問變數,甚至可以根據用戶交互更新它們。如果您想讓您的用戶能夠更改您的網站(例如調整字體大小),這是完美的。

讓我們繼續本文開頭的示例。在JavaScript中抓取CSS變數需要三行代碼。

var root = document.querySelector(':root');   var rootStyles = getComputedStyle(root);   var mainColor = rootStyles.getPropertyValue('--main-color');  console.log(mainColor);    --> '#ffeead' 

要更新CSS變數,只需調用 setProperty 聲明變數的元素的方法,並將變數名稱作為第一個參數傳遞,將新值作為第二個參數傳遞。

root.style.setProperty('--main-color', '#88d8b0') 

這種主色可以改變應用程序的整體外觀,因此非常適合用戶設置網站主題。

通過更新單個變數,您可以更改導航欄,文本和項目的顏色。

瀏覽器支持

目前,全球網站流量的77%支持CSS變數,其中近90%在美國。我們已經在Scrimba.com上使用CSS變數一段時間了,因為我們的觀眾非常精通技術,並且大多使用現代瀏覽器。

好的,就是這樣。我希望你學到了一些東西

如果你想正確學習它,請務必查看我在Scrimba的免費CSS變數價格。

謝謝閱讀我叫Per,我是Scrimba的聯合創始人,我喜歡幫助人們學習新技能。如果您想收到有關新文章和資源的通知,請在Twitter上關注我。

資訊來源:由0x資訊編譯自DEV,原文:https://dev.to/perborgen/learn-css-variables-in-5-minutes-4ee3 ,版權歸作者所有,未經許可,不得轉載
你可能還喜歡