1. 使用XHTML格式寫代碼,並定義好DOCTYPE,因為這個會影響CSS的處理
2. div 的垂直居中問題
vertical-align:middle;將行距增加到和整個DIV一樣高(line-height:100px;),然後插入文字,就能垂直居中了。
缺點:需要控制內容不換行
3. margin 加倍問題
設置為float的div在IE下設置的margin會加倍,這是IE6的BUG。
解決:在此DIV上加入:display:inline;
4. 浮動IE產生雙倍距離
#box{float:left;width:100px;margin:0 0 0 100px;}
此情況下IE會產生200px的距離 display:inline;-->使浮動忽略
Tips:
block與inline的區別:
block:總是在新行上開始、高度、寬度、行高、邊距都可以控制(塊元素)
inline:和其它元素在同一行上,不可控制(內嵌元素)
#box{display:block;} --> 可以為內嵌元素模擬為塊元素
#box{display:inline;} --> 實現同一行排列的效果
#box{display:table;} -->
5. IE 寬度與高度的問題
IE不認min-*這個定義,但實際上它把正常的width和height當作有min的情況來處理。
如果只用寬度和高度,正常的瀏覽器這兩個值都不會變
如果只用min-width和min-height,則IE下面就沒有設置寬度和高度
解決:
#box{width:80px;height:35px;}
改為:
#box{width:auto;height:auto;min-width:80px;min-height:35px;}
6. 頁面的最小寬度
min-width指定最小寬度,可以保證排版正確性。但IE不認識,解決如下:
把div放到body下,並給指定如下的樣式:
#container{min-width:600px;width:expression(document.body.clientWidth < 600 ? '600px' : 'auto');}
Tips: 第二個width使用了js來判斷,不太規範
7. DIV浮動IE文本產生3像素的BUG
左邊對象浮動,右邊採用外補丁的左邊距來定位,右邊對象內的文本會離左邊有3px的間距
#box{float:left;width:800px;}
#left{float:left;width:50%;}
#right{width:50%;}
*html #left{margin-right:3px;} // 關鍵
8. IE 捉迷藏問題
當DIV應用複雜的時候每個欄中又有一些鏈接,IE會出問題:有些內容顯示不出來,但鼠標選擇這個區域的時候,內容又是有的
解決:設置line-height或者給固定高度和寬度
9. 無法定義1px左右的高度的容器
解決:overflow:hidden; / zoom:0.08; / line-height:1px;
10. 讓層顯示在 FLASH 之上
給flash設置透明:
11. 定位一個層垂直居中於瀏覽器中
技巧: 百分比絕對定位與外補丁負值。
Tips: 負值的大小為自身寬度高度除以2參考樣式:
div {
position: absolute;
top: 50%;
left: 50%;
margin: -100px 0 0 -100px;
width: 200px;
height: 100px;
border: solid 1px #F00;
}
12. DIV 居中問題
div設置margin-left:auto;margin-right:auto;時已居中,但IE不認,需要在body中居中,即在父級元素中定義text-align:center;
即:在父級元素內的內容居中
13. a標籤加邊框與背景色
需要設置其為 display:block;且設置float:left;來保證不換行
14. 鏈接訪問過hover樣式就不出現了
解決:改變屬性的排序-> L -> V -> H -> A
參考樣式:
a:link{}
a:visited{}
a:hover{}
a:active{}
15. cursor
cursor:pointer;兼容IE與FF,但hand僅在IE有用
16. ul的margin與padding
ul在FF中默認有padding值,而在IE中只有margin有值,所以需要預先就定義ul{margin:0;padding:0;}
17. form標籤
在IE中,form會有邊距,而FF中margin則為0;
解決: form{margin:0;padding:0;}
18. 實在沒有解決了,可以使用 !important 配置
閱讀更多 Linux猿 的文章