国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > CSS > 正文

史上最全的CSS hack方式一覽(兼容多瀏覽器)

2024-07-11 08:57:55
字體:
來源:轉載
供稿:網友
做前端多年,雖然不是經常需要hack,但是我們經常會遇到各瀏覽器表現不一致的情況。基于此,某些情況我們會極不情愿的使用這個不太友好的方式來達到大家要求的頁面表現。我個人是不太推薦使用hack的,要知道一名好的前端,要盡可能不使用hack的情況下實現需求,做到較好的用戶體驗。可是啊,現實太殘酷,瀏覽器廠商之間歷史遺留的問題讓我們在目標需求下不得不向hack妥協,雖然這只是個別情況。今天,結合自己的經驗和理解,做了幾個demo把IE6~IE10和其他標準瀏覽器的CSS hack做一個總結,也許本文應該是目前最全面的hack總結了吧。

什么是CSS hack
由于不同廠商的流覽器或某瀏覽器的不同版本(如IE6-IE11,Firefox/Safari/Opera/Chrome等),對CSS的支持、解析不一樣,導致在不同瀏覽器的環境中呈現出不一致的頁面展現效果。這時,我們為了獲得統一的頁面效果,就需要針對不同的瀏覽器或不同版本寫特定的CSS樣式,我們把這個針對不同的瀏覽器/不同版本寫相應的CSS code的過程,叫做CSS hack!

CSS hack的原理
由于不同的瀏覽器和瀏覽器各版本對CSS的支持及解析結果不一樣,以及CSS優先級對瀏覽器展現效果的影響,我們可以據此針對不同的瀏覽器情景來應用不同的CSS。

CSS hack分類
CSS Hack大致有3種表現形式,CSS屬性前綴法、選擇器前綴法以及IE條件注釋法(即HTML頭部引用if IE)Hack,實際項目中CSS Hack大部分是針對IE瀏覽器不同版本之間的表現差異而引入的。

屬性前綴法(即類內部Hack):例如 IE6能識別下劃線"_"和星號" * ",IE7能識別星號" * ",但不能識別下劃線"_",IE6~IE10都認識"/9",但firefox前述三個都不能認識。
選擇器前綴法(即選擇器Hack):例如 IE6能識別*html .class{},IE7能識別*+html .class{}或者*:first-child+html .class{}。
IE條件注釋法(即HTML條件注釋Hack):針對所有IE(注:IE10+已經不再支持條件注釋): <!--[if IE]>IE瀏覽器顯示的內容 <![endif]-->,針對IE6及以下版本: <!--[if lt IE 6]>只在IE6-顯示的內容 <![endif]-->。這類Hack不僅對CSS生效,對寫在判斷語句里面的所有代碼都會生效。
  
CSS hack書寫順序,一般是將適用范圍廣、被識別能力強的CSS定義在前面。

CSS hack方式一:條件注釋法
 
這種方式是IE瀏覽器專有的Hack方式,微軟官方推薦使用的hack方式。舉例如下

只在IE下生效
<!--[if IE]>
這段文字只在IE瀏覽器顯示
<![endif]-->

只在IE6下生效
<!--[if IE 6]>
這段文字只在IE6瀏覽器顯示
<![endif]-->

只在IE6以上版本生效
<!--[if gte IE 6]>
這段文字只在IE6以上(包括)版本IE瀏覽器顯示
<![endif]-->

只在IE8上不生效
<!--[if ! IE 8]>
這段文字在非IE8瀏覽器顯示
<![endif]-->

非IE瀏覽器生效
<!--[if !IE]>
這段文字只在非IE瀏覽器顯示
<![endif]-->

CSS hack方式二:類內屬性前綴法
屬性前綴法是在CSS樣式屬性名前加上一些只有特定瀏覽器才能識別的hack前綴,以達到預期的頁面展現效果。

IE瀏覽器各版本 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 Y Y Y N Y N Y N Y
+ +color 綠色 Y Y Y Y N Y N Y N Y
- -color 黃色 Y Y N N N N N N N N
_ _color 藍色 Y Y N Y N Y N Y N N
# #color 紫色 Y Y Y Y N Y N Y N Y
/0 color:red/0 紅色 N N N N Y N Y N Y N
/9/0 color:red/9/0 粉色 N N N N N N Y N Y N
!important color:blue !important;color:green; 棕色 N N Y N Y N Y N Y Y

說明:在標準模式中

“-″減號是IE6專有的hack
“/9″ IE6/IE7/IE8/IE9/IE10都生效
“/0″ IE8/IE9/IE10都生效,是IE8/9/10的hack
“/9/0″ 只對IE9/IE10生效,是IE9/10的hack
demo如下
CSS Code復制內容到剪貼板
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 九龙城区| 绥滨县| 金秀| 罗城| 普定县| 新巴尔虎右旗| 天长市| 常宁市| 南康市| 翁牛特旗| 武汉市| 平利县| 尚义县| 亳州市| 闵行区| 牡丹江市| 宁海县| 怀柔区| 革吉县| 夹江县| 阳朔县| 漠河县| 松溪县| 武安市| 博罗县| 尚义县| 张家川| 内江市| 广元市| 广丰县| 遵义县| 荃湾区| 射洪县| 永济市| 马龙县| 淮滨县| 六盘水市| 陕西省| 土默特右旗| 青龙| 衡水市|