第一张图片切换到第二张为啥没有动画效果的

第一张图片切换到第二张为啥没有动画效果的

<!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>简易轮播图</title>

    <style>

        * {

            margin: 0;

            padding: 0;

        }


        .box {

            width: 650px;

            height: 360px;

            border: 1px solid #000;

            margin: 100px auto;

            position: relative;

            overflow: hidden;

        }


        .box>#uls {

            width: 6000px;

            list-style: none;

            position: relative;

            transition: left .5s ease;

        }


        .box>#uls>li {

            float: left;

        }


        .box #btn-left,

        .box #btn-right {

            position: absolute;

            top: 50%;

            transform: translateY(-50%);

            font-size: 32px;

            background: rgba(0, 0, 0, .5);

            color: #fff;

            text-decoration: none;

            border-radius: 5px;

            width: 40px;

            height: 40px;

            line-height: 40px;

            text-align: center;

        }


        .box #btn-left {

            left: 0;

        }


        .box #btn-right {

            right: 0;

        }

    </style>

    <script>

        window.addEventListener('load', function () {

            var btnLeft = document.getElementById('btn-left');

            var btnRight = document.getElementById('btn-right');

            var uls = document.getElementById('uls');

            var firstLi = uls.getElementsByTagName('li')[0];

            var cloneChild = firstLi.cloneNode(true);

            uls.appendChild(cloneChild)

            var index = 0;

            var lock = true;

            btnRight.onclick = function () {

                if (!lock) return;

                lock = false;

                index++;

                if (index > 4) {

                    setTimeout(() => {

                        index = 0;

                        uls.style.transition = 'none';

                        uls.style.left = -index * 650 + 'px';

                    }, 500);

                }

                uls.style.left = -index * 650 + 'px';

                uls.style.transition = 'left .5s  ease';

                setTimeout(() => {

                    lock = true;

                }, 500);

            };

            btnLeft.onclick = function () {

                if (!lock) return;

                lock = false;

                if (index == 0) {

                    index = 5;

                    uls.style.left = -index * 650 + 'px';

                    uls.style.transition = 'none';

                    setTimeout(() => {

                        index = 4;

                        uls.style.left = -index * 650 + 'px';

                        uls.style.transition = 'left .5s ease';

                    }, 0);

                } else {

                    index--;

                    uls.style.left = -index * 650 + 'px';

                    uls.style.transition = 'left .5s  ease';

                }

                setTimeout(() => {

                    lock = true;

                }, 500);

            }

        })

    </script>

</head>


<body>

    <div id="box" class="box">

        <ul id="uls">

            <li><img src="./images/0.jpg" alt=""></li>

            <li><img src="./images/1.jpg" alt=""></li>

            <li><img src="./images/2.jpg" alt=""></li>

            <li><img src="./images/3.jpg" alt=""></li>

            <li><img src="./images/4.jpg" alt=""></li>

        </ul>

        <a href="javascript:;" id="btn-left">&lt;</a>

        <a href="javascript:;" id="btn-right">&gt;</a>

    </div>

</body>


</html>


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕然然 2021-11-28 18:01:22

同学你好,因为过渡效果是由一个状态渐变到另一个状态,当轮播图由第一张图片切换到第二张图片时,也就是由一个left值变化到另一个left值,此时需要设置left初始值和结束值。而没有过渡效果,正是因为没有给过渡元素#uls设置left初始值,如图

https://img1.sycdn.imooc.com//climg/61a3534b097af19606690381.jpg

祝学习愉快!

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师