vue末⾏左对齐_让CSSflex布局最后⼀⾏列表左对齐的N种⽅
法(⼩结)
引⽤张鑫旭的⼀篇⽂章分享给⼤家,如果你想进⾏修改进⼊链接点到对应的图⽚⽣成的链接进⼊,⽅可修改。
问题描述
//html
//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;
css布局左边固定右边自适应.container {
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.list {
background-color: skyblue; margin: 10px;
}
/* 最后⼀项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少⼀个即可!
//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最后⼀⾏列表左对齐内容请搜索脚本之家以前的⽂章或继续浏览下⾯的相关⽂章,希望⼤家以后多多⽀持脚本之家!