javaScript学习笔记(四)案例篇(无缝连接轮播、跑马灯轮播、呼吸轮播)

一、无缝连接轮播

在这里插入图片描述

<!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>
        * {
            padding: 0;
            margin: 0;
        }
        .box {
            width: 700px;
            height: 130px;
            overflow: hidden;
            margin: 100px auto;
        }

        .box ul {
            list-style-type: none;
            display: flex;
            position: relative;
            left: 0;
            text-align: center;
        }

        .box ul li {
            width: 200px;
            height: 130px;
            /* margin-right: 10px; */
        }
    </style>
</head>

<body>
    <div class="box">
        <ul id='list'>
            <li><img src="./images//number/0.png" alt=""></li>
            <li><img src="./images//number/1.png" alt=""></li>
            <li><img src="./images//number/2.png" alt=""></li>
            <li><img src="./images//number/3.png" alt=""></li>
            <li><img src="./images//number/4.png" alt=""></li>
            <li><img src="./images//number/5.png" alt=""></li>
        </ul>
    </div>
</body>

<script>
    var list = document.getElementById('list')
    var listClone = list.cloneNode(true)
    list.innerHTML += listClone.innerHTML
    var left = 0
    move()
    var timer
    function move() {
        clearInterval(timer);
        timer = setInterval(() => {
            left -= 4
            if (left <= -1200) {
                left = 0
            }
            list.style.left = left + 'px'
        }, 20)

    }
    list.onmouseenter = function () {
        clearInterval(timer)
    }
    list.onmouseleave = function () {
        move()
    }
</script>

</html>

一、跑马灯轮播

在这里插入图片描述

<!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>
        * {
            padding: 0;
            margin: 0;
        }

        .box {
            width: 650px;
            height: 360px;
            margin: 100px auto;
            overflow: hidden;
            position: relative;
        }

        .box ul {
            display: flex;
            list-style-type: none;
            transition: all .5s ease 0s;
            position: relative;
            left: 0;

        }

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

        .left {
            left: 5px;
        }

        .rigth {
            right: 5px;
        }
    </style>
</head>

<body>
    <div class="box">
        <ul id='list'>
            <li> <img src="./images/beijing/0.jpg" alt=""></li>
            <li> <img src="./images/beijing/1.jpg" alt=""></li>
            <li> <img src="./images/beijing/2.jpg" alt=""></li>
            <li> <img src="./images/beijing/3.jpg" alt=""></li>
            <li> <img src="./images/beijing/4.jpg" alt=""></li>
        </ul>
        <button class="left btn" onclick="toLeft()"></button>
        <button class="rigth btn" onclick="toRight()"></button>
    </div>
    <script>
        var list = document.getElementById('list')
        var cloneFirstNode = list.firstElementChild.cloneNode(true)
        list.append(cloneFirstNode)
        var flag = 0
        var lock = true
        function toRight() {
            if (!lock) return
            lock = false
            list.style.transition = 'all .5s ease 0s'
            flag++
            console.log(flag)
            if (flag > 4) {
                setTimeout(_ => {
                    list.style.transition = 'none'
                    flag = 0
                    list.style.left = 0 + 'px'
                }, 500)
            }
            list.style.left = -650 * flag + 'px'
            setTimeout(_ => {
                lock = true
            }, 500)
        }


        function toLeft() {
            if (!lock) return
            lock = false
            flag--
            if (flag < 0) {
                list.style.transition = 'none'
                list.style.left = -650 * 5 + 'px'
                setTimeout(_ => {
                    list.style.transition = 'all .5s ease 0s'
                    flag = 4
                    list.style.left = -650 * flag + 'px'
                }, 0)
            } else {
                list.style.left = -650 * flag + 'px'
            }
            setTimeout(_ => {
                lock = true
            }, 500)
        }


    </script>
</body>

</html>

三、呼吸轮播

提示: 类似案例二。效果是淡入淡出

<!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>
        * {
            padding: 0;
            margin: 0;
        }

        .box {
            width: 650px;
            height: 360px;
            margin: 100px auto;
            position: relative;
        }

        .box ul {
            list-style-type: none;
            transition: all .5s ease 0s;

        }

        .box ul li {
            transition: all 0.5s ease 0s;
            opacity: 0;
            position: absolute;
            left: 0;
            top: 0;
        }

        .box ul>li:first-child {

            opacity: 1;
        }

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

        .left {
            left: 5px;
        }

        .rigth {
            right: 5px;
        }
    </style>
</head>

<body>
    <div class="box">
        <ul id='list'>
            <li> <img src="./images/beijing/0.jpg" alt=""></li>
            <li> <img src="./images/beijing/1.jpg" alt=""></li>
            <li> <img src="./images/beijing/2.jpg" alt=""></li>
            <li> <img src="./images/beijing/3.jpg" alt=""></li>
            <li> <img src="./images/beijing/4.jpg" alt=""></li>
        </ul>
        <button class="left btn" onclick="toLeft()"></button>
        <button class="rigth btn" onclick="toRight()"></button>
    </div>
    <script>
        var list = document.getElementById('list').children
        var flag = 0
        var lock = true
        function toRight() {
            if (!lock) return
            lock = false
            list[flag].style.opacity = 0
            flag++
            if (flag > 4) {
                flag = 0
            }
            list[flag].style.opacity = 1

            setTimeout(_ => {
                lock = true
            }, 500)
        }
        function toLeft() {
            if (!lock) return
            lock = false

            list[flag].style.opacity = 0
            flag--
            console.log(flag)
            if (flag < 0) {
                flag = 4
            }
            list[flag].style.opacity = 1

            setTimeout(_ => {
                lock = true
            }, 500)
        }


    </script>
</body>

</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值