您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關如何在css中自定義屬性,小編覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
1* css變量的語法
<1> 什么是css變量?
如果您使用過任何一種編程語言,那么您應該已經熟悉了變量的概念。 變量允許您存儲和更新程序所需的值以便工作。
在CSS中使用變量的好處與在編程語言中使用變量的好處并沒有太大的不同。
以下是規范對此的說法:
[Using CSS variables] makes it easier to read large files, as seemingly-arbitrary values now have informative names, and makes editing such files much easier and less error-prone, as one only has to change the value once, in the custom property, and the change will propagate to all uses of that variable automatically.
W3C Specification .
[使用CSS變量]可以更容易地讀取大文件,因為看似任意的值現在具有信息性名稱,并且使得編輯此類文件更容易且更不容易出錯,因為只需要在自定義屬性中更改一次值 ,這種更改將自動傳播到所有使用該變量的地方。
<2>css自定義變量語法
要聲明變量而不是常用的CSS屬性(如顏色或填充),只需提供以 - - 開頭的自定義命名屬性:
.box{ --box-color: #4d4e53; --box-padding: 0 10px; }
屬性的值可以是任何有效的CSS值:顏色,字符串,布局值,甚至是表達式。
以下是一些有用的自定義屬性:
:root{ --main-color: #4d4e53; --main-bg: rgb(255, 255, 255); --logo-border-color: rebeccapurple; --header-height: 68px; --content-padding: 10px 20px; --base-line-height: 1.428571429; --transition-duration: .35s; --external-link: "external link"; --margin-top: calc(2vh + 20px); /* Valid CSS custom properties can be reused later in, say, JavaScript. */ --foo: if(x > 5) this.width = 10; }
如果您不確定 :root,在HTML中它與html相同但具有更高的特異性,相當于全局變量。
<3> css變量的使用
var() 函數
您要通過 var() 這個 css 函數來使用 css 變量,將 css 變量名傳入這個函數:
.box{ --box-color:#4d4e53; --box-padding: 0 10px; padding: var(--box-padding); } .box div{ color: var(--box-color); }
var() 函數的語法是:
var( <custom-property-name> [, <declaration-value> ]? )
方法的第一個參數是要替換的自定義屬性的名稱。函數的可選第二個參數用作回退值。如果第一個參數引用的自定義屬性無效,則該函數將使用第二個值。
如果您不確定是否已定義自定義屬性并且想要提供用作回退的值,則可以執行此操作。
例如:
color: var(--foo, red, blue); //將red, blue同時指定為回退值;即是說任何在第一個逗號之后到函數結尾前的值都會被考慮為回退值。
padding: var(--box-padding, var(--main-padding));
calc()函數
由于我們習慣使用預處理器和其他語言,我們希望在處理變量時能夠使用基本運算符。 為此,CSS提供了一個calc()函數,它使瀏覽器在對自定義屬性的值進行任何更改后重新計算表達式:
:root{ --indent-size: 10px; --indent-xl: calc(2*var(--indent-size)); --indent-l: calc(var(--indent-size) + 2px); --indent-s: calc(var(--indent-size) - 2px); --indent-xs: calc(var(--indent-size)/2); }
如果您嘗試使用無單位值,則使用calc()函數可以帶來很大的方便:
:root{ --spacer: 10; } .box{ padding: var(--spacer)px 0; /* DOESN'T work */ padding: calc(var(--spacer)*1px) 0; /* WORKS */ }
css自定義屬性的scop
自定義屬性也遵守CSS層疊規則。
2* 利用js使用css自定義屬性
假設您有一個名為 --left-pos 的 CSS 變量,其值為 100px,范圍為 CSS 文檔中的 .sidebar 類:
.sidebar { --left-pos: 100px; }
可以通過如下方式獲取 --left-pos 的值:
const sidebarElement = document.querySelector('.sidebar'); const cssStyles = getComputedStyle(sidebarElement); const cssVal = String(cssStyles.getPropertyValue('--left-pos')).trim(); console.log(cssVal); //100px
設置css屬性值:
sidebarElement.style.setProperty('--left-pos', '200px');
3* css 變量和預處理變量有什么不同?
在樣式化網站時,您可能通過使用Sass和Less等預處理器來使得變量的更具有靈活性。
預處理器允許您設置變量,并在函數,循環,數學運算等中使用它們。這是否意味著CSS變量無關緊要?
不完全是,主要是因為CSS變量與預處理器變量不同。
差異源于CSS變量是在瀏覽器中運行的真正的CSS屬性,而預處理器變量需要被編譯成常規CSS代碼,因此瀏覽器對它們一無所知。
這意味著您可以更新樣式表文檔中的CSS變量,內聯樣式屬性和SVG表示屬性,或者選擇使用JavaScript 動態 操作它們。對于 CSS 自定義屬性的修改,會立馬傳遞到使用到他的地方,而預處理器則無法完成這種行為,因為他們是提前已經編譯好了的!
這并不是說你需要在一個或另一個之間做出選擇:沒有什么能阻止你利用CSS和預處理器變量一起工作的超能力。
css是一種用來表現HTML或XML等文件樣式的計算機語言,主要是用來設計網頁的樣式,使網頁更加美化。它也是一種定義樣式結構如字體、顏色、位置等的語言,并且css樣式可以直接存儲于HTML網頁或者單獨的樣式單文件中,而樣式規則的優先級由css根據這個層次結構決定,從而實現級聯效果,發展至今,css不僅能裝飾網頁,也可以配合各種腳本對于網頁進行格式化。
以上就是如何在css中自定義屬性,小編相信有部分知識點可能是我們日常工作會見到或用到的。希望你能通過這篇文章學到更多知識。更多詳情敬請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。