摘要:一兼容性新標(biāo)簽在低于的瀏覽器中的識(shí)別解決以下瀏覽器對(duì)新增標(biāo)簽的不識(shí)別,并導(dǎo)致不起作用的問題。目前流行的庫有以及,它們都可以修正很多已知的瀏覽器之間的差異性。
問題:經(jīng)常遇到的瀏覽器的兼容性的情況、解決方法?
思路:首先明確項(xiàng)目要兼容哪些瀏覽器的最低版本,然后考慮到CSS樣式和JavaScript在這些瀏覽器的兼容性。
一、HTML 兼容性
??1.H5新標(biāo)簽在低于IE9的瀏覽器中的識(shí)別
??html5shiv.min.js:解決ie9以下瀏覽器對(duì)html5新增標(biāo)簽的不識(shí)別,并導(dǎo)致CSS不起作用的問題。
??respond.min.js: 讓不支持css3 Media Query的瀏覽器包括IE6-IE8等其他瀏覽器支持查詢。
??
??引入respond.min.js,但要在css的后面(越早引入越好,在ie下面看到頁面閃屏的概率就越低,因?yàn)樽畛鮟ss會(huì)先渲染出來,如果respond.js加載得很后面,這時(shí)重新根據(jù)media query解析出來的css會(huì)再改變一次頁面的布局等,所以看起來有閃屏的現(xiàn)象)。
??2.不同瀏覽器的標(biāo)簽?zāi)J(rèn)的內(nèi)/外補(bǔ)丁不同
??雖然這些年來隨著瀏覽器的迅速發(fā)展與規(guī)范的統(tǒng)一,瀏覽器特性碎片化的情況有所改善,但是在不同的瀏覽器之間仍然存在著很多的行為差異。而解決這種問題的最好的辦法就是使用某個(gè)CSS Reset來為所有的元素設(shè)置統(tǒng)一的樣式,保證你能在相對(duì)統(tǒng)一干凈的樣式表的基礎(chǔ)上開始工作。目前流行的Reset庫有 normalize.css, minireset 以及 ress ,它們都可以修正很多已知的瀏覽器之間的差異性。而如果你不打算用某個(gè)外在的庫,那么可以使用如下的基本規(guī)則:
*{
??margin: 0;
??padding: 0;
??box-sizing: border-box;
}
??*號(hào)這樣一個(gè)通用符在編寫代碼的時(shí)候是快,但如果網(wǎng)站很大,CSS樣式表文件很大,這樣寫的話,他會(huì)把所有的標(biāo)簽都初始化一遍,這樣就大大的加強(qiáng)了網(wǎng)站運(yùn)行的負(fù)載,會(huì)使網(wǎng)站加載的時(shí)候需要很長一段時(shí)間。
二、CSS 兼容性
??1.IE的條件注釋hack:
??
??
??2.IE 屬性過濾器(較為常用的hack方法)
??針對(duì)不同的 IE 瀏覽器,可以使用不同的字符來對(duì)特定的版本的 IE 瀏覽器進(jìn)行樣式控制。
??3.瀏覽器 CSS 兼容前綴
??使用特定的瀏覽器前綴是CSS開發(fā)中常見的工作之一,不同的瀏覽器、不同的屬性對(duì)于前綴的要求也不一樣,這就使得我們無法在編碼過程中記住所有的前綴規(guī)則。并且在寫樣式代碼的時(shí)候還需要加上特定的瀏覽器前綴支持也是個(gè)麻煩活,幸虧現(xiàn)在也是有很多工具可以輔助我們進(jìn)行這樣的開發(fā):
Online tools: Autoprefixer
Text editor plugins: Sublime Text, Atom
Libraries: Autoprefixer (PostCSS)
??4.a 標(biāo)簽的幾種 CSS 狀態(tài)的順序
??很多人在寫 a 標(biāo)簽的樣式,會(huì)疑惑為什么寫的樣式?jīng)]有效果,或者點(diǎn)擊超鏈接后,hover、active 樣式?jīng)]有效果,其實(shí)只是寫的樣式被覆蓋了。
??正確順序:L-V-H-A : a:link, a:visited, a:hover, a:active {}
?? ":link": a標(biāo)簽還未被訪問的狀態(tài);
?? ":visited": a標(biāo)簽已被訪問過的狀態(tài);
?? ":hover": 鼠標(biāo)懸停在a標(biāo)簽上的狀態(tài);
?? ":active": a標(biāo)簽被鼠標(biāo)按著時(shí)的狀態(tài);
??5.IE6 雙倍邊距的問題
??在 ie6 中設(shè)置浮動(dòng),同時(shí)又設(shè)置 margin,會(huì)出現(xiàn)雙倍邊距的問題
??解決方法:display: inline;
??6.透明度的兼容CSS設(shè)置
??IE用 filter:alpha(opacity=60),而其他主流瀏覽器用 opacity:0.6;
??三、JavaScript的兼容性 | ||
---|---|---|
兼容性對(duì)象 | 一般瀏覽器 | IE |
綁定和刪除事件處理程序 | addEventListener removeEventListener | attachEvent detachEvent |
獲取事件的目標(biāo) | event.target | event.srcElement |
阻止事件默認(rèn)行為 | event.returnValue | event.preventDefault |
停止事件冒泡 | stopPropagation | cancelBubble |
創(chuàng)建XHR對(duì)象 | XMLHttpRequest構(gòu)造函數(shù) | activeXObject |
參考文章:
bootstrap的其他CDN地址
respondjs實(shí)現(xiàn)思路
20個(gè)編寫現(xiàn)代CSS代碼的建議
瀏覽器兼容性問題解決方案 · 總結(jié)
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/52944.html
摘要:對(duì)瀏覽器兼容問題,一般分,,兼容,兼容。特別是增加了許多新標(biāo)簽,低版本瀏覽器會(huì)存在不兼容的情況。出現(xiàn)這個(gè)問題的原因是之前的瀏覽器都會(huì)給標(biāo)簽一個(gè)最小默認(rèn)的行高的高度。 **我所說的兼容性問題,主要是說IE與幾個(gè)主流瀏覽器如firefox,google等。而對(duì)IE瀏覽器來說,IE7又是個(gè)跨度,因?yàn)橹暗陌姹靖律趼?,bug甚多。從IE8開始,IE瀏覽器漸漸遵循標(biāo)準(zhǔn),到IE9后由于大家都一致...
摘要:瀏覽器兼容問題四行內(nèi)屬性標(biāo)簽,設(shè)置后采用布局,又有橫行的的情況,間距問題癥狀里的間距比超過設(shè)置的間距碰到幾率解決方案在后面加入備注行內(nèi)屬性標(biāo)簽,為了設(shè)置寬高,我們需要設(shè)置除了標(biāo)簽比較特殊。 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)丁和內(nèi)補(bǔ)丁不同問題癥狀:隨便寫幾個(gè)標(biāo)簽,不加樣式控制的情況下,各自的margin 和padding差異較大。碰到頻率:100%解決方案:CSS里 *...
摘要:瀏覽器兼容問題四行內(nèi)屬性標(biāo)簽,設(shè)置后采用布局,又有橫行的的情況,間距問題癥狀里的間距比超過設(shè)置的間距碰到幾率解決方案在后面加入備注行內(nèi)屬性標(biāo)簽,為了設(shè)置寬高,我們需要設(shè)置除了標(biāo)簽比較特殊。 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)丁和內(nèi)補(bǔ)丁不同問題癥狀:隨便寫幾個(gè)標(biāo)簽,不加樣式控制的情況下,各自的margin 和padding差異較大。碰到頻率:100%解決方案:CSS里 *...
摘要:瀏覽器兼容問題四行內(nèi)屬性標(biāo)簽,設(shè)置后采用布局,又有橫行的的情況,間距問題癥狀里的間距比超過設(shè)置的間距碰到幾率解決方案在后面加入備注行內(nèi)屬性標(biāo)簽,為了設(shè)置寬高,我們需要設(shè)置除了標(biāo)簽比較特殊。 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)丁和內(nèi)補(bǔ)丁不同問題癥狀:隨便寫幾個(gè)標(biāo)簽,不加樣式控制的情況下,各自的margin 和padding差異較大。碰到頻率:100%解決方案:CSS里 *...
摘要:個(gè)人認(rèn)為兼容性的問題也是對(duì)這三個(gè)方面進(jìn)行處理。能力檢測(cè)需要注意兩點(diǎn)先檢測(cè)達(dá)成目的的最常用的特性,可以保證代碼最優(yōu)化,并避免檢測(cè)多個(gè)條件必須測(cè)試實(shí)際要是用到的特性這些就是小可對(duì)兼容性的理解,有不對(duì)的希望各位朋友指正探討,嘻嘻 這里和朋友們簡單探討一下個(gè)人對(duì)于前端兼容性的一些理解: 在項(xiàng)目中,前端主要處理html,css,javaScript代碼,當(dāng)然還有可能接觸到razor等渲染引擎方面...
摘要:個(gè)人認(rèn)為兼容性的問題也是對(duì)這三個(gè)方面進(jìn)行處理。能力檢測(cè)需要注意兩點(diǎn)先檢測(cè)達(dá)成目的的最常用的特性,可以保證代碼最優(yōu)化,并避免檢測(cè)多個(gè)條件必須測(cè)試實(shí)際要是用到的特性這些就是小可對(duì)兼容性的理解,有不對(duì)的希望各位朋友指正探討,嘻嘻 這里和朋友們簡單探討一下個(gè)人對(duì)于前端兼容性的一些理解: 在項(xiàng)目中,前端主要處理html,css,javaScript代碼,當(dāng)然還有可能接觸到razor等渲染引擎方面...
閱讀 1136·2021-11-24 09:38
閱讀 3243·2021-11-19 09:56
閱讀 2965·2021-11-18 10:02
閱讀 735·2019-08-29 12:50
閱讀 2572·2019-08-28 18:30
閱讀 867·2019-08-28 18:10
閱讀 3675·2019-08-26 11:36
閱讀 2650·2019-08-23 18:23