一、CSS HACK
1、!important
隨著IE7對 !important 的支持,現(xiàn)在 !important 只針對IE6 HACK。
<style type="text/css">
#syx{
width:100px; /* IE7+FF */
width:80px; /* IE6 */
}
</style>
2、IE6,IE7,FF分別定義
*HTML和*+html是IE特有的標簽,F(xiàn)F暫時不支持,而*+html又是IE7特有的標簽。
<style type="text/css">
#syx{ width:100px; } /* FF */
*html #syx{ width:80px; } /* IE6 */
*+html #syx{ width:60px;} /* IE7 */
//注意它們的順序
</style>
//注意:*+html 對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 后會導致 width 和 height 增加,但IE不會(可用!important解決)。
2、居中大小問題
(1)垂直居中:將 line-height 設(shè)置為當前 div 相同的高度,再通過 vertical-align: middle(注意內(nèi)容不要換行)。
(2)水平居中:margin: 0 auto;(當然不是萬能)。
(3)若需給 a 標簽內(nèi)內(nèi)容加上樣式,需要設(shè)置 display: block;(常見于導航標簽)。
(4)FF 和 IE 對 BOX 理解的差異導致相差 2px 的還有設(shè)為 float 的div在ie下 margin 加倍等問題,#box{ float:left; width:100px; margin:0 0 0 100px; (這種情況之下IE會產(chǎn)生200px的距離,可以加 display:inline; 使浮動忽略)。
(注意:block,inline 兩個元素,Block 元素的特點是:總是在新行上開始,高度,寬度,行高,邊距都可以控制(塊元素);inline 元素的特點是:和其他元素在同一行上,不可控制(內(nèi)嵌元素);#box{ display:block; //可以為內(nèi)嵌元素模擬為塊元素 display:inline; //實現(xiàn)同一行排列的的效果 diplay:table; })
(5)ul 標簽在 FF 下面默認有 list-style 和 padding , 最好事先聲明,以避免不必要的麻煩(常見于導航標簽和內(nèi)容列表)。
(6)作為外部 wrapper 的 div 不要定死高度,最好還加上 overflow:hidden; 以達到高度自適應。
(7)關(guān)于手形光標 cursor: pointer ,而 hand 只適用于 IE。
(8)IE 與寬度和高度的問題:IE不認得min-這個定義,但實際上它把正常的 width 和 height 當作有min的情況來使,如果只用寬度和高度,正常的瀏覽器里這兩個值就不會變,如果只用 min-width 和 min-height 的話,IE 下面根本等于沒有設(shè)置寬度和高度。
如:要設(shè)置背景圖片,這個寬度是比較重要,要解決這個問題,可以這樣:#box{ width: 80px; height: 35px;} html>body #box{ width: auto; height: auto; min-width: 80px; min-height: 35px;}
(9)頁面的最小寬度:min-width 是個非常方便的CSS命令,它可以指定元素最小也不能小于某個寬度,這樣就能保證排版一直正確,但IE不認得,而它實際上把 width 當做最小寬度來用,為了讓這一命令在IE上也能用,可以把一個 <div> 放到 <body> 標簽下,然后為div指定一個類。
如:#container{min-width: 600px; width:expression(document.body.clientWidth < 600 ? "600px" : "auto" );} (注:第一個 min-width 是正常的;但第2行的 width 使用了Javascript,這只有 IE 才認得,這也會讓你的HTML文檔不太正規(guī),它實際上通過 Javascript 的判斷來實現(xiàn)最小寬度)。
(10)DIV 浮動 IE 文本產(chǎn)生3象素的bug:左邊對象浮動,右邊采用外補丁的左邊距來定位,右邊對象內(nèi)的文本會離左邊有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>。
(11)IE 捉迷藏的問題:當 div 應用復雜的時候每個欄中又有一些鏈接,DIV等這個時候容易發(fā)生捉迷藏的問題。有些內(nèi)容顯示不出來,當鼠標選擇這個區(qū)域是發(fā)現(xiàn)內(nèi)容確實在頁面。解決辦法:對#layout使用line-height屬性或者給#layout使用固定高和寬。頁面結(jié)構(gòu)盡量簡單。
(12)高度不適應:高度不適應是當內(nèi)層對象的高度發(fā)生變化時外層高度不能自動進行調(diào)節(jié),特別是當內(nèi)層對象使用 margin 或 paddign 時。
如:<div id="box">p對象中的內(nèi)容</div> CSS:#box {background-color:#eee; } #box p {margin-top: 20px; margin-bottom: 20px; text-align:center; } 解決方法:在P對象上下各加2個空的 div 對象 CSS 代碼:.blank{height:0px;overflow:hidden;}或者為 DIV 加上 border 屬性。
轉(zhuǎn)載請保留原文地址: http://m.448gfe.cn/show-427.html