任務(wù)12 瀏覽器兼容

1、什么是 CSS hack

由于不同廠商的瀏覽器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一廠商的瀏覽器的不同版本,如IE6和IE7,對CSS的解析認(rèn)識不完全一樣,因此會導(dǎo)致生成的頁面效果不一樣,得不到我們所需要的頁面效果。CSS hack 就是這種情況下我們針對不同的瀏覽器去寫不同的CSS的一個(gè)過程,讓它能夠同時(shí)兼容不同的瀏覽器,能在不同的瀏覽器中也能得到我們想要的頁面效果。

2、談一談瀏覽器兼容的思路

第一、產(chǎn)品的受眾,及受眾使用的各瀏覽器的比例,效果優(yōu)先還是基本功能優(yōu)先。
第二、成本的考慮,投入產(chǎn)出比。
第三、兼容哪些瀏覽器,兼容到什么版本,讓哪些瀏覽器支持哪些效果。
第四、漸進(jìn)增強(qiáng)和優(yōu)雅降級的選擇
第五、根據(jù)兼容需求選擇技術(shù)框架,比如:
Bootstrap (>=ie8)
jQuery 1.~ (>=ie6), jQuery 2.~ (>=ie9)
Vue (>= ie9)
第六、根據(jù)兼容需求選擇兼容工具h(yuǎn)tml5shiv.js、respond.js、css reset、Modernizr、postCSS
第七、條件注釋、CSS Hack、js 能力檢測做一些修補(bǔ)。

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

*,ie6,ie7可以識別;
_和- , ie6可以識別;
!important ,表示高優(yōu)先級,ie7及以上,firefox都支持,ie6認(rèn)識帶!important的樣式屬性,但不認(rèn)識!important的優(yōu)先級;
-webkit- ,針對safari,chrome瀏覽器的內(nèi)核CSS寫法
-moz-,針對firefox瀏覽器的內(nèi)核CSS寫法
-ms-,針對ie內(nèi)核的CSS寫法
-o-,針對Opera內(nèi)核的CSS寫法

4、以下工具/名詞是做什么的
  • 條件注釋
    IE中的條件注釋(Conditional comments)對IE的版本和IE非IE有優(yōu)秀的區(qū)分能力,是WEB設(shè)計(jì)中常用的hack方法。
    條件注釋只能用于IE5以上。
    如果你安裝了多個(gè)IE,條件注釋將會以最高版本的IE為標(biāo)準(zhǔn)。
    條件注釋的基本結(jié)構(gòu)和HTML的注釋()是一樣的。因此IE以外的瀏覽器將會把它們看作是普通的注釋而完全忽略它們。
    IE將會根據(jù)if條件來判斷是否如解析普通的頁面內(nèi)容一樣解析條件注釋里的內(nèi)容。
    條件注釋是一種安全的區(qū)分IE瀏覽器版本的語法,且被認(rèn)為是取代針對IE css hack的首選辦法。
寫法:










用于非 IE

  • IE Hack
    CSS Hack大致有3種表現(xiàn)形式, CSS屬性前綴法、選擇器前綴法以及IE條件注釋法(即HTML頭部引用if IE)Hack,實(shí)際項(xiàng)目中CSS Hack大部分是針對IE瀏覽器不同版本之間的表現(xiàn)差異而引入的。
  • js 能力檢測
    瀏覽器的能力檢測目標(biāo)不是檢測特定的瀏覽器,而是檢測瀏覽器的能力。這樣,只需要檢測瀏覽器是否支持特定的能力,就可以給出特定的解決方案。這一部分檢測是解決瀏覽器兼容問題的主要檢測。
  • html5shiv.js
    用于解決IE9以下版本瀏覽器對HTML5新增標(biāo)簽不識別,并導(dǎo)致CSS不起作用的問題。
    由于IE6/IE7/IE8還有很大一部分用戶,為了讓網(wǎng)站瀏覽者都能正常的訪問HTML5網(wǎng)站,解決方案就有下面使用Javascript來使不支持HTML5的瀏覽器支持HTML標(biāo)簽。目前大多網(wǎng)站采用的這種方式(Bootcss官方例子也是如此)。

原理:利用腳本document.createElement(“”)創(chuàng)建對應(yīng)的腳本,CSS選擇器便可正確應(yīng)用到該標(biāo)簽。使用:考慮到IE9是支持html5的,所以直接在HTML頁面的head標(biāo)簽中添加腳本引用即可

  • respond.js
    讓不支持css3 Media Query的瀏覽器包括IE6-IE8等其他瀏覽器支持查詢。
  • css reset
    將瀏覽器的默認(rèn)樣式全部去掉,就是通過重新定義標(biāo)簽樣式?!案采w”瀏覽器的CSS默認(rèn)屬性。
  • normalize.css
    normalize.css 是一個(gè)可定制的CSS文件,使瀏覽器呈現(xiàn)的所有元素,更一致和符合現(xiàn)代標(biāo)準(zhǔn)。它正是針對只需要統(tǒng)一的元素樣式。該項(xiàng)目依賴于研究瀏覽器默認(rèn)元素風(fēng)格之間的差異,精確定位需要重置的樣式。這是一個(gè)現(xiàn)代的,HTML5-ready 的CSS重置樣式集。
  • Modernizr
    Modernizr 是一個(gè) JavaScript 庫,用于檢測用戶瀏覽器的 HTML5 與 CSS3 特性。
    Modernizr 使你可以方便地為各種情況編寫 JavaScript 和 CSS,無論瀏覽器是否支持這些特性。這是處理漸進(jìn)增強(qiáng)的完美方案。
    工作原理
    Modernizr 會在頁面加載后立即檢測特性;然后創(chuàng)建一個(gè)包含檢測結(jié)果的 JavaScript 對象,同時(shí)在 html 元素加入方便你調(diào)整 CSS 的 class 名。
  • postCSS
    PostCSS 是使用 JS 插件來轉(zhuǎn)換 CSS 的工具,支持變量,混入,未來 CSS 語法,內(nèi)聯(lián)圖像等等。
    PostCSS 包括 CSS 解析器,CSS 節(jié)點(diǎn)樹 API,一個(gè)源映射生成器和一個(gè)節(jié)點(diǎn)樹 stringifier。
    PostCSS是CSS變成JavaScript的數(shù)據(jù),使它變成可操作。PostCSS是基于JavaScript插件,然后執(zhí)行代碼操作。PostCSS自身并不會改變CSS,它只是一種插件,為執(zhí)行任何的轉(zhuǎn)變鋪平道路。
5、一般在哪個(gè)網(wǎng)站查詢屬性兼容性?

can i ues http://caniuse.com/

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

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

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