閱讀234 返回首頁    go 阿裏雲 go 技術社區[雲棲]


內聯 Style 簡寫屬性的發現

內聯 Style 簡寫屬性的發現

開始

平時在使用內聯樣式簡寫屬性的時候,可能沒有考慮到瀏覽器解析的問題。問題不大,簡寫的好處是代碼量少,但最近發現了一個有意思的內聯簡寫屬性的問題。

以下問題僅在內聯樣式裏會出現,如果是通過 style 標簽或 css 文件引入則不會有這樣的問題。

例子

background

設置一個元素的背景色為白色,比如這麼寫:

<div ></div>

你可能以為瀏覽器會這樣輸出:

<div ></div>

一下少了 6 個字節,而瀏覽器的真真實解析情況是:

screenshot.png

潛在的問題是:**將會默認設置一些其他的屬性到樣式裏,而通過 CSS 又很難恢複這種默認屬性**。

驗證

我們來驗證一下這個問題:

使用屬性簡寫的瀏覽器呈現:

Snip20161217_4.png

而非簡寫的呈現:

Snip20161217_5.png

上麵例子裏的 HTML 代碼:

<div ></div>

那麼:

$0.style.backgroundImage === '' // => false

而如果例子修改為:

<div ></div>

那麼:

$0.style.backgroundImage === '' // => true

font 驗證

另外一個例子是 font 屬性,也會有這個問題:

Snip20161217_10.png

這個時候:

$0.style.fontWeight === ''  // => false

Snip20161217_11.png

結果:

$0.style.fontWeight === ''  // => true

結論

能看到通過 style 獲取元素屬性時會返回非預期結果,所以使用 CSS 處理這類樣式,最好是**隻設置你需要的屬性,盡量不要簡寫,除非你明確知道這個操作的結果**

最後更新:2017-07-26 12:03:39

  上一篇:go  大數據時代,如何構建國家地質基礎數據更新體係
  下一篇:go  一文讀懂物聯網、雲計算與大數據的關係