測試程式如下:
<html>
<head>
<style>
.sp
{
float:left;
width:20px;
border-style:none;
background-color:red;
}
.full
{
float:left;
width:60px;
border-style:none;
background-color:yellow;
}
.myDiv
{
clear:left;
}
</style>
</head>
<body>
<div class="myDiv"><span class="full" >第一行</span></div>
<div class="myDiv"><span class="sp">1</span><span class="sp">2</span><span class="sp">3</span></div>
<div class="myDiv"><span class="full" >最末行</span></div>
</body>
</html>
在 FireFox , Chrome 呈現的結果是正確的,但在 IE 就會出現一個很討厭的小地方,就是每一個 Div 的行距空白空的很明顯,如下圖。在 FireFox 與 Chrome 並不會出現空白。為了解決 IE 這問題,在網路上找到可以用 display:inline 這樣式來處理。果真,IE 可以透過 display:inline 來解決,但...現下又換成 FireFox 、 Chrome 不行了。很想哭...
在「解決IE6、IE7、IE8、Firefox CSS兼容性的 Hack 写法」提出了解決不同瀏覽器處理 CSS 的作法,於是我讓 display:inline 只讓 IE 去使用,其他瀏覽器不准。這樣,還真的完整地把問題告一段落了。
最後修改的程式:
<html>
<head>
<style>
.sp
{
float:left;
width:20px;
border-style:none;
background-color:red;
}
.full
{
float:left;
width:60px;
border-style:none;
background-color:yellow;
}
.myDiv
{
clear:left;
*display:inline; //只針對 IE
}
</style>
</head>
<body>
<div class="myDiv"><span class="full" >第一行</span></div>
<div class="myDiv"><span class="sp">1</span><span class="sp">2</span><span class="sp">3</span></div>
<div class="myDiv"><span class="full" >最末行</span></div>
</body>
</html>
補充:
20110708
遇到一個特別的情況,當內容有中文時,IE8畫面顯示會不正常,但 FireFox,Chrome 可以。如果都是英文,則 IE 就正常了。因緣際會的看到 「IE在CSS中的因中文字體的錯誤」,試著也將 style 加上 「style='font-family:細明體'」 的設定,則 IE8 畫面就會正常。真是無言....

沒有留言:
張貼留言