PC端
(一)html部分
1.H5新標(biāo)簽在IE9以下的瀏覽器識(shí)別
<!--[if lt IE 9]>
<script type="text/javascript" src="js/html5shiv.js"></script>
<![endif]-->
html5shiv.js下載地址
https://github.com/aFarkas/html5shiv/releases
2.ul標(biāo)簽內(nèi)外邊距問題ul標(biāo)簽在IE6\IE7中吱殉,有個(gè)默認(rèn)的外邊距,但是在IE8以上及其他瀏覽器中有個(gè)默認(rèn)的內(nèi)邊距片择。解決方法:統(tǒng)一設(shè)置ul的內(nèi)外邊距為0
(二)CSS樣式的兼容性
1.css的hack問題:主要針對(duì)IE的不同版本,不同的瀏覽器的寫法不同
IE的條件注釋hack:
<!--[if IE 6]>此處內(nèi)容只有IE6.0可見<![endif]-->
<!--[if IE 7]>此處內(nèi)容只有IE7.0可見<![endif]-->
2.IE6雙邊距問題:IE6在浮動(dòng)后,又有橫向的margin新锈,此時(shí),該元素的外邊距是其值的2倍
解決辦法:display:block;
3.IE6下圖片的下方有空隙
解決方法:給img設(shè)置display:block;
4.IE6下兩個(gè)float之間會(huì)有個(gè)3px的bug
解決辦法:給右邊的元素也設(shè)置float:left;
5.IE6下沒有min-width的概念眶熬,其默認(rèn)的width就是min-width
6.IE6下在使用margin:0 auto;無法使其居中
解決辦法:為其父容器設(shè)置text-align:center;
7.被點(diǎn)擊過后的超鏈接不再具有hover和active屬性
解決辦法:按lvha的順序書寫css樣式妹笆,
":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)墩新;
8.在使用絕對(duì)定位或者相對(duì)定位后,IE中設(shè)置z-index失效窟坐,原因是因?yàn)槠湓匾蕾囉诟冈氐膠-index海渊,但是父元素默認(rèn)為0, 子高父低哲鸳,所以不會(huì)改變顯示的順序
9.IE6下無法設(shè)置1px的行高臣疑,原因是由其默認(rèn)行高引起的
解決辦法:為期設(shè)置overflow:hidden;或者line-height:1px;
(三)JavaScript的兼容性
1.標(biāo)準(zhǔn)的事件綁定方法函數(shù)為addEventListener,但I(xiàn)E下是attachEvent徙菠;
2.事件的捕獲方式不一致讯沈,標(biāo)準(zhǔn)瀏覽器是由外至內(nèi),而IE是由內(nèi)到外懒豹,但是最后的結(jié)果是將IE的標(biāo)準(zhǔn)定為標(biāo)準(zhǔn)
3.window.event獲取的芙盘。并且獲取目標(biāo)元素的方法也不同,標(biāo)準(zhǔn)瀏覽器是event.target脸秽,而IE下是event.srcElement
4.在低版本的IE中獲取的日期處理函數(shù)的值不是與1900的差值儒老,但是在高版本的IE中和標(biāo)準(zhǔn)瀏覽器保持了一致,獲取的值也是與1900的差值记餐。
比如:var year= new Date().getYear();
5.ajax的實(shí)現(xiàn)方式不同驮樊,這個(gè)我所理解的是獲取XMLHttpRequest的不同,IE下是activeXObject
6.IE中不能操作tr的innerHtml7.獲得DOM節(jié)點(diǎn)的父節(jié)點(diǎn)片酝、子節(jié)點(diǎn)的方式不同
其他瀏覽器:parentNode parentNode.childNodes
IE:parentElement parentElement.children
移動(dòng)端
1.當(dāng)使用transform:translate3d(-50%,-50%,0)居中彈框(div)時(shí)囚衔,在pc端,內(nèi)部的文字會(huì)模糊雕沿。
解決辦法:給body定義樣式
body{
font-family: Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,SimSun,sans-serif;
}
2.用position:absolute/fixed;把一個(gè)按鈕固定在頁(yè)面的底部练湿,在android系統(tǒng)中,當(dāng)調(diào)用輸入法時(shí)审轮,該按鈕會(huì)被頂起
解決辦法:使用媒體查詢@media screen and (max-width:400px){}當(dāng)頁(yè)面高度小于某一個(gè)值時(shí)蹂风,給元素一個(gè)top值
3.IOS系統(tǒng)調(diào)用第三方輸入法時(shí)手负,系統(tǒng)無法監(jiān)測(cè)到input的input础废、focus冗茸、change、blur事件
解決辦法:計(jì)算input值的length的長(zhǎng)度榴捡,判斷input的值是否變化
4.不同瀏覽器默認(rèn)margin杈女,padding不同。
*{margin:0;padding:0;}
5.不同瀏覽器的最小字體不同,有的是10px达椰,有的是12px
解決辦法:設(shè)置字體時(shí)翰蠢,不要小于12px,如果一定要小于12px,使用transform:sacle()進(jìn)行縮放
6.透明度opacity
解決辦法:IE8 以及更早的版本支持替代的 filter 屬性砰碴。例如:filter:Alpha(opacity=50)
7.文字兩端居中text-align:justify躏筏;text-align-last:just;在移動(dòng)端不起作用
解決辦法:使用 呈枉;代替空格