前端面試題 CSS Hack

2021-09-13 22:32:37 字數 2119 閱讀 4995

由於不同廠商的流覽器或某瀏覽器的不同版本(如ie,firefox/safari/opera/chrome等),對css的支援、解析不一樣,導致在不同瀏覽器的環境中呈現出不一致的頁面展現效果。這時,我們為了獲得統一的頁面效果,就需要針對不同的瀏覽器或不同版本寫特定的css樣式

我們把針對不同的瀏覽器/不同版本寫相應的css code的過程,叫做css hack!

由於不同的瀏覽器和瀏覽器各版本對css的支援及解析結果不一樣,以及css優先順序對瀏覽器展現效果的影響,我們可以據此針對不同的瀏覽器情景來應用不同的css

(1)ie6 能識別下劃線"_"和星號"*"

(2)ie7 能識別星號"*",但不能識別下劃線"_"

(3)ie6~ie10 都識別"\9"

(4)firefox 前述三個都不能識別。

(1)ie6 能識別*html .class{}

(2)ie7 能識別*+html .class{}*:first-child+html .class{}

(1)所有 ie (注:ie10+ 已經不再支援條件注釋)能識別

(2)ie6及以下版本能識別

這類 hack 不僅對 css 生效,對寫在判斷語句裡面的所有**都會生效

(3)實際專案中 css hack 大部分是針對ie 瀏覽器不同版本之間的表現差異而引入的。

一般是將適用範圍廣、被識別能力強的 css 定義在前面。
這種方式是 ie 瀏覽器專有的 hack 方式,微軟官方推薦使用的 hack 方式。

屬性字首法是在 css 樣式屬性名前加上一些只有特定瀏覽器才能識別的 hack 字首,以達到預期的頁面展現效果。

hack

寫法例項

ie6(s)

ie6(q)

ie7(s)

ie7(q)

ie8(s)

ie8(q)

ie9(s)

ie9(q)

ie10(s)

ie10(q)

**color青色y

yyyn

ynyn

y++color綠色y

yyyn

ynyn

y--color黃色y

ynnn

nnnn

n__color藍色y

ynyn

ynyn

n##color紫色y

yyyn

ynyn

y0color:red0紅色n

nnny

nyny

n90color:red90粉色n

nnnn

nyny

n!important

color:blue !important;color:green;棕色n

nyny

nyny

y(1)「-″ie6 生效,專有的 hack

(2)「\9″ ie6 / ie7 / ie8 / ie9 / ie10 都生效

(3)「\0″ ie8 / ie9 / ie10 都生效

(4)「\9\0″ ie9 / ie10 生效

選擇器字首法是針對頁面表現不一致或者需要特殊對待的瀏覽器,在 css 選擇器前加上只有某些特定瀏覽器才能識別的字首進行 hack。

閱讀更多

前端面試題

sprites是什麼和為什麼要使用他們?css 精靈 把一堆小的整合到一張大的上,減輕伺服器對的請求數量 有可能替代sprites的方法是什麼?svg圖示,字型圖示,字元編碼等等。1 在div排版的時候,假設現在是100px的寬,我在盒子左側用padding left留個10px的白,div就撐開了...

前端面試題

行內元素有哪些?塊級元素有哪些?空 void 元素有哪些?link和 import的區別是?常見相容性問題?含移動端 html5的離線儲存?描寫一段語義化的html 吧 html5的form如何關閉自動完成功能?什麼是閉包 closure 為什麼要用?localstorage和sessionstor...

前端面試題

朋友碰到的筆試題,在此記錄一下,並且記下碰到的有難點但是自己沒注意的到的面試題!function isnumber x else sum 2,3 5 sum 2 3 5 請寫出sum函式的具體實現。function sum a,c return a c 該題考查的是乙個以前沒接觸過的東西,叫做柯里化...