[英]Make a list of an unknown number of items stretch to full width of container, responsive
[英]how to make all list items stretch to full width of a container
我试图创建一个响应式导航,但我无法让菜单项相对于容器进行自我拉伸。
使所有元素自动适应容器的整个宽度的最有效的现代方法是什么?
<nav>
<ul>
<li><a href="#">a</a></li>
<li><a href="#">b</a></li>
<li><a href="#">c</a></li>
<li><a href="#">d</a></li>
<li><a href="#">e</a></li>
<li><a href="#">f</a></li>
</ul>
</nav>
nav { border: solid 1px #000; width: 700px; }
ul { width: 100%; list-style-type: none; width:100%; }
ul li { padding: 25px; display: inline-block; background: #000; color: #fff;}
我将按如下方式使用 CSS 表。
对于ul
,使用display: table
并将边距和填充归零,并将宽度设置为 100%。
对于ul li
,请使用display: table-cell
。
考虑到链接文本/标签的宽度,表格单元格将以合理的方式将自身调整为父级的宽度。
注意:我假设您希望链接是内联的,以便所有链接都填满宽度,而不是单个链接占据 100% 的宽度。 否则,将li
元素的display: inline-block
更改为display: block
,但由于这太明显了,我假设您想要水平布局。
nav { border: solid 1px #000; width: 700px; } ul { width: 100%; list-style-type: none; display: table; margin: 0; padding: 0; } ul li { padding: 25px; display: table-cell; background: #000; color: #fff; }
<nav> <ul> <li><a href="#">a</a></li> <li><a href="#">b</a></li> <li><a href="#">c</a></li> <li><a href="#">d</a></li> <li><a href="#">e</a></li> <li><a href="#">f</a></li> </ul> </nav>
如果你真的想要最现代的解决方案,你可以尝试 flexbox 布局: http : //jsfiddle.net/4dxkk5wr/15/
ul { width: 100%; list-style-type: none; display: flex; padding: 0; }
ul li { width: 100%; padding: 25px; box-sizing: border-box; background: #000; color: #fff; flex-wrap: nowrap; }
假设有效是在旁观者眼中,但 flexbox 非常现代:
nav { display: flex; border: solid 1px #000; width: 700px; }
ul { display: flex; flex-grow: 1; width: 100%; padding: 10px;
list-style-type: none; }
ul li { flex-grow: 1; padding: 25px; margin: 10px;
text-align: center; background: #000; color: #fff; }
见小提琴: http : //jsfiddle.net/4dxkk5wr/18/
和这个资源: https : //css-tricks.com/snippets/css/a-guide-to-flexbox/
玩得开心!
这是更新的 jsfiddle http://jsfiddle.net/4dxkk5wr/10/
您可以使用:
box-sizing: border-box;
width:100%;
在 li 标签中,并将 ul 上的填充设置为 0。
你可以使用这个css
nav {
border: solid 1px black;
width: 100%;
}
ul {
width: 100%;
list-style-type: none;
width:100%;
margin-left: -35px;
}
ul li {
padding: 100px;
display: inline-block;
background: #000;
color: #fff;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.