包装时如何使列表项在网格上排列?
How can I make list items line up on a grid when wrapping?
假设我有以下 <ul>
用于响应式设计:
li {
display: inline;
padding-right: 1em;
}
<ul>
<li>
MenuItemHeinz
</li>
<li>
MenuItemHinrich
</li>
<li>
MenuItemRoffen
</li>
<li>
MenuItemStaffRoffeltack
</li>
<li>
MenuItemHeinz
</li>
</ul>
当我调整浏览器 window 或查看 phone 中的页面时,它像这样中断:
如何使菜单项在断开时在网格上很好地排列,例如像这样?最好只使用 css ... 当然 ;)
您可以使用 css columns 和媒体查询。
li {
display: inline;
padding-right: 1em;
}
@media(max-width: 680px) {
ul {
-webkit-column-count: 2;
-moz-column-count: 2;
column-count: 2;
}
li {
display:block;
}
}
<ul>
<li>
MenuItemHeinz
</li>
<li>
MenuItemHinrich
</li>
<li>
MenuItemRoffen
</li>
<li>
MenuItemStaffRoffeltack
</li>
<li>
MenuItemHeinz
</li>
</ul>
这个布局比较简单 CSS flexbox.
ul {
display: flex;
flex-wrap: wrap;
list-style-type: none;
padding-left: 0;
}
ul li {
flex: 0 0 calc(50% - 10px);
margin: 5px;
padding: 5px 0;
text-align: center;
box-sizing: border-box;
border: 1px dashed red;
background-color: yellow;
}
<ul>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
</ul>
浏览器支持: 所有主流浏览器都支持Flexbox,except IE < 10. Some recent browser versions, such as Safari 8 and IE10, require vendor prefixes. For a quick way to add prefixes use Autoprefixer. More details in .
假设我有以下 <ul>
用于响应式设计:
li {
display: inline;
padding-right: 1em;
}
<ul>
<li>
MenuItemHeinz
</li>
<li>
MenuItemHinrich
</li>
<li>
MenuItemRoffen
</li>
<li>
MenuItemStaffRoffeltack
</li>
<li>
MenuItemHeinz
</li>
</ul>
当我调整浏览器 window 或查看 phone 中的页面时,它像这样中断:
如何使菜单项在断开时在网格上很好地排列,例如像这样?最好只使用 css ... 当然 ;)
您可以使用 css columns 和媒体查询。
li {
display: inline;
padding-right: 1em;
}
@media(max-width: 680px) {
ul {
-webkit-column-count: 2;
-moz-column-count: 2;
column-count: 2;
}
li {
display:block;
}
}
<ul>
<li>
MenuItemHeinz
</li>
<li>
MenuItemHinrich
</li>
<li>
MenuItemRoffen
</li>
<li>
MenuItemStaffRoffeltack
</li>
<li>
MenuItemHeinz
</li>
</ul>
这个布局比较简单 CSS flexbox.
ul {
display: flex;
flex-wrap: wrap;
list-style-type: none;
padding-left: 0;
}
ul li {
flex: 0 0 calc(50% - 10px);
margin: 5px;
padding: 5px 0;
text-align: center;
box-sizing: border-box;
border: 1px dashed red;
background-color: yellow;
}
<ul>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
<li><a href="#">item</a></li>
</ul>
浏览器支持: 所有主流浏览器都支持Flexbox,except IE < 10. Some recent browser versions, such as Safari 8 and IE10, require vendor prefixes. For a quick way to add prefixes use Autoprefixer. More details in