2016/6/6
可以裝個虛擬機,用于調試IE的兼容
1.如何調試 IE 瀏覽器
- IE瀏覽器7以上+自帶的開發者工具,ie6可以用加border的方法
- 采用模擬器的方式去模不同版本下的IE瀏覽器,如ietester
- 通過安裝虛擬機的方式,安裝不同版本的IE的運行環境去達到調試IE瀏覽器的目的
2.什么是CSS hack?在 CSS 和 HTML里如何寫 hack?在 CSS 中 ie6、ie7的 hack 方式?
CSS hack由于不同廠商的瀏覽器,比如Internet Explorer,Safari,Mozilla Firefox,Chrome等,或者是同一廠商的瀏覽器的不同版本,如IE6和IE7,對CSS的解析認識不完全一樣,因此會導致生成的頁面效果不一樣,得不到我們所需要的頁面效果。這個時候我們就需要針對不同的瀏覽器去寫不同的CSS,讓它能夠同時兼容不同的瀏覽器,能在不同的瀏覽器中也能得到我們想要的頁面效果。 簡單的說,CSS hack的目的就是使你的CSS代碼兼容不同的瀏覽器。當然,我們也可以反過來利用CSS hack為不同版本的瀏覽器定制編寫不同的CSS效果。
CSS Hack大致有3種表現形式,CSS屬性前綴法、選擇器前綴法以及IE條件注釋法(即HTML頭部引用if IE)Hack,實際項目中CSS Hack大部分是針對IE瀏覽器不同版本之間的表現差異而引入的。
1.屬性前綴法(即類內部Hack):例如 IE6能識別下劃線""和星號" ",IE7能識別星號" ",但不能識別下劃線"",IE6~IE10都認識"\9",但firefox前述三個都不能認識
2.選擇器前綴法(即選擇器Hack):例如 IE6能識別html .class{},IE7能識別+html .class{}或者*:first-child+html .class{}
3.IE條件注釋法(即HTML條件注釋Hack):針對所有IE(注:IE10+已經不再支持條件注釋): ,針對IE6及以下版本: 。這類Hack不僅對CSS生效,對寫在判斷語句里面的所有代碼都會生效
<!-[if IE]>這段文字只是在IE瀏覽器下顯示<![endif]->
<!-[if IE6]>這段文字只是在IE6顯示器生效<![endif]->
<!-[if get IE6]>這段文字只是在IE6以上(包括)版本IE瀏覽器顯示<![endif]->
<!-[if !IE8]>這段文字在非IE瀏覽器下顯示<![endif]>
<!-[if ! IE]>這段文字只是在非IE瀏覽器下顯示<![endif]>
參考資料
3.列舉幾種 瀏覽器兼容問題
- hover IE6不支持,以上的IE只支持a標簽的hover
- display:inline-block ie67不支持。
- max-height,max-width等一系列,IE6不支持
- padding,margin在不同瀏覽器默認樣式有差異
- 在ie6下塊元素有浮動和橫向margin值,橫向的margin值會被放大成2倍,解決方法:display:inline
- 在ie6下父級有邊框的時候,子元素的margin值消失,解決方法:觸發haslayout
4.針對兼容、多瀏覽器覆蓋有什么看法?漸進增強和優雅降級是什么意思?
看法:對于兼容有有的放矢,分清主次,針對主流瀏覽器去開發,同時要兼顧用戶需求,遇到一個問題解決一個,先完成基本功能和樣式的實現,再完善細節。
優雅降級:在前面的開發中,先不用考慮一些低的版本的瀏覽器,等開發完成之后慢慢地去做一個適應,只要頁面還正常,不亂,看著還可以就OK了,沒必要去追求特別高的還原度。
漸進增強:先針對ie6去做開發,再對一些好的瀏覽器增加一些額外的一些效果,讓它看起來更好看一些。
5.reset.css和normalize.css分別是做什么的?為什么推薦使用 nomalize.css?
- reset.css:是用于去除瀏覽器預先給標簽設置的默認樣式。
- normalize.css:normalize.css是reset.css的改良版,他是在reset的基礎上進行改良避免誤傷,保留了一些有價值的默認樣式,還增加了其他功能,也沒有reset.css 的一些缺點。
- 為什么使用nomalize.css?
- Normalize.css 保護了有價值的默認值,這就意味著你不用再為所有公共的排版元素重新設置樣式。當一個元素在不同的瀏覽器中有不同的默認值時,Normalize.css會力求讓這些樣式保持一致并盡可能與現代標準相符合。
- Normalize.css 修復了瀏覽器的bug
- Normalize.css 不會讓你的調試工具變的雜亂
- Normalize.css 是模塊化的
- Normalize.css 擁有詳細的文檔
參考資料
6.IE盒模型和標準盒模型有什么區別? 怎樣使 IE678使用標準盒模型?box-sizing:border-box有什么作用
- IE盒模型:寬度=內容寬度+padding+邊框。
- 標準盒模型:寬度=內容寬度。
*要使ie6 7 8 使用標準盒模型:
(1)可以在開頭添加<!doctype html>來使用標準盒模型。
(2)box-sizing:border-box 使元素按照ie盒模型計算,寬度=border+padding+內容寬度。
7.在 ie 6, 7, 8中展示 盒模型、inline-block、max-width的區別
- IE6 inline-block、max-width完全失效
- IE7 inline-block完全失效 max-width 僅起一定作用
- IE8 兩者都能正常使用
老師,還沒有裝虛擬機~