伪类 样式问题

clipboard.png

代码:
<div class="scroll-bar">

    <ul class="scrollList">
       <li>1</li>
       <li>2</li>
       <li>3</li>
       <li>4</li>
    </ul>
</div>

css:
.scroll-bar .scrollList >li::before {

 content : '';
 width: 10px;
 height: 10px;
 border: 1px solid orange;
 border-radius: 20px;
 color: #666;
 position: absolute;
 top: 30px;
 left:-20px;
 z-index: 999;

}
.scroll-bar .scrollList >li::after{

 content: '';
 height: 30px;
 width: 1px;
 border: 1px solid orange;
 position: absolute;
 left: -16px;
 top: 42px;

}

需要做成 类似这样的效果,请问要怎么做?
clipboard.png

阅读 3.3k
3 个回答

可以靠background-clip实现
:before{
content : '';
width: 10px;
height: 10px;
border: 1px solid orange;
border-radius: 20px;
color: #666;
position: absolute;
top: 30px;
left:-20px;
z-index: 999;
background-clip:content-box;
padding:2px;
background-color:orange
}

clipboard.png

::before::after 是伪元素。

你这个地方明显没有多余的元素来做中间那个原点了,要自己加点元素进去了。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        ul{
            list-style: none;
            margin: 100px;
        }
        .scrollList >li{
            position: relative;
            height: 60px;
            line-height: 60px;
        }
    .scrollList >li::before {
        content : '';
        width: 12px;
        height: 12px;
        border: 1px solid orange;
        border-radius: 50%;
        color: #666;
        position: absolute;
        top: 50%;
        transform: translateY(-50%);
        left:-20px;
        z-index: 999;
        box-sizing: border-box;
}
.scrollList >li.active::before{
    background-clip:content-box;
    padding:2px;
    background-color:orange;
}
 .scrollList >li::after{
 content: '';
 height: 48px;
 width: 2px;
 position: absolute;
 left: -15px;
 top: 36px;
background: orange;
}
    </style>
</head>

<body>
        <ul class="scrollList">
                <li>1</li>
                <li>2</li>
                <li>3</li>
                <li>4</li>
             </ul>
    <script>
        var oLi = document.querySelectorAll(".scrollList li");
        for(var i = 0;i<oLi.length;i++){
            oLi[i].onclick = function(){
                this.classList.add("active");
            }
        }
    </script>
</body>

</html>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题