html照⽚4张9张布局,css实现朋友圈照⽚排列布局
纯css实现朋友圈不同数量图⽚不同布局
⾸先可以打开朋友圈观察不同图⽚数量的⼏种布局,也可参考下图⽰例;
可以发现 除1张图⽚,4张图⽚特殊外,其他数量图⽚均使⽤⼀⾏三列的⽅式排列;
假设有如下HTML代码,这⾥imgList是⼀个图⽚地址数组;
1、⾸先我们使⽤flex实现正常的三列布局:
设置为换⾏,每个元素占1/3或指定宽度,除每⾏最后⼀个元素(3n)都设置margin-right并通过预留间隔;ul{
display: flex;
justify-content: flex-start;
flex-wrap: wrap;
}
li{
width: 32%;
height: 100px;
margin-top: 5px;
}
.list:not(:nth-child(3n)) {
margin-right: 2%;
}
2、对于只有⼀张图⽚情况,只需⽤css选择器判断为⼀张图⽚时,改变图⽚⼤⼩即可;
选择器逻辑:元素为 倒数第⼀个元素  && 第⼀个元素 时,则可判断只有⼀个元素:对其样式单独设置覆盖原样式即可ul li: nth-last-child(1): first-child{
width: 200px;
height: 200px;
}
html的flex布局3、对于四张图⽚的情况时,图⽚需呈 两⾏两列布局:这⾥就需对此种情况下的第⼆张图⽚添加margin-right实现三列变两列:
选择器逻辑: 元素为 倒数第4个 &&  第⼀个的元素 时, 判断为共有四个元素,
再选择 其后的 同级元素 的第 2n 个后添加margin-right属性;ul li: nth-last-child(4): first-child ~ li: nth-child(2n){
margin-right: 32%;
}
再次之前需对第三个元素恢复间隔,或同朋友圈类似,四张照⽚是不显⽰间隔,如有需求也可设置其他属性,如下:(此属性需在上⼀条属性之前)ul li: nth-last-child(4): first-child , ul li: nth-last-child(4): first-child ~ li{
width: 50%; margin-right: 0; }