1. 程式人生 > >CSS兼容處理(二)

CSS兼容處理(二)

bsp test -h lock 現在 -s play AC orm

  • 在IE6及以下版本的瀏覽器中定義小高度:

解決方法:#text { overflow:hidden; height:1px; font-size:0; line-height:0;}

具體詳解:IE6及以下瀏覽器無法定義小高度的原因是,默認有行高。

  • 在IE6及以下版本瀏覽器中定義最小高度:

解決方法:#text { min-height:100px; _height:100px;}

註意:此時#text不能設置overflow為hidden,否則模擬min-height失效。

  • 解決按鈕兩邊增白:

解決方法:input,button { overflow:visible; }

  • li兩個浮動以上出現空白:

解決方法:li { vertical-align:top}

除了top,還可以設置text-top、middle、bottom、text-bottom,甚至特定的寬度和長度。

  • IE6下不能識別偽元素:first-letter/:first-line的問題:

解決方法:

方法一:花括號前增加空格。

如:

p:first-letter { float:left; font-size:40px; font-weight:bold;}

p:first-line { color:#090;}

方法二:花括號前換行。

如:

p:first-letter

{float:left; font-size:40px;font-weight:bold;}

p:first-line

{color:#090;}

  • 在IE8中偽元素:first-letter/:first-line中忽略!important規則:

解決方法:盡量不要在:first-letter/:first-line中使用!important。

  • 在IE6中同一條樣式中忽略!important規則:

解決方法:把同一樣式分開兩個規則來定義同一個樣式。

  • li內部元素定義了display:block的內聯元素底部產生空白:

     解決方法:給li內聯元素加一個zoom:1.

代碼示例:

BUG重現:

a,span { display:block;background:#ddd;}

<ul>

<li><a href="...">常用手冊</a></li>

<li><a href="...">常用手冊</a></li>

<li><a href="...">常用手冊</a></li>

<li><span>測試li內部元素定義了display:block的內聯元素底部產生空白</span></li>

</ul>

具體詳解:這個BUG出現在IE6及以下版本的瀏覽器。

  • 未定義寬度的浮動或絕對定位會被內部設置了zoom:1撐開:

解決方法:

方法一:設置ul為浮動元素

方法二:設置ul為inline元素

方法三:設置ul的width

代碼示例:

BUG重現:

#test { zoom:1; overflow:hidden; border: 1px solid #ddd; background:#eee; }

#test h1 { float:left;}

#test .nav {float:right; background:#aaa;}

#test .nav ul { zoom:1; overflow:hidden;margin:0; padding:0;list-style:none;}

#test .nav li {float:left;margin:0 5px;}

<div id="test">

<h1>Doyoe</h1>

<div class="nav">

<ul>

<li><a href="...">常用手冊</a></li>

<li><a href="...">常用手冊</a></li>

<li><a href="...">常用手冊</a></li>

</ul>

</div>

</div>

具體詳解:如上述代碼,IE6及以下版本瀏覽器的div,nav會被zoom:1的ul所撐開。

  • 相對定位時父元素overflow屬性為auto/hiddle時,失效:

解決方法:給div也設置一個相對定位。

相關代碼:

div { overflow:auto; width:260px; height:80px; border: 1px solid #ddd; }

p { position:relative; margin:0; }

<div>

<p>123456</p>

<p>123456</p>

</div>

具體詳解:如上述代碼,在IE7及更早瀏覽器下你會看到滾動條將無法工作。在P標簽上加一個相對定位即可。

  • 在谷歌瀏覽器中應用transition時頁面閃動:

解決方法:-webkit-transform-style:preserve-3d;或-webkit-backface-visibility:hidden;

CSS兼容處理(二)