?
This document uses PHP Chinese website manual Release
Bugs及解決方案列表(以下實例默認運行環(huán)境都為Standard mode):
方法:
#test{overflow:hidden;height:1px;font-size:0;line-height:0;}
IE6及更早瀏覽器之所以無法直接定義較小高度的容器是因為默認會有行高
方法:
input,button{overflow:visible;}
方法:
li{vertical-align:top;}
除了top值,還可以設置為text-top | middle | bottom | text-bottom,甚至特定的<length>和<percentage>值都可以
方法:
.a{color:#f00;} .main{width:950px;background:#eee;} .content{float:left;width:750px;height:100px;background:#ccc;_margin-right:-3px;} .aside{height:100px;background:#aaa;} <div class="main"> <div class="content">content</div> <div class="aside">aside</div> </div>
在IE6及更早瀏覽器下為.content設置margin-right:-3px;也可以設置.aside為浮動
BUG重現(xiàn):
.test{zoom:1;overflow:hidden;width:500px;} .box1{float:left;width:100px;} .box2{float:right;width:400px;} <div class="test"> <div class="box1"></div> <!-- 注釋 --> <div class="box2">↓這就是多出來的那只豬</div> </div>
運行如上代碼,你會發(fā)現(xiàn)文字發(fā)生了溢出,在IE6下會多出一只“豬”。造成此BUG的原因可能是多重混合的,如浮動,注釋,寬高定義等等。并且注釋條數(shù)越多,溢出的文本也會隨之增多。
列舉幾個解決方法:
刪除box1和box2之間所有的注釋;
不設置浮動;
調(diào)整box1或box2的寬度,比如將box的寬度調(diào)整為90px
方法:
div{width:300px;height:100px;_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='*.png');} a{_position:relative;}
解決方法是為容器內(nèi)的鏈接定義相對定位屬性position的值為relative
方法1:
p:first-letter {float:left;font-size:40px;font-weight:bold;} p:first-line {color:#090;}
增加空格:在偽對象選擇符:first-letter/:first-line與包含規(guī)則的花括號"{"間增加空格。
方法2:
p:first-letter {float:left;font-size:40px;font-weight:bold;} p:first-line {color:#090;}
換行:將整個花括號"{"規(guī)則區(qū)域換行。細節(jié)參見E:first-letter和E:first-line選擇符
BUG重現(xiàn):
p:first-letter {float:left;font-size:40px;font-weight:bold;color:#f00!important;color:#090;}
如上代碼,在IE8下color定義都會失效,原因就是因為有color使用了!important規(guī)則。鑒于此,請盡量不要在:first-letter/:first-line里使用!important規(guī)則。
BUG重現(xiàn):
div{color:#f00!important;color:#000;}
如上代碼,IE6及以下瀏覽器div的文本顏色為#000,!important并沒有覆蓋后面的規(guī)則,也就是說!important被忽略了。解決方案是將該樣式拆分為2條,細節(jié)參見!important規(guī)則
BUG重現(xiàn):
a,span{display:block;background:#ddd;} <ul> <li><a href="http://css.doyoe.com/">CSS參考手冊</a></li> <li><a href="http://blog.doyoe.com/">CSS探索之旅</a></li> <li><a href="http://demo.doyoe.com/">web前端實驗室</a></li> <li><span>測試li內(nèi)部元素為設置了display:block的內(nèi)聯(lián)元素時底部產(chǎn)生空白</span></li> </ul>
如上代碼,IE6及更早瀏覽器每個li內(nèi)部的內(nèi)聯(lián)元素底部都會產(chǎn)生空白。解決方案是給li內(nèi)部的內(nèi)聯(lián)元素再加上zoom:1
BUG重現(xiàn):
#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="http://css.doyoe.com/">CSS參考手冊</a></li> <li><a href="http://blog.doyoe.com/">CSS探索之旅</a></li> <li><a href="http://demo.doyoe.com/">web前端實驗室</a></li> </ul> </div> </div>
如上代碼,IE6及更早瀏覽器div.nav會被設置了zoom:1的ul給撐開。
列舉幾個解決方法:
設置ul為浮動元素;
設置ul為inline元素;
設置ul的width
BUG重現(xiàn):
div{overflow:auto;width:260px;height:80px;border:1px solid #ddd;} p{position:relative;margin:0;} <div> <p>如果我是相對定位,我的父元素overflow屬性設置為auto|hidden將失效。如果你使用的是IE及更早瀏覽器,你將可以看到這個BUG</p> <p>如果我是相對定位,我的父元素overflow屬性設置為auto|hidden將失效。如果你使用的是IE及更早瀏覽器,你將可以看到這個BUG</p> </div>
如上代碼,在IE7及更早瀏覽器下你會看到div的滾動條將無法工作。解決方案是給div也設置相對定位position:relative
方法:
-webkit-transform-style:preserve-3d;或-webkit-backface-visibility:hidden;
在Chrome下,使用過渡效果transition時有時會出現(xiàn)頁面閃動