任務(wù)13-瀏覽器兼容

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

  • IE8以上有開發(fā)者工具(高版本的IE開發(fā)者工具兼容模式可以往下選擇兼容不同版本),F(xiàn)12打開,如下圖:
Paste_Image.png
  • 也可以使用border: 1px solid red; outline: 1px solid red來快速幫組定位問題所在。
  • IETester瀏覽器測試工具,可以模擬IE6.7.8.9渲染網(wǎng)頁。注:搜索了一下都是2、3年前的文章了??赡懿皇呛軐嵱谩?/strong>
  • 安裝虛擬機(jī)(比較靠譜但是比較麻煩的方法。)

2.什么是CSS hack?在 CSS 和 HTML里如何寫 hack?在 CSS 中 ie6、ie7的 hack 方式?

注:搜索這個也是2、3年前的文章

  • 因為早期瀏覽器渲染代碼方式不同,瀏覽器廠商也不知一家,所以就出現(xiàn)了兼容問題。每個瀏覽器廠商都給自己設(shè)定了一個特別的符號,讓它們的瀏覽器能認(rèn)識這個符號后面的代碼,而其他瀏覽器對這個符號無視,對它后面的代碼也會忽略。CSS hack就是用來解決一些兼容問題的方式。

  • IE6、IE7 中寫CSS和HTML的hack:
    HTML中:
    1.注釋法:
    IE條件注釋是微軟從IE5開始就提供的一種非標(biāo)準(zhǔn)邏輯語句。比如針對所有IE:<!–[if IE]><!–您的代碼–><![endif]–>,針對IE7以下版本:<!–[if lt IE 7]><!–您的代碼–><![endif]–>,這類Hack不僅對CSS生效,對寫在判斷語句里面的所有代碼都 會生效。

CSS中:前綴法:
比如IE6能識別_和*,IE7能識別*,但不能識別_。
比如IE6能識別*html .class{},IE7能識別*+html .class{}或者*:first-child+html .class{}。


