你真的須要瞭解一下CSS變量 var()的用法

當Web項目變得愈來愈大時,他的CSS會變得像天文數字那麼大並且還變得混亂。爲了幫助咱們解決這個問題,新的CSS變量很快就會出如今主流瀏覽器中,它讓開發人員可以重用並輕鬆編輯重複出現的CSS屬性。用過SASS或Less的人應該知道他的變量功能有多棒,但這些變量是預處理器,須要在使用前進行編譯。如今變量在vanilla CSS中可用,您能夠當即在瀏覽器中使用它們!html

定義和使用CSS變量程序員

與任何其餘CSS定義同樣,變量遵循相同的範圍和繼承規則。使用它們的最簡單方法是經過將聲明添加到:root僞類來使它們全局可用,以便全部其餘選擇器均可以繼承它。瀏覽器

:root {
  --awesome-blue:#2196F3;
}

要訪問變量中的值,咱們能夠使用var(…)語法。請注意,名稱區分大小寫,所以–foo != –FOO。編輯器

.element {
background-color:var(--awesome-blue);
}

瀏覽器支持函數

經常使用的瀏覽器除了IE都完美支持,您能夠在此處獲取更多詳細信息 –我能夠使用CSS變量)。下面是幾個例子,展現了CSS變量的典型用法。爲確保它們正常工做,請嘗試在咱們上面提到的其中一個瀏覽器上查看它們。學習

示例1 – 主題顏色 測試

當咱們須要對多個元素一遍又一遍地應用相同的規則時,CSS中的變量是最有用的,例如主題中的重複顏色。咱們不是每次想要重複使用相同顏色時進行復制和粘貼,而是將其放在變量中並從那裏訪問它。code

如今,若是咱們的客戶不喜歡咱們選擇的藍色陰影,咱們能夠在一個地方(變量的定義)改變樣式來改變整個主題的顏色。沒有變量,咱們必須手動搜索和替換每一次出現。orm

可將代碼複製下來在你的編輯器裏面測試htm

* {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>對話框窗口</h3>
<p>過放蕩不羈的生活,容易得像順水推舟,可是要結識良朋益友,卻難如登天。</p>
<button>確認</button>
</div>

示例地址

示例2 – 屬性類名可讀性

變量的另外一個重要用途是當咱們想要保存更復雜的屬性值時,咱們沒必要記住它。最好的例子就是有多個參數,如CSS規則box-shadow,transform和font。

經過將屬性放在變量中,咱們能夠使用語義可讀的名稱來訪問它。

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 – 動態更改變量

當屢次聲明自定義屬性時,標準規則有助於解決衝突,樣式表中最後定義的會覆蓋上面定義的。

下面的示例演示了用戶動態操做改變屬性是多麼容易,同時仍然保持代碼清晰簡潔。

*{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="green-container">
<div class="container">
<p class="title">這是個標題</p>
<p class="content">將鼠標懸停在不一樣的顏色區域上能夠更改此文本和標題的大小。</p>
</div>
</div>
</div>

示例地址

正如您所看到的,CSS變量很是簡單易用,開發人員沒必要花費太多時間在各處開始應用它們。如下是擴展內容:

var()函數有兩個參數,若是自定義屬性失敗,它可用於提供回退值:

`width``: var(–custom-width,` `20%``);`

能夠嵌套自定義屬性:

  • –base-color: #f93ce9;
  • –background-gradient: linear-gradient(to top, var(–base-color), #444);

變量能夠與CSS的另外一個新增功能- calc() 函數結合使用。

  • –container-width: 1000px;
  • max-width: calc(var(–container-width) / 2);

爲了學習工做與休閒娛樂互不衝突,現新建圈【碼農茶水鋪】用於程序員生活,愛好,交友,求職招聘,吐槽等話題交流,但願各位大神工做之餘到茶水鋪來喝茶聊天。瞭解更多

相關文章
相關標籤/搜索