day12JavaScript实现无缝轮播

<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
    * {
        margin: 0;
        padding: 0;
        list-style: none;
    }

    div#cont {
        width: 960px;
        height: 320px;
        border: 1px solid #000;
        margin: 50px auto;
        position: relative;
        overflow: hidden;
    }

    div#cont ul {
        height: 320px;
        /* width: 3840px; */
        width: 4800px;
        /*  所有图片的宽度的和 */
        position: absolute;
        left: 0;
        top: 0;
    }

    div#cont ul li {
        float: left;
        width: 960px;
        height: 320px;
    }

    div#cont p {
        width: 100%;
        height: 20px;
        position: absolute;
        bottom: 20px;
        left: 0;
        text-align: center;
    }

    div#cont p span {
        display: inline-block;
        width: 20px;
        height: 20px;
        line-height: 20px;
        margin: 0 5px;
        background: blue;
        color: #fff;
    }

    div#cont p span.active {
        background: red;
    }
</style>
<div id="cont">
    <ul>
        <li><img src="./img/1.jpg" alt=""></li>
        <li><img src="./img/2.jpg" alt=""></li>
        <li><img src="./img/3.jpg" alt=""></li>
        <li><img src="./img/4.jpg" alt=""></li>
        <li><img src="./img/1.jpg" alt=""></li>
    </ul>
    <p>
        <span class="active">1</span>
        <span>2</span>
        <span>3</span>
        <span>4</span>
    </p>
</div>
</body>
<script>
    /*
        1. 进入页面后 每隔3s 换一张图
        2. 鼠标滑上  停止定时器
        3. 鼠标划下 开启定时器
        4. 点击左箭头 图片要切换上一张  4--3--2--1--4
        5. 点击右箭头 图片切换到下一章 1--2-3-4-1
        6. 点击小圆点  图片切换到对应的下标位置

        无缝轮播的原理: 
            在ul的最后多加一个li  这个li中放第一张图
            当li切换到最后一个的时候  一瞬间拉回到第一张
    */
    // 1. 进入页面后 每隔3s 换一张图
    var ul = document.getElementsByTagName('ul')[0];
    var lis = document.getElementsByTagName('li');
    var spans = document.getElementsByTagName('span');
    console.log(ul);

    // 不知道是第几张图 假设 0---1---2
    var n = 0;

    // 获取一张图片的宽度
    var div = document.getElementById('cont');
    var cw = div.clientWidth;

    // 开启定时器 让ul每隔3s移动一次
    setInterval(function(){
        n++;
        // console.log(n);
        if(n == lis.length){ // 已经到达最后一张
            n = 0;
            // ul的left也需要拉回到0
            ul.style.left = 0 + 'px';
            // 需要紧跟着切换到下一章
            n = 1;
        }
        // ul.style.left = -n * cw + 'px';
        move(ul, 'left', 60, -n * cw);

        // 小圆点的样式跟随改变 小圆点和图片的关系  一一对应  下标相同
        for(var i = 0; i < spans.length; i++){
            spans[i].className = '';
        }
        // 如果n是最后一张图 这时候小圆点应该显示第一个
        console.log(n);
        spans[n == lis.length - 1 ? 0 : n].className = 'active';
    }, 2000);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值