如何解決瀏覽器的兼容性
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
div+css開發(fā)瀏覽器的兼容性 2.ff下容器高度限定,即容器定義了height之后,容器邊框的外形就確定了,不會(huì)被內(nèi)容撐大,而ie下是會(huì)被內(nèi)容撐大,高度限定失效。所以不要輕易給容器定義height。 3.橫向上的撐破容器問題,。如果float 容器未定義寬度,ff下內(nèi)容會(huì)盡可能撐開容器寬度,ie下則會(huì)優(yōu)先考慮內(nèi)容折行。故,內(nèi)容可能撐破的浮動(dòng)容器需要定義width。 小實(shí)驗(yàn):有興趣大家可以看看這段實(shí)驗(yàn)。在不同瀏覽器下分別測(cè)試以下各項(xiàng)代碼。 a. b.c. d.上面的代碼在不同瀏覽器中是不一樣的,實(shí)驗(yàn)起源于對(duì)小height 值div 的運(yùn)用, ,小height 值要配合overflow:hidden一起使用。實(shí)驗(yàn)好玩而已,想說明的是,瀏覽器對(duì)容器的邊界解釋是大不相同的,容器內(nèi)容的影響結(jié)果各不相同。
5.mirror margin bug,當(dāng)外層元素內(nèi)有float元素時(shí),外層元素如定義margin-top:14px,將自動(dòng)生成margin-bottom:14px。 padding也會(huì)出現(xiàn)類似問題,都是ie6下的特產(chǎn),該類bug 出現(xiàn)的情況較為復(fù)雜,遠(yuǎn)不只這一種出現(xiàn)條件,還沒系統(tǒng)整理。解決方案:外層元素設(shè)定border 或 設(shè)定float。 引申:ff 和ie 下對(duì)容器的margin-bottom,padding-bottom的解釋有時(shí)不一致,似乎與之相關(guān)。 6. 吞吃現(xiàn)象。還是ie6,上下兩個(gè)div,上面的div設(shè)置背景,卻發(fā)現(xiàn)下面沒有設(shè)置背景的div 也有了背景,這就是吞吃現(xiàn)象。對(duì)應(yīng)上面的背景吞吃現(xiàn)象,還有滾動(dòng)下邊框缺失的現(xiàn)象。解決方案:使用zoom:1。這個(gè)zoom好象是專門為解決ie6 bug而生的。 7.注釋也能產(chǎn)生bug~~~“多出來的一只豬。”這是前人總結(jié)這個(gè)bug使用的文案,ie6的這個(gè)bug 下,大家會(huì)在頁面看到豬字出現(xiàn)兩遍,重復(fù)的內(nèi)容量因注釋的多少而變。解決方案:用“ picrotate start ”方法寫注釋。
把div的border打開,你發(fā)現(xiàn)圖片底部不是緊貼著容器底部的,是img后面的空白字符造成,要消除必須這樣寫 后面兩個(gè)標(biāo)簽要緊挨著。ie7下這個(gè)bug 依然存在。解決方案:給img設(shè)定 display:block。 9. 失去line-height。 文字 ,很遺憾,在ie6下單行文字 line-height 效果消失了。。。,原因是這個(gè)inline-block元素和inline元素寫在一起了。解決方案:讓img 和文字都 float起來。
引申:大家知道img 的align 有 text-top,middle,absmiddle啊什么的,你可以嘗試去調(diào)整img 和文字讓他們?cè)趇e和ff下能一致,你會(huì)發(fā)現(xiàn)怎么調(diào)都不會(huì)讓你滿意。索性讓img 和文字都 float起來,用margin 調(diào)整。
dd ff
11.ie 下overflow:hidden對(duì)其下的絕對(duì)層position:absolute或者相對(duì)層 position:relative無效。解決方案:給overflow:hidden加position:relative或者position: absolute。另,ie6支持overflow-x或者overflow-y的特性,ie7、ff不支持。 12.ie6下嚴(yán)重的bug,float元素如沒定義寬度,內(nèi)部如有div定義了height或zoom:1,這個(gè)div就會(huì)占滿一整行,即使你給了寬度。float元素如果作為布局用或復(fù)雜的容器,都要給個(gè)寬度的。 13.ie6下的bug,絕對(duì)定位的div下包含相對(duì)定位的div,如果給內(nèi)層相對(duì)定位的div高度height具體值,內(nèi)層相對(duì)層將具有100%的width值,外層絕對(duì)層將被撐大。解決方案給內(nèi)層相對(duì)層float屬性。 14.width:100%這個(gè)東西在ie里用很方便,會(huì)向上逐層搜索width值,忽視浮動(dòng)層的影響,ff下搜索至浮動(dòng)層結(jié)束,如此,只能給中間的所有浮動(dòng)層加width:100%才行,累啊。opera這點(diǎn)倒學(xué)乖了跟了ie。 在火狐中最混亂的頁面:有一部分功能被覆蓋,左右兩個(gè)div一上一下,隨著頁面內(nèi)容展開footer不自動(dòng)往下延伸...經(jīng)過兩天的奮戰(zhàn)頁面正常了,回頭看看我們到底做了什么呢?我們實(shí)質(zhì)上是在無限的靠近w3c標(biāo)準(zhǔn)。 于是,一個(gè)個(gè)問題迎刃而解:對(duì)于現(xiàn)存的頁面,用w3c驗(yàn)證工具,從fatal級(jí)別的錯(cuò)誤開始解決;以后的開發(fā)中頁面的瀏覽器兼容怎么保證----只要遵循w3c標(biāo)準(zhǔn)做就可以了。這里有一個(gè)技巧,不是所有瀏覽器都完美的支持w3c的所有標(biāo)準(zhǔn),同時(shí)w3c標(biāo)準(zhǔn)在有些地方的確吹毛求疵,所以我們大體上遵循w3c的標(biāo)準(zhǔn),但是頁面上并不添加w3c的聲明。 做瀏覽器兼容時(shí)遇到的一些腳本兼容問題: 1.firefox里面不能操作剪貼板(有曲線救國(guó)之策么?) 2.ie里面的event.srcelement在firefox里面是event.target注意兼顧 3.ie里面的 div.innertext;在firefox里面是div.textcontent; 4.文本超長(zhǎng)自動(dòng)省略: style="overflow: hidden; text-overflow: ellipsis; width: 260px; white-space: nowrap; cursor: pointer; "注意要?jiǎng)h掉頁面上的w3c標(biāo)準(zhǔn)! 5.如果真的需要為不同的瀏覽器做區(qū)分那么可以 if (window.navigator.useragent.indexof("msie")>=1) //ie6 7 if (window.navigator.useragent.indexof("firefox")>=1) //ff 6.css方面也有一些做瀏覽器兼容的策略 就不越俎代庖了 可以搜索一下
總結(jié)一下: 1. 遵循標(biāo)準(zhǔn)但是不把w3c標(biāo)準(zhǔn)聲明添加到頁面上,這種做法在時(shí)間和頁面質(zhì)量之間做了一個(gè)折衷 2.對(duì)現(xiàn)存的頁面做美化 可以從驗(yàn)證w3c開始 這是一個(gè)好的切入點(diǎn) 3.瀏覽器兼容在新頁面的開發(fā)時(shí)就要考慮,完成之后再做成本是完全不一樣的 類似于代碼重構(gòu) 4.有些javascript編寫也要關(guān)注一些敏感的瀏覽器兼容問題 5.多說一句:頁面開發(fā)人員學(xué)一點(diǎn)css的知識(shí)對(duì)于解決瀏覽器兼容的問題是很有幫助的 該文章在 2010/4/24 9:17:51 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |