瀏覽器兼容

什么是 CSS hack

由于不同廠商的瀏覽器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一廠商的瀏覽器的不同版本,如IE6和IE7,對(duì)CSS的解析認(rèn)識(shí)不完全一樣,因此會(huì)導(dǎo)致生成的頁面效果不一樣,得不到我們所需要的頁面效果。

這個(gè)時(shí)候我們就需要針對(duì)不同的瀏覽器去寫不同的CSS,讓它能在不同的瀏覽器中也能得到我們想要的頁面效果。

談一談瀏覽器兼容的思路

  • 要不要做:
    產(chǎn)品的角度(產(chǎn)品的受眾、受眾的瀏覽器比例、效果優(yōu)先還是基本功能優(yōu)先)
    成本的角度 (有無必要做某件事)

  • 做到什么程度:
    讓哪些瀏覽器支持哪些效果

  • 如何做:
    根據(jù)兼容需求選擇技術(shù)框架/庫(jquery)
    根據(jù)兼容需求選擇兼容工具(html5shiv.js、respond.jscss reset、normalize.css、ModernizrpostCSS)
    條件注釋、CSS Hack、js 能力檢測(cè)做一些修補(bǔ)

列舉5種以上瀏覽器兼容的寫法

  • 注釋法
    <!--[if IE 6]>
    <p>You are using Internet Explorer 6.</p>
    <![endif]-->
  • IE Hack法
.box{
  color: red;
  _color: blue; /*ie6*/
  *color: pink; /*ie67*/
  color: yellow\9;  /*ie/edge 6-8*/
}
  • 兼容清除浮動(dòng)
.clearfix{
    content: " ";
        display: block;
        clear: both;
}
.clearfix{
    *zoom: 1; //for ie6,7
}
  • ie 67的inline-block
.target{
  display: inline-block;
  *display: inline;
  *zoom: 1;
}
  • 利用插件提高兼容
 <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.3/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
  <![endif]-->

以下工具/名詞是做什么的

  1. 條件注釋
    <!--[if IE 6]>
    <p>You are using Internet Explorer 6.</p>
    <![endif]-->
    <!--[if !IE]><!-->
    <script>alert(1);</script>
    <!--<![endif]-->
    <!--[if IE 8]>
    <link href="ie8only.css" rel="stylesheet">
    <![endif]-->
項(xiàng)目 范例 說明
! [if !IE] 非IE
lt [if lt IE 5.5] 小于IE 5.5
lte [if lte IE 6] 小于等于IE6
gt [if gt IE 5] 大于 IE5
gte [if gte IE 7] 大于等于IE7
| [if (IE 6)|(IE 7)] IE6或者IE7

指于HTML源碼中被IE有條件解釋的語句。條件注釋可被用來向IE提供及隱藏代碼。

  1. IE Hack
.box{
  color: red;
  _color: blue; /*ie6*/
  *color: pink; /*ie67*/
  color: yellow\9;  /*ie/edge 6-8*/
}

針對(duì)ie的css hack

  1. js 能力檢測(cè)
    檢測(cè)是否有這個(gè)屬性,方法沒有就用另外一種方式獲取這個(gè)
    通常直接用jquery來達(dá)到這個(gè)目的。
  2. html5shiv.js
    讓一些自身不支持html5標(biāo)簽的瀏覽器支持html5。具體方式是使用createElement()來創(chuàng)建標(biāo)簽。
  3. respond.js
    為了響應(yīng)式的頁面,為ie6/7/8模擬css3的媒體查詢。
  4. css reset
    為瀏覽器自身有默認(rèn)的樣式,如padding和margin等, 不方便我們使用,所以我們要重置這些屬性,如將margin設(shè)為0,字體設(shè)置為xx等等。暴力清除。
  5. normalize.css
    上面一個(gè)的進(jìn)化版本,保護(hù)了有用的瀏覽器默認(rèn)樣式。
  6. Modernizr
    探測(cè)用戶瀏覽器html5和css3的一些特性,根據(jù)用戶瀏覽器是否支持這些特性來向html元素中添加不同的class。
  7. postCSS
    PostCSS 是一個(gè)允許使用 JS 插件轉(zhuǎn)換樣式的工具。 這些插件可以檢查(lint)你的 CSS,支持 CSS Variables 和 Mixins, 編譯尚未被瀏覽器廣泛支持的先進(jìn)的 CSS 語法,內(nèi)聯(lián)圖片,以及其它很多優(yōu)秀的功能。PostCSS的目標(biāo)是通過自定義插件和工具這樣的生態(tài)系統(tǒng)來改造CSS。與Sass和Less這些預(yù)編譯器相同的原則,PostCSS把擴(kuò)展的語法和特性轉(zhuǎn)換成現(xiàn)代的瀏覽器友好的CSS。

一般在哪個(gè)網(wǎng)站查詢屬性兼容性?

Can I use

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是 CSS hack CSS hack是通過在CSS樣式中加入一些特殊的符號(hào),讓不同的瀏覽器識(shí)別不同的符號(hào)(什...
    怎么昵稱閱讀 528評(píng)論 0 1
  • 什么是 CSS hack 引自百度百科的定義: CSS hack由于不同廠商的瀏覽器,比如Internet Exp...
    肥魚666閱讀 191評(píng)論 0 0
  • 1.什么是 CSS hack CSS hack由于不同廠商的瀏覽器,比如Internet Explorer,Saf...
    Ghj_小樹閱讀 471評(píng)論 2 5
  • 1.什么是 CSS hack 由于不同廠商的瀏覽器,比如Internet Explorer,Safari,Mozi...
    zhaonu閱讀 458評(píng)論 0 0
  • 1、什么是 CSS hack 不同廠商的瀏覽器(比如Internet Explorer,Safari,Mozill...
    zh_yang閱讀 414評(píng)論 0 0

友情鏈接更多精彩內(nèi)容