新聞中心
你是否在位IE6、IE7、IE8、Firefox不兼容問題而煩惱,這里向大家簡單介紹一下解決IE6、IE7、IE8、Firefox兼容的幾種方案,希望對你的學習有所幫助。

創(chuàng)新互聯(lián)公司主營襄城網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,app開發(fā)定制,襄城h5微信小程序定制開發(fā)搭建,襄城網(wǎng)站營銷推廣歡迎襄城等地區(qū)企業(yè)咨詢
解決IE6、IE7、IE8、Firefox兼容的幾種方案
瀏覽器不兼容,你知道源頭嗎?
凡事都要知其然,才能知其所以然,前端開發(fā)的朋友想畢都會碰到瀏覽器兼容的問題,今天在網(wǎng)上覓到此文,希望對大家有用。
瀏覽器的不兼容,大家肯定都是深惡痛絕的,往往我們只是去做修補,卻忘了更重要的事情,那就是追溯根源,避免類似的不兼容再次出現(xiàn)。在下不才,歸納幾點html編碼要素,望能指點各位:
1.文字本身的大小不兼容。同樣是font-size:14px的宋體文字,在不同瀏覽器下占的空間是不一樣的,IE下實際占高16px,下留白3px,F(xiàn)irefox下實際占高17px,上留白1px,下留白3px,opera下就更不一樣了。解決方案:給文字設定line-height。確保所有文字都有默認的line-height值。這點很重要,在高度上我們不能容忍1px的差異。
2.Firefox下容器高度限定,即容器定義了height之后,容器邊框的外形就確定了,不會被內(nèi)容撐大,而IE下是會被內(nèi)容撐大,高度限定失效。所以不要輕易給容器定義height。
3.還討論內(nèi)容撐破容器問題,橫向上的。如果float容器未定義寬度,F(xiàn)irefox下內(nèi)容會盡可能撐開容器寬度,IE下則會優(yōu)先考慮內(nèi)容折行。故,內(nèi)容可能撐破的浮動容器需要定義width。
小實驗:有興趣大家可以看看這段實驗。在不同瀏覽器下分別測試以下各項代碼。
- a.
上面的代碼在不同瀏覽器中是不一樣的,實驗起源于對小height值div的運用,
4.浮動的清除,F(xiàn)irefox下不清除浮動是不行的。
糾正大家一個誤區(qū),遇到不兼容就說Firefox爛是不對的,其實更多時候是IE的奇怪表現(xiàn)讓我們無所適從。以下列出IE6的種種劣跡。
5.最被痛恨的,double-marginbug。IE6下給浮動容器定義margin-left或者margin-right實際效果是數(shù)值的2倍。解決方案,給浮動容器定義display:inline。
6.mirrormarginbug,當外層元素內(nèi)有float元素時,外層元素如定義margin-top:14px,將自動生成margin-bottom:14px。padding也會出現(xiàn)類似問題,都是IE6下的特產(chǎn),該類bug出現(xiàn)的情況較為復雜,遠不只這一種出現(xiàn)條件,還沒系統(tǒng)整理。解決方案:外層元素設定border或設定float。
引申:Firefox和IE下對容器的margin-bottom,padding-bottom的解釋有時不一致,似乎與之相關(guān)。
7.吞吃現(xiàn)象,限于篇幅,我就不展開了。還是IE6,上下兩個div,上面的div設置背景,卻發(fā)現(xiàn)下面沒有設置背景的div也有了背景,這就是吞吃現(xiàn)象。對應上面的背景吞吃現(xiàn)象,還有滾動下邊框缺失的現(xiàn)象。解決方案:使用zoom:1。這個zoom好象是專門為解決IE6bug而生的。
8.注釋也能產(chǎn)生bug~~~“多出來的一只豬。”這是前人總結(jié)這個bug使用的文案,IE6的這個bug下,大家會在頁面看到豬字出現(xiàn)兩遍,重復的內(nèi)容量因注釋的多少而變。解決方案:用“picRotatestart”方法寫注釋。
9.
里加float,這是一個典型的,棘手的兼容問題,希望引起大家正視,給li不同的屬性會有不同的解釋效果,F(xiàn)irefox下的解釋稍可理解,IE6下的解釋會讓你摸不著頭腦,由于問題的復雜性,將另起一文專門討論該問題。在《ul使用心得》一文里有相關(guān)成果,卻沒給出問題解決的過程。10.使用了“float:left;display:inline”的ul的奇怪表現(xiàn)??梢钥闯鲞@句css是針對IE6下的doublemarginbug而加上的display:inline,這也是我的css體系里的重要一環(huán),在《ul使用心得》一文中有相關(guān)闡述。而這句css用在ul上會讓你痛苦不堪。點到為止,這里不能多說哈。
11.img下的留白,大家看這段代碼有啥問題:
把div的border打開,你發(fā)現(xiàn)圖片底部不是緊貼著容器底部的,是img后面的空白字符造成,要消除必須這樣寫
后面兩個標簽要緊挨著。IE7下這個bug依然存在。解決方案:給img設定display:block。
12.失去line-height。文字
引申:大家知道img的align有text-top,middle,absmiddle啊什么的,你可以嘗試去調(diào)整img和文字讓他們在IE和Firefox下能一致,你會發(fā)現(xiàn)怎么調(diào)都不會讓你滿意。索性讓img和文字都float起來,用margin調(diào)整。
13.鏈接的hover狀態(tài)。a:hoverimg{width:300px}我們想讓鼠標hover時,鏈接里包含的圖片寬度變化,可惜在IE6下無效,IE7、Firefox下有效。
14.非鏈接的hover狀態(tài)。div:hover{}這樣的樣式IE6是不認的,在IE7、Firefox下才有效果。
15.block化的a鏈接,其內(nèi)套absolute層,absolute層內(nèi)放置img,IE下,鼠標點擊img不會有鏈接效果,F(xiàn)irefox、op下正常。
想不出來了,以后想到再加吧。上面的諸多問題如果你掌握了其中奧妙,90%的不兼容問題不需要另起csshack的。
16.無法徹底清除的float。如果讓ul下的li具有了float屬性,如何clear浮動的li呢?
- class=”c”>
- ENhttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>
- .c{clear:both;overflow:hidden;+overflow:visible}
- .bd{border:1pxsolidred}
- ul.ex{list-style:none;}
- ul.exli{float:left;border:1pxsolidgreen;}
- sfsdfsfdf
- sfsdfsfdf
請在IE下測試,僅僅將margin-top:19px改為margin-top:20px你發(fā)現(xiàn)什么了?要素:doctype必須有,IE6、IE7下margin-top:19px還好好的,margin-top:20px就出問題了,無法解釋。。。大家還可以將clear層換不同的位置測試。
解決方案:給ul屬性zoom:1(給li加zoom:1沒用)
引申:clear層應該單獨使用。也許你為了節(jié)省代碼把clear屬性直接放到下面的一個內(nèi)容層,這樣有問題,不僅僅是Firefox和op下失去margin效果,IE下某些margin值也會失效
dd


咨詢
建站咨詢
