1 .如何調試 IE 瀏覽器.
- IE7以上可以使用瀏覽器自帶的開發(fā)者工具伍宦,IE6可以使用加邊框的直觀方式進行調試给猾;
- 使用模擬器模擬不同版本的IE瀏覽器,如IEtester或者Test IE先朦、Edge自帶模擬器等缰冤;
- 安裝虛擬機犬缨,在虛擬機內安裝多個系統(tǒng)搭配不同版本IE瀏覽器來進行調試;
2.什么是CSS hack锋谐?在 CSS 和 HTML里如何寫 hack遍尺?在 CSS 中 ie6、ie7的 hack 方式涮拗?
- 針對不同廠商瀏覽器或者同一瀏覽器不同版本之中的bug乾戏,寫的一些非常規(guī)的樣式來達到想要表現(xiàn)的效果的過程叫css hack。
CSS Hack大致有3種表現(xiàn)形式:CSS屬性前綴法三热、選擇器前綴法鼓择、IE條件注釋法(即HTML頭部引用if IE)
Hack,實際項目中CSS Hack大部分是針對IE瀏覽器不同版本之間的表現(xiàn)差異而引入的就漾。
-
屬性前綴法(即類內部Hack):例如 IE6能識別下劃線""和星號" * "呐能,IE7能識別星號" * ",但不能識別下劃線""抑堡,IE6~IE10都認識"\9"摆出,但firefox前述三個都不能認識。
background:black; /* for all browsers */ _background:red; /* for ie6*/ *background:green; /* for ie6~7 */ background:blue\9; /* for ie6~10 */
-
選擇器前綴法(即選擇器Hack):例如 IE6能識別html .class{}首妖,IE7能識別+html .class{}或者*:first-child+html .class{}偎漫。
*html .class{}/* for IE6 */ *+html .class{}/* for IE7 */ *:first-child+html .class{}/* for IE7 */
IE條件注釋法(即HTML條件注釋Hack):針對所有IE(注:IE10+已經不再支持條件注釋): ,針對IE6及以下版本: 有缆。這類Hack不僅對CSS生效象踊,對寫在判斷語句里面的所有代碼都會生效。
只在IE下生效
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="ie.css">
<![endif]-->
只在IE6下生效
<!--[if IE 6]>
<link rel="stylesheet"type="text/css"href="ie6.css">
<![endif]-->
只在IE6以上版本生效
<!--[if gte IE 6]>
這段文字只在IE6以上(包括)版本IE瀏覽器顯示
<![endif]-->
非IE瀏覽器生效
<!--[if !IE]> 這段文字只在非IE瀏覽器顯示
<![endif]-->```
----
3.列舉幾種 瀏覽器兼容問題.
* ` display:inline-block;/*IE8以下不支持*/`
方法:添加`display:inline`盡可能正常展示頁面功能
* `opacity:0.4;/*IE8部分支持棚壁,IE8以下不支持*/`
方法:添加`filter:alpha(opacity=50);`設置
[【CSS】最全的CSS瀏覽器兼容問題](https://www.douban.com/group/topic/4629864/)
----
4.針對兼容杯矩、多瀏覽器覆蓋有什么看法?**漸進增強**和**優(yōu)雅降級**是什么意思袖外?
* 分析需求史隆,對于上級或客戶需求兼容的低版本瀏覽器需全部兼容;
* 對于低版本只要大局顯示不影響曼验,功能能實現(xiàn)逆害,可以不刻意追求美觀上樣式的一致;
* 分析瀏覽器占用率蚣驼,一般低于一定占用率的瀏覽器可以選擇不兼容魄幕;
①. **漸進增強:**
* 一開始只構建站點的最少特性,然后不斷針對各瀏覽器追加功能;
* 從被所有瀏覽器支持的基本功能開始颖杏,逐步地添加那些只有新式瀏覽器才支持的功能纯陨。漸進增強是值得所有開發(fā)者采用的做法。漸進增強方案并不假定所有用戶都支持javascript,而總是提供一種候補方法翼抠,確保用戶可以訪問(主要的)內容;
* 使用漸進增強時咙轩,無需為了一個已成型的網站在舊式瀏覽器下正常工作而做逆向工程。首先阴颖,只需要為所有的設備和瀏覽器準備好清晰且語義化的HTML以及完善的內容活喊,然后再以無侵入(unobtrusive)的方式向頁面增加無害于基礎瀏覽器的額外樣式和功能。當瀏覽器升級時量愧,它們會自動地呈現(xiàn)出來并發(fā)揮作用;
②. **優(yōu)雅降級:**
* 一開始就構建站點的完整功能钾菊,然后針對瀏覽器測試和修復;
* 使用優(yōu)雅降級方案,Web站點在所有新式瀏覽器中都能正常工作偎肃,如果用戶使用的是老式瀏覽器煞烫,則代碼會檢查以確認它們是否能正常工作。由于IE獨特的盒模型布局問題累颂,絕大多數(shù)Web設計師和開發(fā)者都通過專門的樣式表或針對不同版本的IE的hack實踐過優(yōu)雅降級了滞详;
* 使用優(yōu)雅降級技術時,你必須首先完整的實現(xiàn)了網站紊馏,其中包括所有的功能和效果料饥。然后再為那些無法支持所有功能的瀏覽器增加候選方案,使之在舊式瀏覽器上以某種形式降級體驗卻不至于完全失效;
----
5.`reset.css`和normalize.css分別是做什么的朱监?為什么推薦使用` nomalize.css`?
**Reset.css: **統(tǒng)一各個版本瀏覽器默認Html標簽樣式稀火,直接重置所有原瀏覽器默認樣式,再添加統(tǒng)一的標準默認樣式赌朋;
**normalize.css:**統(tǒng)一各個版本瀏覽器默認Html標簽樣式,只重置統(tǒng)一瀏覽器默認樣式中有差異的部分樣式篇裁;
推薦使用Normalize的好處:
* Normalize.css 保護了有價值的默認值沛慢;
* Normalize.css 修復了瀏覽器的bug
* Normalize.css 不會讓你的調試工具變的雜亂;
* Normalize.css 是模塊化的达布;
* Normalize.css 擁有詳細的文檔团甲。
[Normalize.Css介紹和使用,Normalize與CSS Reset的區(qū)別](http://www.yxxme.com/1034.html)
----
6.IE盒模型和標準盒模型有什么區(qū)別? 怎樣使 IE678使用標準盒模型?`box-sizing:border-box`有什么作用?
![IE盒子](http://upload-images.jianshu.io/upload_images/1043191-edad806a8791b5e9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
![標準盒模型](http://upload-images.jianshu.io/upload_images/1043191-28f38945d9983944.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
***使用IE6黍聂、7躺苦、8使用標準盒模型:***
* 添加聲明`<!DOCTYPE html>
`
***box-sizing:border-box作用:***
* 為元素設定的寬度和高度決定了元素的邊框盒。即使盒子模型設定為IE盒模型产还,設定寬高包含內邊距和邊框和內容寬度匹厘;
----
本文版權歸作者饑人谷_Josh和饑人谷所有,轉載請注明來源
----