瀏覽器兼容

CSS hack

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

瀏覽器兼容的思路

  1. 根據用戶瀏覽器使用情況考慮要不要做
  2. 需要適配哪些瀏覽器以及相應的版本
  3. 不同瀏覽器上的顯示效果不一樣,做到哪種程度 //因為有些屬性某些瀏覽器并不支持
  4. 選擇需要的兼容工具

瀏覽器兼容的寫法

CSS屬性前綴法:

.container{
  _color: red;/*IE6識別*/
  *color: red;/*IE6,IE7識別*/
  color: red\9;/*IE6-IE10識別*/
  color: red\0;/*IE8-IE10識別*/
  color: red\9\0;/*IE9,IE10識別*/
  }

選擇器前綴法:

*html{}/*只對IE6生效*/
*+html{}/*只對IE7生效*/
@media screen\9{...}  //IE6-7生效

IE條件注釋法(即HTML頭部引用if IE):

CSS3選擇器結合JavaScript

irefox 瀏覽器css hack

@-moz-document url-prefix() { 

.selector { property: value; } 

}    

支持所有Gecko內核的瀏覽器 (包括Firefox)

*>.selector { property: value; } 

Webkit 內核瀏覽器 css hack

@media screen and (-webkit-min-device-pixel-ratio: 0) { 

Selector { property: value;  } 

}

Opera 瀏覽器css hack

html:first-child>b\ody Selector {property:value;} 

@media all and (-webkit-min-device-pixel-ratio:10000),not and all (-webkit-min-device-pixel-ratio:0) { .font1 {color:red;} }

Webkit 內核瀏覽器 css hack和Opera 瀏覽器css hack

@media all and (min-width:0px){ .font1 {color:red;} }

解釋

條件注釋

以小于符號+嘆號+兩個減號開始 兩個減號大于符號結束構成(字符均為英文小寫輸入),而注解注釋內容放入其中。

它會根據瀏覽器的不同選擇性地給<html>標記添加(或不添加)一個包含瀏覽器版本信息的class屬性。

IE Hack

<!--[if !IE]>除IE外都可識別<![endif]--> 
<!--[if IE]> 所有的IE可識別 <![endif]-->
<!--[if gt IE 5.0]> IE5.0以及IE5.0以上版本都可以識別 <![endif]--> 
<!--[if IE 6]> 僅IE6可識別 <![endif]--> 
<!--[if lt IE 6]> IE6以及IE6以下版本可識別 <![endif]--> 
<!--[if gte IE 6]> IE6以及IE6以上版本可識別 <![endif]--> 
<!--[if IE 7]> 僅IE7可識別 <![endif]--> 
<!--[if lt IE 7]> IE7以及IE7以下版本可識別 <![endif]--> 
<!--[if gte IE 7]> IE7以及IE7以上版本可識別 <![endif]-->

JS 能力檢測

瀏覽器提供商雖然在實現公共接口方面投入了很多精力,但結果仍然是每一種瀏覽器都有各自
的長處,也都有各自的缺點。即使是那些跨平臺的瀏覽器,雖然從技術上看版本相同,也照
樣存在不一致性問題。

能力檢測的目標不是識別特定的瀏覽器,而是識別瀏覽器的能力。采用這種方式不必顧及特定的瀏覽器如何如何,只要確定瀏覽器支持特定的能力,就可以給出解決方案。

能力檢測的基本模式如下:

if(object.property) {
//存在該屬性或方法,使用object.property
}

html5shiv.js

ie低版本不支持html5標簽,可以引入一段腳本,在ie瀏覽器中創建html5的標簽。

HTML5 Shiv是JavaScript的一種備選方案。該方案在Internet Explorer 9版本中優先啟用HTML5元素樣式,但不允許使用沒有由JavaScript定義過的元素樣式。

維基百科

respond.js

Respond.js讓不支持css3 Media Query的瀏覽器包括IE6-IE8等其他瀏覽器支持查詢。

就是說在IE6~8瀏覽器中兼容響應式布局。

css reset

所有的 HTML 標簽在沒有設置樣式時均被瀏覽器默認的樣式列表所裝飾 (不同瀏覽器默認樣式有所不同)。CSS 的樣式重置就是清楚瀏覽器的默認樣式 ,可以理解為對于全局的樣式定義。

通過為幾乎所有的元素施加默認樣式,強行使得元素有相同的視覺效果。

Normalize.css

保護有用的瀏覽器默認樣式而不是完全去掉它們

一般化的樣式:為大部分HTML元素提供

修復瀏覽器自身的bug并保證各瀏覽器的一致性

優化CSS可用性:用一些小技巧

Modernizr

Modernizr是一套JavaScript 庫,用來偵測瀏覽器是否支持HTML5與CSS3等規格。如果瀏覽器不支持,Modernizr會使用其他的解決方法來進行模擬。

許多HTML5與CSS 3的功能已經在許多主流的瀏覽器中實現出來。Modernizr能夠告訴開發者,瀏覽器是否已經實現他們想要的功能。這讓開發者在瀏覽器上可以充分利用這些新功能,或者嘗試制作解決方案來支持那些老舊的瀏覽器。

維基百科

PostCSS

PostCSS 使用 JavaScript 代碼來轉換 CSS 中的樣式。PostCSS 通過不同的插件來支持對 CSS 的不同處理。PostCSS 的插件可以完成各種不同的功能,如支持變量和混入,支持未來的 CSS 語法和添加瀏覽器特定前綴等。

IBM

屬性兼容性

caniuse

caniuse.com是一個工具性的網站,幫助人們了解各個瀏覽器以及它們的不同版本對HTML5、CSS3等高級特性的支持情況,幫助網站設計人員根據網站針對的用戶有選擇的使用web設計高級特性,提高用戶體驗。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,578評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,701評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,691評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,974評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,694評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 56,026評論 1 329
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,015評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,193評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,719評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,442評論 3 360
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,668評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,151評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,846評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,255評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,592評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,394評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,635評論 2 380

推薦閱讀更多精彩內容

  • 1.什么是 CSS hack CSS hack由于不同廠商的瀏覽器,比如Internet Explorer,Saf...
    Ghj_小樹閱讀 433評論 2 5
  • 1.什么是 CSS hack? 以下是引自百度文庫的定義: 簡單地講,css hack指各版本及各品牌瀏覽器之間對...
    饑人谷_Young丶K閱讀 396評論 0 6
  • 什么是 CSS hack 引自百度百科的定義: CSS hack由于不同廠商的瀏覽器,比如Internet Exp...
    肥魚666閱讀 156評論 0 0
  • 什么是 CSS hack CSS hack是通過在CSS樣式中加入一些特殊的符號,讓不同的瀏覽器識別不同的符號(什...
    怎么昵稱閱讀 404評論 0 1
  • 什么是 CSS hack? 基礎概念 由于不同廠商的瀏覽器,比如Internet Explorer,Safari,...
    Sketch閱讀 297評論 0 0