觸屏版
全國服務(wù)熱線:0571-87205688
登錄
注冊(cè)
客戶中心
關(guān)注云客
最近遇到了瀏覽器兼容性的問題,在網(wǎng)上找的了很多不錯(cuò)的方法,經(jīng)過試用確實(shí)有很不錯(cuò)的效果,就把這些進(jìn)行總結(jié)和摘錄了下來,可以解決我們平常所做網(wǎng)頁在瀏覽器上的一些兼容性問題,其中包括IE、FF不支持,浮動(dòng)雙倍,垂直水平居中,隱藏DIV,高度不適應(yīng)等問題。
一、CSS HACK
1、!important
隨著IE7對(duì) !important 的支持,現(xiàn)在 !important 只針對(duì)IE6 HACK。
<style type="text/css">
#syx{
width:100px; /* IE7+FF */
width:80px; /* IE6 */
}
</style>
2、IE6,IE7,FF分別定義
*html和*+html是IE特有的標(biāo)簽,F(xiàn)F暫時(shí)不支持,而*+html又是IE7特有的標(biāo)簽。
<style type="text/css">
#syx{ width:100px; } /* FF */
*html #syx{ width:80px; } /* IE6 */
*+html #syx{ width:60px;} /* IE7 */
//注意它們的順序
</style>
//注意:*+html 對(duì)IE7的HACK 必須保證HTML頂部有如下聲明
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
二、CSS萬能 float 閉合
將以下代碼加入Global CSS 中,給需要閉合的div加上 >
<style>
/* Clear Fix */
.clearfix:after
{ content:".";display:block; height:0; clear:both; visibility:hidden;}
.clearfix{display:inline-block;}
/* Hide from IE Mac */
.clearfix {display:block;}
/* End hide from IE Mac */ /* end of clearfix */
</style>
三、CSS其它的一些兼容技巧
1、FF下給 div 設(shè)置 padding 后會(huì)導(dǎo)致 width 和 height 增加,但I(xiàn)E不會(huì)(可用!important解決)。
2、居中大小問題
?。?)垂直居中:將 line-height 設(shè)置為當(dāng)前 div 相同的高度,再通過 vertical-align: middle(注意內(nèi)容不要換行)。
?。?)水平居中:margin: 0 auto;(當(dāng)然不是萬能)。
(3)若需給 a 標(biāo)簽內(nèi)內(nèi)容加上樣式,需要設(shè)置 display: block;(常見于導(dǎo)航標(biāo)簽)。
?。?)FF 和 IE 對(duì) BOX 理解的差異導(dǎo)致相差 2px 的還有設(shè)為 float 的div在ie下 margin 加倍等問題,#box{ float:left; width:100px; margin:0 0 0 100px; (這種情況之下IE會(huì)產(chǎn)生200px的距離,可以加 display:inline; 使浮動(dòng)忽略)。
(注意:block,inline 兩個(gè)元素,Block 元素的特點(diǎn)是:總是在新行上開始,高度,寬度,行高,邊距都可以控制(塊元素);inline 元素的特點(diǎn)是:和其他元素在同一行上,不可控制(內(nèi)嵌元素);#box{ display:block; //可以為內(nèi)嵌元素模擬為塊元素 display:inline; //實(shí)現(xiàn)同一行排列的的效果 diplay:table; })
?。?)ul 標(biāo)簽在 FF 下面默認(rèn)有 list-style 和 padding , 最好事先聲明,以避免不必要的麻煩(常見于導(dǎo)航標(biāo)簽和內(nèi)容列表)。
?。?)作為外部 wrapper 的 div 不要定死高度,最好還加上 overflow:hidden; 以達(dá)到高度自適應(yīng)。
?。?)關(guān)于手形光標(biāo) cursor: pointer ,而 hand 只適用于 IE。
?。?)IE 與寬度和高度的問題:IE不認(rèn)得min-這個(gè)定義,但實(shí)際上它把正常的 width 和 height 當(dāng)作有min的情況來使,如果只用寬度和高度,正常的瀏覽器里這兩個(gè)值就不會(huì)變,如果只用 min-width 和 min-height 的話,IE 下面根本等于沒有設(shè)置寬度和高度。
如:要設(shè)置背景圖片,這個(gè)寬度是比較重要,要解決這個(gè)問題,可以這樣:#box{ width: 80px; height: 35px;} html>body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}
?。?)頁面的最小寬度:min-width 是個(gè)非常方便的CSS命令,它可以指定元素最小也不能小于某個(gè)寬度,這樣就能保證排版一直正確,但I(xiàn)E不認(rèn)得,而它實(shí)際上把 width 當(dāng)做最小寬度來用,為了讓這一命令在IE上也能用,可以把一個(gè) <div> 放到 <body> 標(biāo)簽下,然后為div指定一個(gè)類。
如:#container{min-width: 600px; width:expression(document.body.clientWidth < 600 ? "600px" : "auto" );} (注:第一個(gè) min-width 是正常的;但第2行的 width 使用了Javascript,這只有 IE 才認(rèn)得,這也會(huì)讓你的HTML文檔不太正規(guī),它實(shí)際上通過 Javascript 的判斷來實(shí)現(xiàn)最小寬度)。
?。?0)DIV 浮動(dòng) IE 文本產(chǎn)生3象素的bug:左邊對(duì)象浮動(dòng),右邊采用外補(bǔ)丁的左邊距來定位,右邊對(duì)象內(nèi)的文本會(huì)離左邊有3px的間距。
如:#box{ float:left; width:800px;} #left{ float:left; width:50%;} #right{ width:50%;} *html #left{ margin-right:-3px; }//這句是關(guān)鍵,HTML代碼<div id="box"> <div id="left"></div> <div id="right"></div></div>。
?。?1)IE 捉迷藏的問題:當(dāng) div 應(yīng)用復(fù)雜的時(shí)候每個(gè)欄中又有一些鏈接,DIV等這個(gè)時(shí)候容易發(fā)生捉迷藏的問題。有些內(nèi)容顯示不出來,當(dāng)鼠標(biāo)選擇這個(gè)區(qū)域是發(fā)現(xiàn)內(nèi)容確實(shí)在頁面。解決辦法:對(duì)#layout使用line-height屬性或者給#layout使用固定高和寬。頁面結(jié)構(gòu)盡量簡(jiǎn)單。
?。?2)高度不適應(yīng):高度不適應(yīng)是當(dāng)內(nèi)層對(duì)象的高度發(fā)生變化時(shí)外層高度不能自動(dòng)進(jìn)行調(diào)節(jié),特別是當(dāng)內(nèi)層對(duì)象使用 margin 或 paddign 時(shí)。
如:<div id="box">p對(duì)象中的內(nèi)容</div> CSS:#box {background-color:#eee; } #box p {margin-top: 20px; margin-bottom: 20px; text-align:center; } 解決方法:在P對(duì)象上下各加2個(gè)空的 div 對(duì)象 CSS 代碼:.blank{height:0px;overflow:hidden;}或者為 DIV 加上 border 屬性。
評(píng)論(0人參與,0條評(píng)論)
發(fā)布評(píng)論
最新評(píng)論