原生JS 实现点击每步的步骤条


1.style部分

  <style>
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }

        body,
        html {
            width: 100%;
            height: 100%;
        }

        .box {
            height: 100%;
            display: flex;
            justify-content: center;
            align-items: center;
        }

        .center {
            width: 100%;
            height: 20vh;
            display: flex;
            justify-content: center;
        }

        .items {
            width: 9vw;
            height: 18vh;
            background-color: #333;
            border-radius: 50%;
            position: relative;
            margin-right: 3vw;
        }
        /* 步骤圆形的激活样式 */
        .colorshow {
            background-color: #1e6adb;
        }
        .borederColor{
            border-color: transparent transparent transparent #1e6adb !important;
        }
        .triangle {
            border-style: solid;
            border-width: 1vw 1vw 1vw 1vw;
            border-color: transparent transparent transparent #333;
            position: absolute;
            right: -3vw;
            top: 7vh;
        }
        /* 让最后一个盒子没有border 这是元素的三角箭头*/
        .items:last-child .triangle {
            border: none;
        }
    style>

2.body部分

<body>
    <div class="box">
        <div class="center" id="item">
            
        div>
    div>
body>

3.JS部分

<script>
    window.onload = function () {

        let item = document.getElementById('item') //取到外层父盒子的dom  id为item的

        let html = '' //声明一个html片段

        // 循环这个html   i,< 5  循环多少个 就是几  
        for (let i = 0; i <= 5; i++) {
            html += "
" //这个就是你要循环的元素 } //再把元素用innerHTML 塞到 元素为item的盒子里面 item.innerHTML = html //取到循环出来的 所有子元素 let items = document.querySelectorAll('.items') //取到循环出来的 横三角 let triangle = document.querySelectorAll('.triangle') //循环子元素 i为子元素数组的length for (let i = 0; i < items.length; i++) { //给子元素点击事件 items[i].addEventListener('click', function () { //每次点击时 循环子元素数组 把所有子元素的class清空 for (let i = 0; i < items.length; i++) { items[i].classList.remove('colorshow') //colorshow是class样式 } // //每次点击时 循环子元素数组 把所有子元素的borederColor的class清空 for (let i = 0; i < triangle.length; i++) { triangle[i].classList.remove('borederColor') } //上面清空子元素 class后 在往里面添加 新的class items[i].classList.add('colorshow') //圆形的class triangle[i].classList.add('borederColor')//横三角的class console.log(triangle[i]) }) } } script>

效果图  样式可以自己修改

相关