老师,麻烦您帮忙看一下,不知道为什么实现不了效果

来源:6-4 编写呼吸轮播特效

张艺兴的宝贝

2022-09-19 10:54:31

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

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        .carousel {
            width: 650px;
            height: 360px;
            border: 1px solid #000;
            margin: 50px auto;
            position: relative;
        }

        .carousel ul {
            list-style: none;
        }

        .carousel ul li {
            position: absolute;
            top: 0;
            left: 0;
            opacity: 0;
            transition: opacity .5s ease 0s;
        }

        .carousel ul li:first-child {
            opacity: 1;
        }

        .carousel .btn {
            width: 50px;
            height: 50px;
            background-color: aqua;
            border-radius: 50%;
            position: absolute;
            top: 50%;
            margin-top: -25px;
        }

        .carousel #leftbtn {
            left: 20px;
        }

        .carousel #rightbtn {
            right: 20px;
        }
    </style>
</head>

<body>
    <div id="carousel" class="carousel">
        <ul id="list" class="list">
            <li><img src="../images/beijing/0.jpg"></li>
            <li><img src="../images/beijing/1.jpg"></li>
            <li><img src="../images/beijing/2.jpg"></li>
            <li><img src="../images/beijing/3.jpg"></li>
            <li><img src="../images/beijing/4.jpg"></li>
        </ul>
        <a href="javascript:;" id="leftbtn" class="btn"></a>
        <a href="javascript:;" id="rightbtn" class="btn"></a>
    </div>
    <script>
        var leftBtn = document.getElementById('leftbtn');
        var rightBtn = document.getElementById('rightBtn');
        var list = document.getElementById('list');
        var lis = list.getElementsByTagName('li');
        var idx = 0;
        var lock = true;
        rightBtn.onclick = function () {
            if(!lock) return;
            lock = false;
            lis[idx].style.opacity = 0;
            idx++;
            if(idx > 4) idx = 0;
            lis[idx].style.opacity = 1;
            setTimeout(function(){
                lock = true;
            },1000);
        }
        leftBtn.onclick = function(){
            if(!lock) return;
            lock =false;
            lis[idx].stylie = 0;
            idx--;
            if(idx < 0) idx = 4;
            lis[idx].style.opacity = 1;
            setTimeout(function(){
                lock = true;
            },1000);
        }
    </script>
</body>

</html>

https://img.mukewang.com/climg/6327d94509533e5a09220576.jpg

问题描述:

还有这个函数节流,不应该是进来先判断锁的状态,然后执行锁开着时的代码,然后再关锁吗?为什么这个判断完直接就关锁了

写回答

1回答

好帮手慕慕子

2022-09-19

同学你好,问题解答如下:

1、因为获取元素的id名书写有误,获取结果为空,无法绑定点击事件,导致效果无法实现。建议修改:

https://img.mukewang.com/climg/6327e00809b99ca812820358.jpg

2、因为要防止短时间内多次点击按钮导致动画错乱的效果,所以先判断锁的状态,如果关锁的话,直接return返回,否则的话,调整为关锁,然后执行后面的代码,如果在代码执行期间再次点击按钮,就直接return返回了,不会再次执行后面的代码。

祝学习愉快~

0

前端工程师

前端入门如同写字,如果你不知道从哪开始,那就选择前端(含Vue3.x,React17,TS)

20327 学习 · 17877 问题

查看课程