我希望li
形成水平菜单的元素均匀分布在ul
元素的宽度上。我通常将float
我的li
元素放在左边并添加一些边距。但是如何放置适当的间距,以便它们从ul
元素的左侧延伸到右边缘?
这是一个未分布在ul
.
每个之间的间距必须相同li
。但是li
元素可能有不同的长度。
我希望li
形成水平菜单的元素均匀分布在ul
元素的宽度上。我通常将float
我的li
元素放在左边并添加一些边距。但是如何放置适当的间距,以便它们从ul
元素的左侧延伸到右边缘?
这是一个未分布在ul
.
每个之间的间距必须相同li
。但是li
元素可能有不同的长度。
还有另一种方法。这是我尝试在页面上均匀地跨越菜单时使用的东西。如果您有一个动态菜单,该菜单会根据某些条件发生变化(例如仅当您以管理员身份登录时才会显示的管理页面),那就太好了。
CSS:
nav div ul {
display: table;
width: 100%;
list-style: none;
}
nav div ul li {
display: table-cell;
text-align: center;
}
nav div ul li a {
display: block;
}
我有点懒,只是从我当前的项目中复制了这个,所以你必须调整它以适应你的代码,但这是我创建水平菜单的首选方法
编辑:您可以通过添加以下内容使其看起来更好:
CSS:
nav div ul li:first-child {
text-align: left;
}
nav div ul li:last-child {
text-align: right;
}
再次,未经测试,只是输入。
您需要设置 li 元素的宽度以强制它们填充空间:
ul {
width: 100%;
}
li {
float: left;
width: 33%;
}
(小提琴演示)
如果您向列表中添加更多项目,则需要调整百分比宽度 - 例如,如果有四个项目,宽度将为 25%。
我有两个答案给你。
如果你想坚持float
模型:
您的ul
元素需要设置溢出属性(没有此属性,您的ul
(或任何包含浮动元素的元素)没有指定高度(这是预期的行为,请注意:http ://www.quirksmode.org/css/clearing .html),因此默认高度为 0 - 这样做的效果是,如果您为ul
/li
和 body设置不同的背景颜色,您的背景ul
似乎不会显示)。
ul {
text-align: center;
width: 300px;
overflow: auto;
}
您的li
元素需要设置宽度,否则 - 作为浮动元素 - 它们的宽度将设置为它们包含的任何内容。我在下面使用了像素,但您也可以使用百分比值。
li {
float: left;
margin: 5px 0 5px 0;
width: 100px;
text-align: center;
}
display:inline-block
为您的 li 元素使用该属性(如果对旧浏览器的支持不是优先事项)。IE 7 不支持这一点,因此如果您需要广泛的跨浏览器支持,它就没有用,但它会产生您想要的效果 - 尽管确保您随后删除您的</li>
和<li>
标签之间的任何空格,否则它们将被计入总宽度并将显示为元素之间的空格。
ul
此方法的一个优点是,如果您在包含的元素上使用百分比宽度,您不必知道或设置容器的宽度li
,您仍然可以使用已有的 text-align 属性免费获得居中。这使您的布局非常敏感。
这是我认为您要求的标记和CSS:
标记:
<ul>
<li>banana</li><li>orange</li><li>apple</li>
</ul>
CSS:
li {
display:inline-block;
margin:5px 0 5px 0;
width:33.33%;
}
ul {
text-align: center;
}
li
如果您希望将标记保留在多行上,那么您将不得不在 CSS 中调整元素的左右边距。li
元素,则必须更改百分比宽度以匹配(例如,li
标记中有四个元素,您需要将 CSS 更改为每个元素的宽度为 25%)。html:
<ul>
<li>1</li>
<li>2 <br>4</li>
<li>3</li>
</ul>
CSS:
ul {
list-style: none;
font-size: 0;
text-align: justify;
}
ul:after {
content: '';
display: inline-block;
width: 100%;
}
li {
font-size: 100px;
display: inline-block;
}
我没有清楚地得到你的问题,所以我假设你可能想要这个:
li {
border:solid 1px red;
clear:both;
display:block;
float: left;
margin: 5px;
width:100%;
}
ul {
text-align: center;
width:300px;
}