css 從右邊往左開始解析,過多的嵌套會影響性能,最好不要超過三層。css 儘量的複用代碼塊,減小重複代碼css
css Specificity中文通常譯爲css優先級、css權重。相比權重,優先級更好理解。簡單理解就是一個DOM元素有多個css樣式設置,優先級高的那個樣式被應用,其餘css設置不生效的問題,這是由於在其餘地方定義了一個更高的優先級樣式,從而致使其餘地方設置的樣式不生效。html
根據w3c標準 這個優先級是根據計算選擇者的特性來決定,能夠理解爲根據選擇器的類型來決定,他們的類型分爲a、b、c,他們的數目計算規則以下,在比較權重時, 按照 a => b => c 的順序進行比較。api
style="font-weight:bold"
) 總會覆蓋外部樣式表的任何樣式 ,所以可看做是具備最高的優先級。1 * / * a = 0 b = 0 c = 0->特異性= 0 * / 2 LI / * a = 0 b = 0 c = 1->特異性= 1 * / 3 UL LI / * a = 0 b = 0 c = 2->特異性= 2 * / 4 UL OL + LI / * a = 0 b = 0 c = 3->特異性= 3 * / 5 H1 + * [REL = up] / * a = 0 b = 1 c = 1->特異性= 11 * / 6 UL OL LI.red / * a = 0 b = 1 c = 3->特異性= 13 * / 7 LI.red.level / * a = 0 b = 2 c = 1->特異性= 21 * / 8 #x34y / * a = 1 b = 0 c = 0->特異性= 100 * / 9 #s12:not(FOO)/ * a = 1 b = 0 c = 1->特異性= 101 * /
根據最新的標準這個是錯誤的瀏覽器
有些樣式能夠直接繼承父元素的樣式,不能繼承的默認是初始值。常見可繼承屬性以下dom
font-family:字體系列函數
font-weight:字體的粗細佈局
font-size:字體的大小性能
font-style:字體的風格字體
text-indent:文本縮進spa
text-align:文本水平對齊
line-height:行高
word-spacing:單詞之間的間距
letter-spacing:中文或者字母之間的間距
text-transform:控制文本大小寫(就是uppercase、lowercase、capitalize這三個)
color:文本顏色
visibility:控制元素顯示隱藏
list-style:列表風格,包括list-style-type、list-style-image等
cursor:光標顯示爲什麼種形態
css 能夠自定義屬性(一般叫css 變量),好比: --main-color: black; 由var() 函數用於讀取值
1 color: var(--main-color);
1 // 獲取任意 Dom 節點上的 CSS 變量 2 getComputedStyle(element).getPropertyValue("--my-var"); 3 // 修改一個 Dom 節點上的 CSS 變量 4 element.style.setProperty("--my-var", jsVar + 4); 5 6 //讀取全局 7 let root = getComputedStyle(document.documentElement);
8 let color = root.getPropertyValue('--color').trim();
9 console.log(color); 10 11 //改變 12 document.documentElement.style.setProperty('--color', 'yellow'); 13 let color = root.getPropertyValue('--color').trim();
14 console.log(color); 15 //刪除 16 document.documentElement.style.removeProperty('--color'); 17 let color = root.getPropertyValue('--color').trim(); 18 console.log(color);
1 :root { 2 --bg1: red; 3 --mt1: 20; // 數值須要與calc*()函數拼接 4 // --ml1: "20px"; // 無效,帶有單位不要寫成字符串 5 --ml1: 20px; // 帶有單位時不要寫成字符串 6 }
1 .wrap2 { 2 // 無效 3 // margin-top: var(--mt1) 4 margin-top: calc(var(--mt1) * 1px); 5 margin-left: var(--ml1); 6 }
相較於傳統的 LESS 、SASS 等預處理器變量,CSS 變量的優勢在於:
CSS 自定義屬性可讓 JavaScript 與 CSS 通訊了。
當咱們對 DOM 的修改致使了樣式的變化、卻並未影響其幾何屬性(好比修改了顏色、背景色等),瀏覽器不需從新計算元素的幾何屬性、直接爲該元素繪製新的樣式,這個過程叫作重繪。
當咱們對 DOM 的修改引起了 DOM 幾何尺寸、結構的變化(好比修改元素的寬、高或隱藏元素等),瀏覽器須要從新計算元素的幾何屬性(其餘元素的幾何屬性和位置也會所以受到影響)從新生成渲染樹,而後再將計算的結果繪製出來,這個過程就是迴流(也叫重排)
迴流必定會產生重繪,重繪不必定會迴流,好比只有顏色改變就只會發生重繪而不會引發迴流,每一個頁面至少經歷一次迴流(在頁面第一次加載)
作移動頁面開發時,若是使用 vw、wh 設置字體大小(好比 5vw),在豎屏和橫屏狀態下顯示的字體大小是不同的。
因爲 vmin 和 vmax 是當前較小的 vw 和 vh 和當前較大的 vw 和 vh。這裏就能夠用到 vmin 和 vmax。使得文字大小在橫豎屏下保持一致。