IE6下ul列表li使用float后高度变大bug解决方法

这两天做页面模板,有些li使用了float:left,结果发现行高在IE6下与其他浏览器不同了,总要高出一些。查了一下,发现这个是因为IE下特有的hasLayout造成的
IE6下ul列表li使用float后高度变大bug
这两天做页面模板,有些li使用了float:left,结果发现行高在IE6下与其他浏览器不同了,总要高出一些。查了一下,发现这个是因为IE下特有的hasLayout造成的,很多的IE下的CSS BUG都其有关。

代码如下:

<style>
ul {
margin:0;
padding:10px;
list-style:none;
background-color:#006699;
}
ul li {
width:100px;
height:100px;
float:left;
margin-right:10px;
background-color:#99cc00;
}
</style>
<ul>
<li>澳大利亚科幻频道Sci F更名为SF启用新台标</li>
<li>摄政公园音乐学院视觉形象设计</li>
</ul>

如何解决这个问题呢?其实很简单,而且也有多种方法:

方法1:使用zoom:1
折叠HTML/XML Code复制内容到剪贴板

<style>
ul {
margin:0;
padding:10px;
list-style:none;
background-color:#006699;
zoom:1;
}
ul li {
width:100px;
height:100px;
float:left;
margin-right:10px;
background-color:#99cc00;
}
</style>
<ul>
<li>澳大利亚科幻频道Sci F更名为SF启用新台标</li>
<li>摄政公园音乐学院视觉形象设计</li>
</ul>

在ul的样式表中增加了zoom:1就ok了。

方法2:
HTML/XML Code复制内容到剪贴板

<style>
ul {
margin:0;
padding:10px;
list-style:none;
background-color:#006699;
zoom:1;
}
* html ul {
height:1%;
}
ul li {
width:100px;
height:100px;
float:left;
margin-right:10px;
background-color:#99cc00;
}
</style>
<ul>
<li>澳大利亚科幻频道Sci F更名为SF启用新台标</li>
<li>摄政公园音乐学院视觉形象设计</li>
</ul>

小知识:什么是haslayout?

haslayout 是Windows Internet Explorer渲染引擎的一个内部组成部分。在InternetExplorer中,一个元素要么自己对自身的内容进行计算大小和组织,要么依赖于父元素来计算尺寸和组织内容。为了调节这两个不同的概念,渲染引擎采用了 hasLayout 的属性,属性值可以为true或false。当一个元素的 hasLayout属性值为true时,我们说这个元素有一个布局(layout)。
加载中

关键字

喜欢这篇文章?马上分享它!

延伸阅读