兼容性/css hack/normalize.css

1.如何調(diào)試 IE 瀏覽器

  • 使用高版本IE的控制臺(tái)(IE8+)
  • border: 1px solid red; 或outline: 1px solid red;(outline的好處是不占寬度,但有些IE6/7不支持)
  • 在瀏覽器地址欄輸入javascript:alert(document.get…),
    如:javascript:alert(document.getElementsByTagName("div")[0].style.border="1px solid red")

2.什么是CSS hack?在 CSS 和 HTML里如何寫(xiě) hack?在 CSS 中 IE 7、IE 8的 hack 方式?

不同的瀏覽器對(duì)css的解析方式不一樣,會(huì)導(dǎo)致頁(yè)面在不同瀏覽器下表現(xiàn)不一致,針對(duì)不同的瀏覽器寫(xiě)不同的css樣式,使得頁(yè)面最終在不同瀏覽器表現(xiàn)大體相同,這就叫css hack。

  • css 中寫(xiě)hack的方式:屬性加前綴。
    下劃線:如.selector { _color: red; } ,IE6能識(shí)別,IE7不能識(shí)別;
    星號(hào):如 .selector { *color: red; } ,IE6和IE7都能識(shí)別;
    \9:如.selector { color: red\9; } ,IE6/7/8都能識(shí)別;
  • html中寫(xiě)hack:添加條件注釋。(IE10開(kāi)始不支持cc注釋了。)
    如:下面的條件注釋表示IE8及以下將應(yīng)用ie8.css樣式。
<!--[if lte IE 8]>  
        <link rel="stylesheet" href="ie8.css">
    <![endif]-->

3.列舉幾種 瀏覽器兼容問(wèn)題

  • IE6/7只支持inline轉(zhuǎn)換成inline-block,不支持block轉(zhuǎn)換成inline-block
    解決方法:.sellector { display:inline-block; *zoom:1; *display:inline;}

  • IE6/7只支持a標(biāo)簽使用hover,不支持其他標(biāo)簽使用hover。

  • IE6/7不支持最大最小寬高

4.針對(duì)兼容、多瀏覽器覆蓋有什么看法?漸進(jìn)增強(qiáng)優(yōu)雅降級(jí)是什么意思?

  • 在開(kāi)發(fā)網(wǎng)頁(yè)的時(shí)候,不可能做到所有的瀏覽器都兼容,而應(yīng)該根據(jù)瀏覽器市場(chǎng)占有率,兼容主流、淘汰末流。而且并不需要頁(yè)面在各個(gè)瀏覽器上表現(xiàn)效果都一致,對(duì)于高級(jí)瀏覽器功能全開(kāi),提供最好的用戶體驗(yàn)。對(duì)于低級(jí)瀏覽器頁(yè)面展示效果可以降低標(biāo)準(zhǔn)。
  • 漸進(jìn)增強(qiáng):先兼容低版本瀏覽器使其實(shí)現(xiàn)基本的功能,再對(duì)高級(jí)瀏覽器進(jìn)行效果、交互等改進(jìn)和追加功能。
  • 優(yōu)雅降級(jí):一開(kāi)始就針對(duì)高版本瀏覽器進(jìn)行頁(yè)面構(gòu)建,然后再針對(duì)低版本瀏覽器進(jìn)行兼容。

5.reset.css和normalize.css分別是做什么的?為什么推薦使用 normalize.css?

兩者都是全局樣式重置,reset.css相對(duì)暴力,不管你有沒(méi)有用,統(tǒng)統(tǒng)重置成一樣的效果,且影響的范圍很大,講求跨瀏覽器的一致性。normalize 相對(duì)平和,注重通用的方案,重置掉該重置的樣式,保留有用的 瀏覽器默認(rèn)樣式,同時(shí)進(jìn)行一些 bug 的修復(fù)。這點(diǎn)是 reset.css 所缺乏的,也是推薦使用normalize.css的原因。

6.IE盒模型和標(biāo)準(zhǔn)盒模型有什么區(qū)別? 怎樣使 IE7、8使用標(biāo)準(zhǔn)盒模型?box-sizing:border-box有什么作用?

IE盒模型:width=內(nèi)容寬度+border寬度+兩側(cè)內(nèi)邊距寬度;
標(biāo)準(zhǔn)盒模型:width=內(nèi)容寬度;
box-sizing:border-box,聲明盒子遵從IE盒模型規(guī)則;

7.在 IE 7、8 中展示 盒模型、inline-block、max-width的區(qū)別

代碼

  • 沒(méi)寫(xiě)doctype聲明的情況下:IE7/8中表現(xiàn)一樣,盒模型是IE盒模型,inline-block都不生效,max-width不起作用


  • 寫(xiě)了doctype聲明的情況下:盒模型都是按照標(biāo)準(zhǔn)盒模型解析的,inline-block在IE8下有效,在IE7下依然無(wú)效,max-width都起作用。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容