原生JS轮播图+自动播放+按钮切换+鼠标经过暂停+底部圆点切换

这篇具有很好参考价值的文章主要介绍了原生JS轮播图+自动播放+按钮切换+鼠标经过暂停+底部圆点切换。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

手搓一个原生的JS轮播图,HTML部分就随意写了一点,重点的逻辑还是在JS中,可以实现自动播放banner图片,还有按钮点击切换banner和底部小圆点,点击底部小圆点可以切换banner图等功能,先上个图吧,是不是很丰富<`_`>

点击小圆点切换轮播图,javascript,前端,css,html

 先放JS部分的代码吧,主要用到了点击事件、定时器等技术。

每一步的注释都已经写好了,请放心食用,如有不清楚的地方可以在评论区交流一下,如有错误的地方还请大佬指指点点。

    //author:奥里给小饼干
    //site:hellodajun.cn
    // 初始数据
        const data = [{
                url: './images/banner01.jpg',
                title: '我是banner01',
                color: '#4e6acd'
            }, {
                url: './images/banner02.jpg',
                title: '我是banner02',
                color: '#fa8484'
            }, {
                url: './images/banner03.jpg',
                title: '我是banner03',
                color: '#ed8c03'
            }]
            // 准备工作:先获取所有需要操作的元素  
        const next = document.querySelector('.next')
        const img = document.querySelector('img')
        const lis = document.querySelectorAll('ul li')
        let i = 0 //下标从0开始计
            //0、封装render函数提取公共代码
        function render() {
            //0.1、 更换数组中第i个banner图
            img.src = data[i].url
                //0.2、 删除已有的 active
            document.querySelector('.active').classList.remove('active')
                // 0.3、添加的 active 
            lis[i].classList.add('active')
        }

        // 1、按钮的注册点击事件
        // 1.1 右侧的按钮点击事件->实现切换图片和圆点
        next.addEventListener('click', function() {
            //1.2点击之后i每次加1
            i++
            //1.3大于等于数组长度(3) 的时候 下标从0开始
            if (i >= data.length) {
                i = 0
            }
            //渲染页面
            render()
        })

        // 2、 右侧的按钮点击事件->实现切换图片和圆点 
        const prev = document.querySelector('.prev')
        prev.addEventListener('click', function() {
            //2.1、同理 每次点击i就减1
            i--
            //2.2、小于0 时, 下标从最后一位下标(data.length - 1)开始
            if (i < 0) {
                i = data.length - 1
            }
            //渲染一下
            render()

        })

        // 3、自动播放图片->定时器 —> 自动执行已经写好按钮点击事件
        let timer = setInterval(function() {
            //3.1、 自动点击事件的方法 !直接用就行
            next.click()
        }, 1000)

        // 4、 鼠标经过/离开 可以继续/暂停 播放  
        const slider = document.querySelector('.slider')
            //4.1 给大盒子注册鼠标经过事件
        slider.addEventListener('mouseenter', function() {
            //4.2 经过就清除定时器   
            clearInterval(timer)
        })

        //5.1、鼠标离开事件
        slider.addEventListener('mouseleave', function() {
            // 5.2鼠标离开就重新开启定时器   
            timer = setInterval(function() {
                // 5.3 定时器中添加自动点击按钮
                next.click()
            }, 1000)
        })

        // 6、点击小圆点切换图片 
        // 6.1、遍历伪数组中的每一个DOM对象(li)
        for (let j = 0; j < lis.length; j++) {
            // 6.2、给小圆点注册点击事件
            lis[j].addEventListener('click', function() {
                //6.3、跟i变量保持一致 点击第j个圆点就切换到第i个banner图  
                i = j
                    //渲染页面
                render()
            })
        }
     //author:奥里给小饼干
    //site:hellodajun.cn

差不多就可以了,还要什么自行车。下面就放上CSS+JS的完整的代码。文章来源地址https://www.toymoban.com/news/detail-736572.html

 //author:奥里给小饼干
 //site:hellodajun.cn
