效果如图所示:
思路:
使用元素覆盖的方式实现视觉上虚线的效果
实现代码:
html布局
html
<ul class="details-cont">
<li class="details-li" v-for="item in 3" :key="item">
<div class="li-status">{{ item }}</div>
<div class="li-flow-box">
<div class="flow-circle"></div>
<div class="flow-line"></div>
<div class="flow-line-other"></div>
</div>
<div class="li-details">
<div class="details-top">文字</div>
<div class="details-channel">文字文字文字</div>
<div class="details-stream">文字文字文字文字</div>
</div>
</li>
</ul>
css样式
css
.details-cont{
padding: 0 rem(24);
.details-li{
display: flex;
padding-bottom: rem(20);
.li-flow-box{
position: relative;
padding: rem(5) 0 0;
.flow-circle{
width: rem(8);
height: rem(8);
border-radius: 50%;
margin: 0 rem(7) 0 rem(5);
background: #D7D7D7;
}
.flow-line{
position: absolute;
left: rem(9);
top: rem(13);
bottom: rem(-23);
width: 1px;
border-left: 1px dashed #D7D7D7;
}
}
.li-details{
flex: 1;
font-size: rem(12);
color: #999999;
line-height: 18px;
.details-channel,.details-stream{
padding: rem(6) 0 0;
}
}
}
.details-li:last-child{
.li-flow-box{
.flow-line-other{
position: absolute;
left: rem(9);
top: rem(13);
bottom: rem(-23);
width: 1px;
border-left: 1px dashed #fff;
}
.flow-line{
border-image: linear-gradient(180deg, rgba(215, 215, 215, 1), rgba(237, 237, 237, 0.49), rgba(215, 215, 215, 0)) 1 1
}
}
}
}
PS:因为在移动端使用,单位代码使用统一的方法对rem进行了处理,此处rem(1),就相当于1px,