浮动li在ul,ul与溢出:自动生成垂直滚动条

问题描述:

我有一个<ul>与几个漂浮<li>的。我做了我的标准css overflow:auto;清除浮动,并有<ul>匹配的孩子的大小。这在webkit浏览器中效果很好,但是在Firefox中它会生成一个垂直滚动条。我通过使用overflow: hidden;解决了问题,但我很好奇,如果有人知道为什么overflow:auto;<ul>元素中产生此行为。有人知道吗?浮动li在ul,ul与溢出:自动生成垂直滚动条

你说你匹配儿童的大小,这意味着你已经设置了高度/宽度<ul>,所以如果没有足够的高度,那么可能会出现垂直滚动条。此行为可能会因浏览器对差异边距,填充,默认等的解释而有所不同。

+0

溢出:auto;和溢出:隐藏;在父元素上导致它自动调整大小给它的子元素,ul元素没有设置高度。 – 2012-08-06 20:32:24

+0

我想我不知道确切的解释,但是当遇到类似的情况时,我在高度和宽度方面保留了一些摆动空间 – kewlashu 2012-08-07 10:19:46

没有溢出:无。默认值是“可见的”。用overflow:auto解除了你想要的浮点遏制。

如果你设置溢出,那么不要在ul上设置高度。在溢出的元素上设置高度实际上是要求孩子得到切断(溢出:隐藏)或强制滚动条(自动)。不要在父级上设置尺寸“auto”,没有理由首先创建任何滚动条。

没有看到任何代码,可能浏览器之间的区别只是字体渲染。也许你的火狐浏览器里面的文本只是一个更大的头发。让李的更大。使他们需要溢出他们的固定高度的容器。

虽然如此,并且由于某种原因,您确实需要在控制溢出的父级上设置高度,但请尝试在em中设置高度。然后,只要文本不换行到新行,它可以随文本增长一点。

你也可以使用任何其他浮法遏制代码,如果这个代码是高挑的。

+0

我没有设置ul高度;当你将overflow设置为hidden或auto时,它的ul高度就等于它的子项的高度。当我选择溢出时:隐藏;它摆脱了滚动条,但溢出:汽车;它显示了一个滚动条。这是奇怪的行为,因为没有设置ul的高度,溢出auto show只会导致ul元素成为其子元素的完整大小,而不会创建垂直滚动。 – 2012-08-06 20:31:47

+0

至于你的字体渲染评论,难道不应该扮演一个角色吗? ul应该自动调整大小,以适合呈现儿童的任何尺寸 – 2012-08-06 20:33:14

+0

对不起,但我不得不假设你在ul上设置了一个高度(你发布了很少的代码,我们猜测发生了什么),因为这是导致滚动条出现的原因在溢出时:auto元素(尺寸设置为小于儿童总大小)。如果高度是自动的,但是如果较大的字体可以使较大的孩子和限制父母的尺寸,那么你是对的字体,然后你会看到它。无论如何,如果你发布更多的代码,可能会出现另一种可能性。 – stommepoes 2012-08-07 06:51:41