<!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>
        * {
            box-sizing: border-box;
        }
        
        .slider {
            position: relative;
            width: 800px;
            height: 320px;
            margin: 0 auto;
            overflow: hidden;
        }
        
        .slider-wrapper {
            width: 100%;
            height: 320px;
        }
        
        .slider-wrapper img {
            display: block;
            width: 100%;
            height: 100%;
        }
        
        .prev {
            position: absolute;
            top: 50%;
            left: 0;
            transform: translateY(-50%);
        }
        
        .next {
            position: absolute;
            top: 50%;
            right: 0;
            transform: translateY(-50%);
        }
        
        button {
            width: 28px;
            height: 28px;
            appearance: none;
            border: none;
            background: rgba(231, 226, 226, 0.5);
            color: #fff;
            border-radius: 4px;
            cursor: pointer;
        }
        
        .slider-footer .toggle button:hover {
            background: rgba(85, 85, 85, 0.8);
        }
        
        .slider-indicator {
            position: absolute;
            bottom: 5%;
            left: 50%;
            transform: translateX(-50%);
            display: flex;
            margin: 0;
            padding: 0;
            list-style: none;
            align-items: center;
        }
        
        .slider-indicator li {
            width: 8px;
            height: 8px;
            margin: 4px;
            border-radius: 50%;
            background: hsl(0, 47%, 96%);
            opacity: 0.4;
            cursor: pointer;
        }
        
        .slider-indicator li.active {
            width: 12px;
            height: 12px;
            opacity: 1;
        }
    </style>
</head>

<body>
    <div class="slider">
        <div class="slider-wrapper">
            <img src="./images/banner01.jpg" alt="" />
        </div>
        <!-- 小圆点 -->
        <ul class="slider-indicator">
            <li class="active"></li>
            <li></li>
            <li></li>
        </ul>
        <!-- 按钮 -->
        <button class="prev">&lt;</button>
        <button class="next">&gt;</button>

    </div>
    <script>
        //
        // 初始数据
        const data = [{
                url: './images/banner01.jpg',
                title: '我是banner01',
                color: '#4e6acd'
            }, {
                url: './images/banner02.jpg',
                title: '我是banner02',
                color: '#fa8484'
            }, {
                url: './images/banner03.jpg',
                title: '我是banner03',
                color: '#ed8c03'
            }]
            // 准备工作:先获取所有需要操作的元素  
        const next = document.querySelector('.next')
        const img = document.querySelector('img')
        const lis = document.querySelectorAll('ul li')
        let i = 0 //下标从0开始计
            //0、封装render函数提取公共代码
        function render() {
            //0.1、 更换数组中第i个banner图
            img.src = data[i].url
                //0.2、 删除已有的 active
            document.querySelector('.active').classList.remove('active')
                // 0.3、添加的 active 
            lis[i].classList.add('active')
        }

        // 1、按钮的注册点击事件
        // 1.1 右侧的按钮点击事件->实现切换图片和圆点
        next.addEventListener('click', function() {
            //1.2点击之后i每次加1
            i++
            //1.3大于等于数组长度(3) 的时候 下标从0开始
            if (i >= data.length) {
                i = 0
            }
            //渲染页面
            render()
        })

        // 2、 右侧的按钮点击事件->实现切换图片和圆点 
        const prev = document.querySelector('.prev')
        prev.addEventListener('click', function() {
            //2.1、同理 每次点击i就减1
            i--
            //2.2、小于0 时, 下标从最后一位下标(data.length - 1)开始
            if (i < 0) {
                i = data.length - 1
            }
            //渲染一下
            render()

        })

        // 3、自动播放图片->定时器 —> 自动执行已经写好按钮点击事件
        let timer = setInterval(function() {
            //3.1、 自动点击事件的方法 !直接用就行
            next.click()
        }, 1000)

        // 4、 鼠标经过/离开 可以继续/暂停 播放  
        const slider = document.querySelector('.slider')
            //4.1 给大盒子注册鼠标经过事件
        slider.addEventListener('mouseenter', function() {
            //4.2 经过就清除定时器   
            clearInterval(timer)
        })

        //5.1、鼠标离开事件
        slider.addEventListener('mouseleave', function() {
            // 5.2鼠标离开就重新开启定时器   
            timer = setInterval(function() {
                // 5.3 定时器中添加自动点击按钮
                next.click()
            }, 1000)
        })

        // 6、点击小圆点切换图片 
        // 6.1、遍历伪数组中的每一个DOM对象(li)
        for (let j = 0; j < lis.length; j++) {
            // 6.2、给小圆点注册点击事件
            lis[j].addEventListener('click', function() {
                //6.3、跟i变量保持一致 点击第j个圆点就切换到第i个banner图  
                i = j
                    //渲染页面
                render()
            })
        }
    </script>
