如何使列表项水平填充div?

时间:2013-08-28 04:10:25

标签: css html html-lists zoom listitem

我有一个div,在里面有一个无序列表,其中有几个列表项用作导航菜单项。当列表项目悬停在上面时,会转换与列表中其他项目不同的特定背景颜色。我想知道如何确保列表项始终完全填充div水平,无论缩放级别如何。目前,当我以100%缩放查看页面时,列表项完全填充导航div(最后一个列表项和div的右边界之间没有空格),但是当我缩小时,会出现一个空白区域在最后一个列表项的右侧。

理想情况下,我想使用CSS来做到这一点。我应该调整CSS中的哪些属性或属性,以确保在放大或缩小时,列表项占用的div和空间总是以相同的速率收缩或扩展?

我自己看不到HTML代码(我正在修改模板),这也意味着我无法单独设置每个列表项的宽度,但无序列表的CSS如下所示: / p>

#navigation ul {
width: 100%;
resize: vertical;
}

#navigation li {
float: left;
position: relative;
resize: vertical;
}

调整大小:vertical和float:left是我添加的,这是我努力使无序列表始终跨越div的宽度。如您所见,无序列表的宽度已设置为100%,但它不会填充div,除非以100%缩放查看页面。如果没有其他工作,有没有办法让用户放大或缩小页面时不调整菜单项的div或字体?

4 个答案:

答案 0 :(得分:1)

ul li{
  display:inline-block;
  margin-right:10px;
}
<ul>
<li>Home</li>
<li>About</li>
<li>Contact</li>
<li>Impressum</li>
</ul>

答案 1 :(得分:0)

请上传您的代码。

但是,如果我的理解是正确的,那么如果应该跨越div的整个长度,则将无序列表的宽度设置为100%。

ul{ width:100%; }

应该这样做。

答案 2 :(得分:0)

我会使用列表元素li的百分比宽度。这是我过于简单化的jsFiddle:http://jsfiddle.net/XT3gU/

ul的宽度设置为100%。按列表项的数量除以100。我用了4,所以100/4 = 25。

如果您的百分比值等于每个161.75像素,则需要密切注意子像素舍入问题。

HTML

<ul>
    <li>One</li>
    <li>Two</li>
    <li>Three</li>
    <li>Four</li>
</ul>

CSS

ul, li {
    list-style: none;
    margin: 0;
    padding: 0;
}
ul {
    width: 100%;
}
li {
    float: left;
    width: 25%;
}
li:hover {
    background-color: #DEDEDE;
}

答案 3 :(得分:0)

谢谢大家的答案!

我终于想出了如何做到这一点。由于我正在修改模板而且我的大部分HTML都被隐藏了,因此我的情况变得复杂了。我可以编辑我想要的CSS,然而,我发现我可以使用CSS单独调整每个列表项的宽度,如下所示:

#navigation .w-menu-item.wsite-nav-3 {
width: 5%;
}

,其中wsite-nav-3中的3是列表项的编号。这个,并在CSS中的无序列表属性中删除float-left,但保留在list-item属性中,实现了预期的效果 - 无序列表项现在填满整个div,无论是什么缩放级别。