让CSSflex布局最后⼀⾏列表左对齐的N种⽅法(⼩结)引⽤分享给⼤家,如果你想进⾏修改进⼊链接点到对应的图⽚⽣成的链接进⼊,⽅可修改。
问题描述
//html
<div class="container">
<div class="list"></div>
<div class="list"></div>
<div class="list"></div>
<div class="list"></div>
<div class="list"></div>
<div class="list"></div>
<div class="list"></div>
</div>
//css
.container {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.list {
width: 24%; height: 100px;
background-color: skyblue;
margin-top: 15px;
}
这种情况明显与我们想要的情况不同。
⾏数固定解决⽅法
⽅法⼀⽤margin 模拟缝隙
⽐如
.container {
display: flex;
flex-wrap: wrap;
}
.list {
width: 24%; height: 100px;
background-color: skyblue;
margin-top: 15px;
}
.list:not(:nth-child(4n)) {
margin-right: calc(4% / 3);
}
样式如下
⽅法⼆根据最后⼀⾏个数确定margin
由于每⼀列的数⽬都是固定的,因此,我们可以计算出不同个数列表应当多⼤的margin值才能保证完全左对齐。
例如,假设每⾏4个元素,结果最后⼀⾏只有3个元素,则最后⼀个元素的margin-right⼤⼩是“列表宽度+间隙⼤⼩”的话,那最后3个元素也是可以完美左对齐的。
然后,借助树结构伪类数量匹配技术(这篇⽂章“伪类匹配列表数⽬实现头像CSS布局的技巧”中的布局技巧就是借助这种技术实现),我们可以知道最后⼀⾏有⼏个元素。
例如:
.list:last-child:nth-child(4n - 1)说明最后⼀⾏,要么3个元素,要么7个元素……
.list:last-child:nth-child(4n - 2)说明最后⼀⾏,要么2个元素,要么6个元素……
在本例中,⼀⾏就4个元素,因此,我们可以有如下CSS设置:
.
container {
display: flex;
/* 两端对齐 */
justify-content: space-between;
flex-wrap: wrap;
}
.list {
width: 24%; height: 100px;
background-color: skyblue;
margin-top: 15px;
}
/
* 如果最后⼀⾏是3个元素 */
.list:last-child:nth-child(4n - 1) {
margin-right: calc(24% + 4% / 3);
}
/* 如果最后⼀⾏是2个元素 */
.list:last-child:nth-child(4n - 2) {
margin-right: calc(48% + 8% / 3);
}
呈现的现象如下
即使你做了删除操作,依旧是完好的样式。这⼀点很佩服
⽅法三如果⼦元素的宽度不固定
这个就很难处理,但是依旧有解决⽅法,程序真是越来越有意思。
这个时候⽤上边的那种⽅法就⽐较困难了,因为宽度不固定不能根据宽度计算出margin的值(1)最后⼀项margin-right:auto;
.container {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.list {
background-color: skyblue;
margin: 10px;
flex布局对齐方式}
/* 最后⼀项margin-right:auto */
.list:last-child {
margin-right: auto;
}
(2)创建伪元素并设置flex:auto或flex:1
.container {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.list {
background-color: skyblue;
margin: 10px;
}
/* 使⽤伪元素辅助左对齐 */
.container::after {
content: '';
flex: auto; /* 或者flex: 1 */
}
四、如果每⼀⾏列数不固定
//HTML代码:
<div class="container">
<div class="list"></div>
<div class="list"></div>
<div class="list"></div>
<div class="list"></div>
<div class="list"></div>
<div class="list"></div>
<div class="list"></div>
<i></i><i></i><i></i><i></i><i></i><i></i>//⽐div少⼀个即可!
</div>
//CSS代码:
.container {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
margin-right: -10px;
}
.list {
width: 100px; height:100px;
background-color: skyblue;
margin: 15px 10px 0 0;
}
.container > i {
width: 100px;
margin-right: 10px;
}
到此这篇关于让CSS flex布局最后⼀⾏列表左对齐的N种⽅法(⼩结)的⽂章就介绍到这了,更多相关CSS flex最后⼀⾏列表左对齐内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章,希望⼤家以后多多⽀持!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论