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