</body>
</html>
 //author:奥里给小饼干
 //site:hellodajun.cn

到了这里,关于原生JS轮播图+自动播放+按钮切换+鼠标经过暂停+底部圆点切换的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • js实现左右切换轮播图效果

    实现效果: 自动向右循环播放 鼠标悬停,移出继续播放 点击向右按钮,跳到下一张 点击向左按钮,跳到上一张 保证图片的过渡效果完整呈现后,才能跳到下一张 底部圆点随图片位置切换激活状态 实现思路: 把第一张图片复制到最后一张 当播放到最后一张时,无缝切换到

    2024年01月20日
    浏览(57)
  • 原生 JS 实现一个简单轮播图

    在动手实现轮播图之前,我们先来明确一下要实现的效果。 默认自动轮播,每隔4秒切换一张图片 鼠标点击任一个小圆点即可切换到对应的图片 鼠标移入轮播区域时,两侧出现切换图片的按钮,点击按钮分别切换到上(下)一张图片 因此,轮播图可以分为三个主要部分,首

    2024年02月09日
    浏览(62)
  • HTML+CSS+JavaScript:轮播图自动播放

    轮播图如下图所示,需求是每隔一秒轮播图自动切换一次   以下是缺失JS部分的代码,感兴趣的小伙伴可以先自己试着写一写 1、将代码素材在浏览器中打开,并按F12进入开发者模式,分析各个HTML标签在轮播图中的位置及作用 2、获取相关元素 3、利用间歇函数实现一秒切换一

    2024年02月14日
    浏览(47)
  • 使用vant+video.js实现轮播图图片和视频轮播播放

    先上效果图 1. 安装 2. 在需要用到的页面引入 3. 具体页面使用 假设传给子组件的数组结构 按照步骤来使用,其他地方视频播放情况都还好,至少安卓是好的,只是点击播放和暂停时候,ios需要点击多下才能触发点击事件; 然后以为是video.js插件可能没更新,ios版本迭代超过

    2023年04月08日
    浏览(46)
  • web前端【3】JS基础-轮播图【JavaScript、定时器、鼠标动作、自动轮播、增加和减少li列表】

    一、实验题目: 轮播图 二、实验内容简介 1.整体布局:图片、左右按钮、数字列表、添加删除按钮 2、左右箭头滚动 3、小圆点滚动 4、自动轮播 5、鼠标动作:指向和离开 6、添加与删除 三、实验过程 1. 需求分析 整体布局:设计一个轮播图,中间部分为自动轮播的图片展示

    2024年02月04日
    浏览(57)
  • 前端Vue自定义轮播图视频播放组件 仿京东商品详情轮播图视频Video播放效果 可图片预览

    随着技术的发展,开发的复杂度也越来越高,传统开发方式将一个系统做成了整块应用,经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改,造成牵一发而动全身。通过组件化开发,可以有效实现单独开发,单独维护,而且他们之间可以随

    2024年02月15日
    浏览(53)
  • vue3 实现门户网站页面鼠标滚轮控制页面上下滚动---类似轮播图

    案例参考:首页_CNESA 储能研究平台 //监听鼠标滚动事件  window.addEventListener(\\\'mousewheel\\\', debounce(methodB,300), true)||window.addEventListener(\\\"DOMMouseScroll\\\",debounce(methodB,300),false) const debounce = (func, wait) ={         let timeout;         return  function() {             let context = this;            

    2024年02月12日
    浏览(79)
  • JS常用插件 Swiper插件 实现轮播图

    Swiper 是一款免费以及轻量级的移动设备触控滑块的js框架 中文官网地址: https://www.swiper.com.cn/ 点击查看 Swiper演示 ,里面的功能和样式十分丰富,根据自己的需求选择 中文教程 中详细介绍了如何使用Swiper API文档 中介绍了各个模块以及参数的详细信息,遇到不明白的参数可以

    2024年02月01日
    浏览(65)
  • 使用JS来实现轮播图的效果

    最好今天分享一个使用JS制作的轮播图效果 个人名片:  😊 作者简介:一名大一在校生,web前端开发专业  🤡  个人主页:几何小超  🐼 座右铭:懒惰受到的惩罚不仅仅是自己的失败,还有别人的成功。  🎅**学习目标:  坚持每一次的学习打卡 ,学好前端 首先是HTML部分

    2024年01月20日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包