JS实现轮播图(自动+手动)

网页轮播图效果:

请添加图片描述

核心原理:

tips:代码在文章末尾
在这里插入图片描述
这个ul就是我们这四张图片的父盒子,我们通过对这个父盒子添加动画函数来实现移动,然后给父盒子来一个溢出隐藏就达到了轮播的效果

动画函数如下:

function animate(obj,target,callback) {
   
    //先清除以前的定时器,只保留当前的一个定时器执行
    clearInterval(obj.timer);
    obj.timer = setInterval(function() {
   
    //步长值写到定时器里面
    //把我们步长值改为整数,不要出现小数的问题    
    var step = (target-obj.offsetLeft) / 10;
    //如果向右走就向上取整,向左走就向下取整
    step = step > 0 ? Math.ceil(step) : Math.floor(step);
    if(obj.offsetLeft == target)
    {
   
        clearInterval(obj.timer);
        //回调函数写到定时器结束里面
        if(callback) {
   
            callback();//调用函数
        }
    }
    else {
   
        obj.style.left = obj.offsetLeft + step + 'px';
    }
    },10);
}

在本例中,我们将这个动画函数封装在一个js文件里,这样我们在移动父盒子时,就可以直接调用这个动画函数。
对这里有疑问的同学可以去我的上一篇讲动画函数封装的文章里了解一下。

功能分析

我们分析下要做一个完美的网页轮播图都应该具备哪些功能:

  1. 鼠标经过轮播图模块,左右按钮显示,离开隐藏左右按钮。
  2. 点击右侧按钮一次,图片往左播放一张,以此类推,左侧按钮同理。
  3. 图片播放的同时,下面小圆圈模块跟随一起变化。
  4. 点击小圆圈,可以播放相应图片。
  5. 鼠标不经过轮播图,轮播图也会自动播放图片。
  6. 鼠标经过,轮播图模块,自动播放停止。

代码示例

<!DOCTYPE html>
<head>
    <meta charset="UTF-8">
    <style>
    * {
     
        margin: 0;
        padding: 0;
        box-sizing: border-box;
    }
    .box {
     
        position: relative;
        margin: 200px auto;
        width: 721px;
        height: 455px;
        overflow: hidden;
    }
    .left,
    .right {
     
        display: none;
        position: absolute;
        width: 25px;
        height: 35px;
        background: rgba(0, 0, 0, .3);
        line-height: 30px;
        text-align: center;
        font-size: 16px;
        top: 50%;
        transform: translateY(-50%);
        z-index: 2;
    }
    a {
     
        text-decoration:
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Frank.30

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

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

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

打赏作者

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

抵扣说明:

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

余额充值