網(wǎng)站建設(shè)必備:如何做到網(wǎng)站瀏覽器兼容?
為了能讓自己的網(wǎng)站設(shè)計(jì)正常的運(yùn)行于各種瀏覽器平臺(tái),建設(shè)網(wǎng)站時(shí)程序員都會(huì)裝有多款的瀏覽器,來(lái)測(cè)試網(wǎng)站的兼容,如果有某種瀏覽器不能正常顯示,就意味著需要調(diào)整了。
那么問(wèn)題來(lái)了,全球這么多瀏覽器,都要做兼容嗎?
目前全球市面的上瀏覽器非常多,也許足有100多種,但我們?cè)诰W(wǎng)頁(yè)制作過(guò)程中,只需要對(duì)主流瀏覽器進(jìn)行兼容測(cè)試。這包括:IE、火狐(Firefox)、谷歌(Chrome)、蘋(píng)果(Safari)、Opera等幾款全球應(yīng)用范圍最廣的瀏覽器。
一、常見(jiàn)的兼容性問(wèn)題
1.BUG:不同瀏覽器標(biāo)簽?zāi)J(rèn)的margin和padding不同。
Hack:css里增加通配符*{margin:0;padding:0}
2.BUG:圖片默認(rèn)又間距。
Hack:使用float為img布局
3.BUG:當(dāng)標(biāo)簽的高度設(shè)置小于10px,在IE6、IE7中會(huì)超出自己設(shè)置的高度
Hack:超出高度的標(biāo)簽設(shè)置overflow:hidden,或者設(shè)置line-height的值 小于你的設(shè)置高度
4.BUG:IE9以下瀏覽器不能使用opacity
Hack:filter:alfha(opacity=50) 備注:這里面的opacity的值取值范圍 (1-100),相當(dāng)于正常設(shè)置opacity:0.5。
5.BUG:IE與寬度和高度的問(wèn)題。(IE不認(rèn)得min-這個(gè)定義,但實(shí)際上它把正常的width和height當(dāng)作有min的情況來(lái)使。如果只用寬度和高度,正常的瀏覽 器里這兩個(gè)值就不會(huì)變,如果只用min-width和min-height的話,IE下面根本等于沒(méi)有設(shè)置寬度和高度。在設(shè)置背景圖片的時(shí)候會(huì)用到)
Hack:#box{width: 80px;height: 35px;}html>body #box{width: auto;height: auto;min-width: 80px;min-height: 3 5px;}
瀏覽器兼容性問(wèn)題解決的辦法都是實(shí)踐中來(lái)到實(shí)踐中去,有很多前輩給我們做了鋪墊,但凡事都有局限性,所以,遇到了問(wèn)題我們也必須去克服。
二、避免兼容性的技巧
我們整理了幾條編碼模式與經(jīng)驗(yàn)來(lái)解決支持舊IE瀏覽器的技巧分享給大家。
1、使用模板如HTML5 Boilerplate進(jìn)行開(kāi)發(fā)
很多成熟的模板各方面都做得很到位,這些準(zhǔn)則對(duì)以現(xiàn)代瀏覽器為目標(biāo)的項(xiàng)目和需要舊瀏覽器(低至IE6都能很好的支持)支持的項(xiàng)目工作得一樣好。直接拿來(lái)使用不但可以節(jié)省時(shí)間更能減少一些IE兼容問(wèn)題。
2、使用標(biāo)準(zhǔn)是IE10來(lái)開(kāi)發(fā)項(xiàng)目
它能實(shí)時(shí)分析你的網(wǎng)站,準(zhǔn)確的找到問(wèn)題的類型并給出解決方法。通過(guò)在你的代碼中包括一個(gè)簡(jiǎn)單的JavaScript腳本文件,在你的頁(yè)面你就能得到可視化的結(jié)果。它也可以被集成進(jìn)Fidder HTTP分析工具。
3、不盲目使用polyfills和shims
polyfills和shims提供了代碼和標(biāo)簽,可以幫助模擬標(biāo)準(zhǔn)的API和功能,但在使用時(shí)一定要能保證實(shí)用,更便于以后的開(kāi)發(fā)和修改。
4、多版本多瀏覽器測(cè)試,確認(rèn)無(wú)誤后再上線。
檢查有沒(méi)有警告或錯(cuò)誤信息后,再提交項(xiàng)目,不然讓客戶或老板發(fā)現(xiàn)了多尷尬。
5、使用標(biāo)簽
最新的HTML5標(biāo)簽,改善了標(biāo)簽的語(yǔ)義化,但需要特殊的輔助腳本讓IE6,7和8認(rèn)識(shí)他們。頁(yè)面在太舊的瀏覽器或者禁止腳本時(shí)無(wú)法使用HTML5標(biāo)簽,那么使用標(biāo)簽是對(duì)這些情況比較靠譜的解決方法。
6、css文件應(yīng)該在head里引入,js最后引入。
如果body中引入CSS會(huì)導(dǎo)致頁(yè)面全空,直到CSS加載后才顯示。若在頭部引入則讓瀏覽器盡早地讀取他們,就可以避免上述的情況。Js在最后引入則可以加快網(wǎng)站的打開(kāi)速度,能很好的提高用戶體驗(yàn)。
7、簡(jiǎn)潔、特定瀏覽器的css樣式。
不要到處是無(wú)法重用的的id和class,避免使用"!imporant"。為html或body標(biāo)簽添加特定瀏覽器的class,并在css規(guī)則中使用。而不是hack。這樣不但利于seo網(wǎng)站優(yōu)化,更讓二次開(kāi)發(fā)提供便利。
8、JavaScript最大限度以用戶體驗(yàn)為中心
盡可能在Ready后立刻執(zhí)行腳本。如果Ajax關(guān)系用戶交互,越早請(qǐng)求越好,延遲加載非必要的腳本(如Facebook Like,Google +1,Twitter)等。
新網(wǎng)網(wǎng)站建設(shè),為您提供一站式網(wǎng)站建設(shè)推廣方案:http://www.xinnet.com/jianzhan/zizhujianzhan.html
聲明:免責(zé)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),也不承認(rèn)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)本社區(qū)中有涉嫌抄襲的內(nèi)容,請(qǐng)發(fā)
送郵件至:operations@xinnet.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),本站將立刻刪除涉嫌侵權(quán)內(nèi)容。本站原創(chuàng)內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)
需注明出處:新網(wǎng)idc知識(shí)百科