1. 实现效果
2. 实现代码
< template>
< div class = " body" >
< div class = " title" > CSS3实现蛇形布局</ div>
< div class = " list" >
< div class = " item" v-for = " (item, index) in 20" :style = " `--i: ${index}`" >
< span> {{ index + 1 }}</ span>
</ div>
</ div>
</ div>
</ template>
< script>
export default { } ;
</ script>
< style lang = " scss" scoped >
.body {
width : 100vw;
height : 100vh;
display : flex;
flex-direction : column;
align-items : center;
justify-content : center;
background : #de3730;
.title {
font-size : 25px;
font-weight : bold;
color : #fff;
}
.list {
padding : 20px;
display : flex;
width : 100vw;
gap : 40px;
flex-wrap : wrap;
.item {
width : calc ( ( 100% - 120px) / 4) ;
background : #00c297;
color : #fff;
font-size : 30px;
border-radius : 5px;
display : flex;
flex-direction : column;
align-items : center;
justify-content : center;
order : var ( --i) ;
padding : 10px;
position : relative;
span {
text-align : center;
font-size : 40px;
font-weight : bold;
}
&::after {
position : absolute;
content : "=>" ;
width : 18px;
display : inline-block;
font-size : 12px;
top : 50%;
transform : translateY ( -50%) ;
right : -30px;
z-index : 1;
color : #fff;
font-weight : bold;
font-size : 18px;
}
&:nth-child(8n + 5) {
order : calc ( var ( --i) + 3) ;
}
&:nth-child(8n + 6) {
order : calc ( var ( --i) + 1) ;
}
&:nth-child(8n + 7) {
order : calc ( var ( --i) - 1) ;
}
&:nth-child(8n + 8) {
order : calc ( var ( --i) - 3) ;
}
&:nth-child(8n + 4),
&:nth-child(8n + 8) {
&::after {
position : absolute;
left : 50%;
top : 110%;
font-weight : bold;
transform : translateX ( -50%) rotate ( 90deg) ;
}
}
&:nth-child(8n + 5),
&:nth-child(8n + 6),
&:nth-child(8n + 7) {
&::after {
left : -32px;
top : 50%;
transform : rotate ( 180deg) translateY ( 50%) ;
}
}
&:last-child {
&::after {
display : none;
}
}
}
}
}
</ style>