原生js实现轮播图——卡片模式(图片)

1、需求

  • 轮播图自动播放,无限循环,无缝衔接。
  • 鼠标进入,关闭定时器;鼠标离开,开启定时器。

2、效果

3、代码

html代码:

 <div class="box">
        <div class="list">
          <img src="../assets/01.png" class="selling_imgs" />
          <img src="../assets/02.png" class="selling_imgs" />
          <img src="../assets/03.jpeg" class="selling_imgs" />
          <img src="../assets/04.jpeg" class="selling_imgs" />
          <img src="../assets/05.jpeg" class="selling_imgs" />
          <img src="../assets/06.jpeg" class="selling_imgs six_div" />
        </div>
    </div>

css代码:

.box {
            width: 800px;
            height: 200px;
            position: relative;
            margin: 0 auto;
            overflow: hidden;/*超出部分隐藏*/            
        }
        .list{
            display:flex;
            position: absolute;
            left: 0px;
        }
        .list .selling_imgs{
            display: flex;
            justify-content: center;/*行距中*/
            align-items: center;/*列居中*/
            width: 200px;
            height: 200px;
            margin-left: 2px;
            margin-right: 2px;            
        }

js代码:

 function load(){
            const list=document.querySelector('.list')
            const box=document.querySelector('.box');
            list.innerHTML+=list.innerHTML //复制长度为两倍
            let left=list.style.left; //为list的左距离
            let timer;//为定时器
            // 移动函数 每次-2如果到达第二次的第一个div贴近list的情况下将会left==0,类似于障眼法。
            function move(){
                clearInterval(timer);
                // 定时器开启部分
                timer=setInterval((env)=>{
                    left=left-2;
                    console.log(list.clientLeft);
                    if(left==-(6*200+6*4)){ //指的是每个宽度200有6个加上我的margin宽度
                        left=0;
                    }
                    list.style.left=left+'px';
                },20);
            }
            
                 move();
                 //鼠标放入清楚计时器停止
                box.addEventListener('mouseenter',()=>{
                    clearInterval(timer);
                });
                // 鼠标移出执行一遍定时器继续移动
                box.onmouseleave=function(){
                     move();
                };
        };
        document.addEventListener('DOMContentLoaded',load);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小奋斗♛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值