我目前有这个简单的Flexbox布局:
ul {
display: flex;
flex-wrap: wrap;
list-style: none;
padding: 0;
}
li {
flex-grow: 1;
padding: 20px;
margin: 10px;
background: #ddd;
}Run Code Online (Sandbox Code Playgroud)
<ul>
<li>lorem</li>
<li>ipsum</li>
<li>dolor</li>
<li>sit</li>
<li>amet</li>
<li>consectetur</li>
<li>adipisicing</li>
<li>elit</li>
<li>sed</li>
<li>do</li>
<li>eiusmod</li>
<li>tempor</li>
<li>incididunt</li>
<li>ut</li>
<li>labore</li>
<li>et</li>
<li>dolore</li>
<li>magna</li>
<li>aliqua</li>
</ul>Run Code Online (Sandbox Code Playgroud)
我希望我的元素填充容器宽度(如现在),但保持最后一行左对齐.正如您所看到的,最后一行尝试填充空间,这有时会使最后一行元素变得难看.
Flexbox是否允许我们这样做?我找不到办法去做.
Ori*_*iol 39
您可以添加::after一个巨大的伪元素flex-grow,这样flex-grow: 1的的li元素可以忽略不计:
ul::after {
content: '';
flex-grow: 1000000000;
}
Run Code Online (Sandbox Code Playgroud)
ul {
display: flex;
flex-wrap: wrap;
list-style: none;
padding: 0;
}
li {
flex-grow: 1;
padding: 20px;
margin: 10px;
background: #ddd;
}
ul::after {
content: '';
flex-grow: 1000000000;
}Run Code Online (Sandbox Code Playgroud)
<ul>
<li>lorem</li>
<li>ipsum</li>
<li>dolor</li>
<li>sit</li>
<li>amet</li>
<li>consectetur</li>
<li>adipisicing</li>
<li>elit</li>
<li>sed</li>
<li>do</li>
<li>eiusmod</li>
<li>tempor</li>
<li>incididunt</li>
<li>ut</li>
<li>labore</li>
<li>et</li>
<li>dolore</li>
<li>magna</li>
<li>dolore</li>
<li>magna</li>
<li>aliqua</li>
</ul>Run Code Online (Sandbox Code Playgroud)
您还可以将空项目附加height: 0到容器中并让它们占用额外的空间:http : //codepen.io/anon/pen/OyOqrG
(从我的代码笔复制的来源:
<div class="container">
<p></p>
<p></p>
<p></p>
...
<p class="empty"></p>
<p class="empty"></p>
</div>
.container {
max-width: 490px;
display: flex;
flex-flow: row wrap;
background-color: #00f;
}
.container p {
min-width: 90px;
margin: 5px;
background-color: #f00;
height: 90px;
flex-grow: 1;
}
.container p.empty {
height: 0;
margin-top: 0;
margin-bottom: 0;
}
Run Code Online (Sandbox Code Playgroud)
遇到同样的问题,用css grid解决了。网格的最后一条规则左对齐,所有元素具有相同的宽度。
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
Run Code Online (Sandbox Code Playgroud)
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
Run Code Online (Sandbox Code Playgroud)
ul {
display: grid;
gap: 10px;
grid-template-columns: repeat(auto-fit, minmax(100px, 1fr));
list-style: none;
padding: 0;
}
li {
padding: 20px;
background: #ddd;
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7895 次 |
| 最近记录: |