/* CSS屬性級Hack */ color:red; /* 所有瀏覽器可識別*/ _color:red; /* 僅IE6 識別 */ *color:red; /* IE6、IE7 識別 */ +color:red; /* IE6、IE7 識別 */ *+color:red; /* IE6、IE7 識別 */ [color:red; /* IE6、IE7 識別 */ color:red\9; /* IE6、IE7、IE8、IE9 識別 */ color:red\0; /* IE8、IE9 識別*/ color:red\9\0; /* 僅IE9識別 */ color:red \0; /* 僅IE9識別 */ color:red!important; /* IE6 不識別!important*/


/* CSS選擇符級Hack */ *html #demo { color:red;} /* 僅IE6 識別 */ *+html #demo { color:red;} /* 僅IE7 識別 */ body:nth-of-type(1) #demo { color:red;} /* IE9+、FF3.5+、Chrome、Safari、Opera 可以識別 */ head:first-child+body #demo { color:red; } /* IE7+、FF、Chrome、Safari、Opera 可以識別 */ :root #demo { color:red\9; } : /* 僅IE9識別 */


/* IE條件注釋Hack */


3.列舉幾種 瀏覽器兼容問題?

1. <!DOCTYPE HTML>聲明。

在IE6下如果沒有寫DOCTYPE聲明,瀏覽器將使用怪異模式渲染網(wǎng)頁。

2.各廠商的默認(rèn)margin和padding值不同。

ie:


Paste_Image.png

chrome:


Paste_Image.png

解決方法:*{margin:0;padding:0;}

3.inline-block;

在IE下只能讓它變成inline元素,然后觸發(fā)塊元素的 layout,使它看起來像inline-block;
display: inline-block;*display: inline;zoom: 1;

4.橫向雙倍外間距:
  • 當(dāng)在IE6下浮動元素后,會出現(xiàn)橫向雙倍margin。
    解決辦法: 在float標(biāo)簽的樣式控制中加入display:inline

IE6兼容問題匯總


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

  • 兼容、多瀏覽器覆蓋只是瀏覽器發(fā)展的一個過程,我們處在這個過程中,從瀏覽器的發(fā)展歷史,早期的各廠商渲染方式不一到現(xiàn)在的w3c規(guī)范,瀏覽器的發(fā)展始終要規(guī)范化,這是趨勢,也更有利于開發(fā)環(huán)境和用戶體驗。目前針對兼容,多瀏覽器覆蓋是不可避免的,畢竟各廠商瀏覽器都有自己的用戶群體,而網(wǎng)頁是要給所有人看的。
  • 漸進(jìn)增強:
    針對低版本瀏覽器進(jìn)行構(gòu)建頁面,保證最基本的功能,然后在針對高級瀏覽器進(jìn)行效果、交互等改進(jìn)和追加功能達(dá)到更好的用戶體驗。
  • 優(yōu)雅降級:
    一開始就針對高版本瀏覽器進(jìn)行頁面構(gòu)建,然后再針對低版本瀏覽器進(jìn)行兼容。

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

  • reset.css:是將所有的瀏覽器的自帶樣式重置掉,這樣更易于保持各瀏覽器渲染的一致性。
  • normalize.css:它正是針對只需要統(tǒng)一的元素樣式。該項目依賴于研究瀏覽器默認(rèn)元素風(fēng)格之間的差異,精確定位需要重置的樣式。
  • normalize.css優(yōu)勢:

? 1. Normalize.css 保護(hù)了有價值的默認(rèn)值
Reset通過為幾乎所有的元素施加默認(rèn)樣式,強行使得元素有相同的視覺效果。 相比之下,Normalize.css保持了許多默認(rèn)的瀏覽器樣式。 這就意味著你不用再為所有公共的排版元素重新設(shè)置樣式。 當(dāng)一個元素在不同的瀏覽器中有不同的默認(rèn)值時,Normalize.css會力求讓這些樣式保持一致并盡可能與現(xiàn)代標(biāo)準(zhǔn)相符合。
? 2. Normalize.css 修復(fù)了瀏覽器的bug
它修復(fù)了常見的桌面端和移動端瀏覽器的bug。這往往超出了Reset所能做到的范疇。 關(guān)于這一點,Normalize.css修復(fù)的問題包含了HTML5元素的顯示設(shè)置、預(yù)格式化文字的font-size問題、在IE9中SVG的溢出、許多出現(xiàn)在各瀏覽器和操作系統(tǒng)中的與表單相關(guān)的bug。
? 3. Normalize.css 不會讓你的調(diào)試工具變的雜亂
使用Reset最讓人困擾的地方莫過于在瀏覽器調(diào)試工具中大段大段的繼承鏈,如下圖所示。在Normalize.css中就不會有這樣的問題,因為在我們的準(zhǔn)則中對多選擇器的使用時非常謹(jǐn)慎的,我們僅會有目的地對目標(biāo)元素設(shè)置樣式。
? 4. Normalize.css 是模塊化的
這個項目已經(jīng)被拆分為多個相關(guān)卻又獨立的部分,這使得你能夠很容易也很清楚地知道哪些元素被設(shè)置了特定的值。因此這能讓你自己選擇性地移除掉某些永遠(yuǎn)不會用到部分(比如表單的一般化)。
? 5. Normalize.css 擁有詳細(xì)的文檔

Normalize.css的代碼基于詳細(xì)而全面的跨瀏覽器研究與測試。這個文件中擁有詳細(xì)的代碼說明并在Github Wiki中有進(jìn)一步的說明。這意味著你可以找到每一行代碼具體完成了什么工作、為什么要寫這句代碼、瀏覽器之間的差異,并且你可以更容易地進(jìn)行自己的測試。 這個項目的目標(biāo)是幫助人們了解瀏覽器默認(rèn)是如何渲染元素的,同時也讓人們很容易地明白如何改進(jìn)瀏覽器渲染。


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

1. 回到之前的盒模型,如下圖:
Paste_Image.png
可以看出:
  • IE盒模型:width=border+padding+content。
  • W3C盒模型:width=content.
2.IE678使用標(biāo)準(zhǔn)盒模型:
  • 在html最前面添加<!DOCTYPE html>聲明。
3.sizing:border-box作用:
  • 使盒模型設(shè)定成IE盒模型的方式來計算寬度。
Paste_Image.png

1.實操安裝虛擬機(jī)

Paste_Image.png

2.在 ie 6, 7, 8中展示 盒模型、inline-block、max-width的區(qū)別。

  • 展示代碼:
  <!DOCTYPE html>
  <html lang="en">
  <head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style media="screen">
 *{margin:0;padding:0;}
 .box-mode{
 border:1px solid pink;
 height: 100px;
 width: 100px;
 background: #eee;
 padding:20px;
 margin:20px;
 }
 .inline-block{
 border:1px solid pink;
 height: 100px;
 width: 100px;
 background: #333;
 display: inline-block;
 }
 .max-width{
 border:1px solid;
 max-width:100px;
 height: 50px;
 background: yellow;
 }
 </style>
 </head>
 <body>
   <div class="box-mode"></div>
   <div class="inline-block"></div>
   <div class="inline-block"></div>
   <div class="max-width"></div>
 </body>
 </html>
chrome V52:
Paste_Image.png
IE6:
Paste_Image.png
IE7:
Paste_Image.png
IE8:
Paste_Image.png
總結(jié):
  • 盒模型因為<!DOCTYPE html>聲明的緣故所以W3C標(biāo)準(zhǔn)盒模型渲染,三張圖無差異。
  • inline-block:從上圖看出IE6\7不支持,IE8正常顯示。
  • max-width:從上圖看出IE6不支持,IE7/8支持。

本文版權(quán)歸多彩和饑人谷所有,轉(zhuǎn)載請注明來源!??!

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

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

  • 一、問答部分 1. 如何調(diào)試 IE 瀏覽器 IE7及以上版本有調(diào)試臺,可以按F12啟動。Paste_Image.p...
    _hello__world_閱讀 566評論 0 1
  • 1.如何調(diào)試IE瀏覽器? 對于高版本的IE瀏覽器(IE7以上)可以使用IE自帶的開發(fā)者工具,如下圖: 使用一些集成...
    饑人谷_任磊閱讀 454評論 0 1
  • 一、問答部分: 1. 如何調(diào)試 IE 瀏覽器? 如果是IE7版本以上可以使用自帶的開發(fā)者工具,按F12,即可打開:...
    小木子2016閱讀 630評論 0 0
  • 1 . 如何調(diào)試 IE 瀏覽器 使用高版本的IE瀏覽器控制臺。 如果某個元素不見了,可以使用如下方法:a.給該元素...
    osborne閱讀 454評論 0 1
  • 1.如何調(diào)試 IE 瀏覽器? IE瀏覽器7+自帶的開發(fā)者工具,IE6可以采用border的方法或是下載virtur...
    mint9602閱讀 302評論 0 0

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