iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >纯js如何实现轮播图效果
  • 135
分享到

纯js如何实现轮播图效果

2023-06-25 11:06:46 135人浏览 薄情痞子
摘要

这篇文章主要介绍纯js如何实现轮播图效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!效果图代码 CSS * {    margin: 0;&nb

这篇文章主要介绍纯js如何实现轮播图效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

效果图

纯js如何实现轮播图效果

代码

CSS

 * {    margin: 0;    padding: 0}body{    width: 1000px;    margin: 0 auto;}li {    list-style: none;}img {    border: 0;      vertical-align: middle;}a {    color: #666;    text-decoration: none;}a:hover {    color: #e33333;}.fl {    float: left;}.fr {    float: right;}.focus {    position: relative;    width: 721px;    height: 455px;    background-color: purple;    overflow: hidden;    margin-top: 20px;}.focus ul {    position: absolute;    top: 0;    left: 0;    width: 600%;}.focus ul li {    float: left;}.arrow-l,.arrow-r {    display: none;    position: absolute;    top: 50%;    margin-top: -20px;    width: 24px;    height: 40px;    background: rgba(0, 0, 0, .3);    text-align: center;    line-height: 40px;    color: #fff;    font-family: 'icomoon';    font-size: 18px;    z-index: 2;}.arrow-r {    right: 0;}.circle {    position: absolute;    bottom: 10px;    left: 50px;}.circle li {    float: left;    width: 8px;    height: 8px;        border: 2px solid rgba(255, 255, 255, 0.5);    margin: 0 3px;    border-radius: 50%;        cursor: pointer;}.current {    background-color: #fff;}

html

<div class="focus fl">    <!-- 左侧按钮 -->    <a href="javascript:;" class="arrow-l arrow"> < </a>    <!-- 右侧按钮 -->    <a href="javascript:;" class="arrow-r arrow"> > </a>    <!-- 核心的滚动区域 -->    <ul>        <li>            <a href="#" ><img src="images/focus.jpg" alt=""></a>        </li>        <li>            <a href="#" ><img src="images/focus1.jpg" alt=""></a>        </li>        <li>            <a href="#" ><img src="images/focus2.jpg" alt=""></a>        </li>        <li>            <a href="#" ><img src="images/focus3.jpg" alt=""></a>        </li>    </ul>    <!-- 小圆圈 -->    <ol class="circle">    </ol></div>

JavaScript

window.addEventListener('load', function() {    // 1. 获取元素    var arrow_l = document.querySelector('.arrow-l');    var arrow_r = document.querySelector('.arrow-r');    var focus = document.querySelector('.focus');    var focusWidth = focus.offsetWidth;    // 2. 鼠标经过focus 就显示隐藏左右按钮    focus.addEventListener('mouseenter', function() {        arrow_l.style.display = 'block';        arrow_r.style.display = 'block';        clearInterval(timer);        timer = null; // 清除定时器变量    });    focus.addEventListener('mouseleave', function() {        arrow_l.style.display = 'none';        arrow_r.style.display = 'none';        timer = setInterval(function() {            //手动调用点击事件            arrow_r.click();        }, 2000);    });    // 3. 动态生成小圆圈  有几张图片,我就生成几个小圆圈    var ul = focus.querySelector('ul');    var ol = focus.querySelector('.circle');    // console.log(ul.children.length);    for (var i = 0; i < ul.children.length; i++) {        // 创建一个小li         var li = document.createElement('li');        // 记录当前小圆圈的索引号 通过自定义属性来做         li.setAttribute('index', i);        // 把小li插入到ol 里面        ol.appendChild(li);        // 4. 小圆圈的排他思想 我们可以直接在生成小圆圈的同时直接绑定点击事件        li.addEventListener('click', function() {            // 干掉所有人 把所有的小li 清除 current 类名            for (var i = 0; i < ol.children.length; i++) {                ol.children[i].className = '';            }            // 留下我自己  当前的小li 设置current 类名            this.className = 'current';            // 5. 点击小圆圈,移动图片 当然移动的是 ul             // ul 的移动距离 小圆圈的索引号 乘以 图片的宽度 注意是负值            // 当我们点击了某个小li 就拿到当前小li 的索引号            var index = this.getAttribute('index');            // 当我们点击了某个小li 就要把这个li 的索引号给 num              num = index;            // 当我们点击了某个小li 就要把这个li 的索引号给 circle              circle = index;            // num = circle = index;            console.log(focusWidth);            console.log(index);            animate(ul, -index * focusWidth);        })    }    // 把ol里面的第一个小li设置类名为 current    ol.children[0].className = 'current';    // 6. 克隆第一张图片(li)放到ul 最后面    var first = ul.children[0].clonenode(true);    ul.appendChild(first);    // 7. 点击右侧按钮, 图片滚动一张    var num = 0;    // circle 控制小圆圈的播放    var circle = 0;    // flag 节流阀    var flag = true;    arrow_r.addEventListener('click', function() {        if (flag) {            flag = false; // 关闭节流阀            // 如果走到了最后复制的一张图片,此时 我们的ul 要快速复原 left 改为 0            if (num == ul.children.length - 1) {                ul.style.left = 0;                num = 0;            }            num++;            animate(ul, -num * focusWidth, function() {                flag = true; // 打开节流阀            });            // 8. 点击右侧按钮,小圆圈跟随一起变化 可以再声明一个变量控制小圆圈的播放            circle++;            // 如果circle == 4 说明走到最后我们克隆的这张图片了 我们就复原            if (circle == ol.children.length) {                circle = 0;            }            // 调用函数            circleChange();        }    });    // 9. 左侧按钮做法    arrow_l.addEventListener('click', function() {        if (flag) {            flag = false;            if (num == 0) {                num = ul.children.length - 1;                ul.style.left = -num * focusWidth + 'px';            }            num--;            animate(ul, -num * focusWidth, function() {                flag = true;            });            // 点击左侧按钮,小圆圈跟随一起变化 可以再声明一个变量控制小圆圈的播放            circle--;            // 如果circle < 0  说明第一张图片,则小圆圈要改为第4个小圆圈(3)            // if (circle < 0) {            //     circle = ol.children.length - 1;            // }            circle = circle < 0 ? ol.children.length - 1 : circle;            // 调用函数            circleChange();        }    });    function circleChange() {        // 先清除其余小圆圈的current类名        for (var i = 0; i < ol.children.length; i++) {            ol.children[i].className = '';        }        // 留下当前的小圆圈的current类名        ol.children[circle].className = 'current';    }    // 10. 自动播放轮播图    var timer = setInterval(function() {        //手动调用点击事件        arrow_r.click();    }, 2000);})

重点!!!

用到的实现图片移动的动画文件,animate.js

function animate(obj, target, callback) {    // console.log(callback);  callback = function() {}  调用的时候 callback()    // 先清除以前的定时器,只保留当前的一个定时器执行    clearInterval(obj.timer);    obj.timer = setInterval(function() {        // 步长值写到定时器的里面        // 把我们步长值改为整数 不要出现小数的问题        // var step = Math.ceil((target - obj.offsetLeft) / 10);        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();            // }            callback && callback();        }        // 把每次加1 这个步长值改为一个慢慢变小的值  步长公式:(目标值 - 现在的位置) / 10        obj.style.left = obj.offsetLeft + step + 'px';    }, 15);}

以上是“纯js如何实现轮播图效果”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: 纯js如何实现轮播图效果

本文链接: https://www.lsjlt.com/news/304099.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 纯js如何实现轮播图效果
    这篇文章主要介绍纯js如何实现轮播图效果,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!效果图代码 css * {    margin: 0;&nb...
    99+
    2023-06-25
  • 纯js实现轮播图效果
    本文实例为大家分享了js实现轮播图效果的具体代码,供大家参考,具体内容如下 结合我们前面学过的:鼠标监听事件(移入移出、点击),创建节点,排他思想、定时器等,就可以实现一个能手动和自...
    99+
    2024-04-02
  • js实现3D轮播图效果
    本文实例为大家分享了js实现3D轮播图效果的具体代码,供大家参考,具体内容如下 主要有平移和旋转构成3d效果的轮播图,小白一只,不足之处还请大家多多指教,代码如下 css代码: ...
    99+
    2024-04-02
  • 用js实现轮播图效果
    今天来说一下利用js实现轮播图效果,供大家参考,具体内容如下 思路 1.首先我们要把需要用到的元素获取过来 <div class="all" id='box'> ...
    99+
    2024-04-02
  • 纯css如何实现轮播图banner自动轮换效果
    这篇文章主要为大家展示了纯css如何实现轮播图banner自动轮换效果,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带大家一起来研究并学习一下“纯css如何实现轮播图banner自动轮换效果”这篇文章吧。css是什么意思cs...
    99+
    2023-06-08
  • 纯HTML和CSS如何实现JD轮播图效果
    小编给大家分享一下纯HTML和CSS如何实现JD轮播图效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!使用了纯HTML和CSS实现了JD的轮播图,没有加动态效果,主要是使用了定位的知识。    ,如图为两个侧边箭头图片。...
    99+
    2023-06-08
  • 使用纯CSS、JS实现图片轮播效果的示例
    小编给大家分享一下使用纯CSS、JS实现图片轮播效果的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!js有什么特点1、js属于一种解释性脚本语言;2、在绝大多...
    99+
    2023-06-14
  • js基于myFocus如何实现轮播图效果
    这篇文章将为大家详细讲解有关js基于myFocus如何实现轮播图效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下step1.页面引入相关文件<link...
    99+
    2024-04-02
  • js实现简单轮播图效果
    本文实例为大家分享了js实现简单轮播图效果的具体代码,供大家参考,具体内容如下 使用transform = translateX()实现的图片切换 <style> ...
    99+
    2024-04-02
  • js如何实现轮播图无缝滚动效果
    这篇文章主要介绍了js如何实现轮播图无缝滚动效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。先文字说明一下:如果要展示5张图,分别为1,2...
    99+
    2024-04-02
  • js+css实现卡片轮播图效果
    本文实例为大家分享了js+css实现卡片轮播图效果的具体代码,供大家参考,具体内容如下 实现点击的时候切换卡片,自动轮播,鼠标移入暂停,移出继续轮播,有动画事件效果就是这样 下面是...
    99+
    2024-04-02
  • js如何编写轮播图效果
    小编给大家分享一下js如何编写轮播图效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下html部分<div id="box">   &nb...
    99+
    2023-06-08
  • JS实现简单图片轮播效果
    本文实例为大家分享了JS实现简单图片轮播效果的具体代码,供大家参考,具体内容如下 实现效果 左右按钮可点击左右移动显示图片进行无缝滚动 下面的小圆圈点击可跳到对应...
    99+
    2024-04-02
  • 原生js如何实现无缝轮播图效果
    这篇文章主要介绍了原生js如何实现无缝轮播图效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。请看代码<!DOCTYPE h...
    99+
    2024-04-02
  • js实现图片轮播切换效果
    最近在b站上学习的时候,学到了一个用原生js实现图片轮播切换效果的实战,码下来收藏 上图是这个小实战的效果图,整个小实战所实现的功能是图片自动轮播切换、点击上下键图片切换上下图片、...
    99+
    2024-04-02
  • css如何实现轮播图效果
    本文小编为大家详细介绍“css如何实现轮播图效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“css如何实现轮播图效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。准备了3张大小相同的图片,将图片的文件名命名为...
    99+
    2023-07-04
  • Swiper如何实现轮播图效果
    小编给大家分享一下Swiper如何实现轮播图效果,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下<!DOCTYP...
    99+
    2024-04-02
  • React如何实现轮播图效果
    这篇文章主要介绍“React如何实现轮播图效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“React如何实现轮播图效果”文章能帮助大家解决问题。效果:轮播功能用到了react-slick组件,安装...
    99+
    2023-07-02
  • js如何实现图片轮播特效
    这篇文章将为大家详细讲解有关js如何实现图片轮播特效,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。先看一眼效果图:代码:<html> <head>...
    99+
    2024-04-02
  • android如何实现banner轮播图无限轮播效果
    小编给大家分享一下android如何实现banner轮播图无限轮播效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!具体内容如下效果展示第一步(权限配置)<uses-permission android:n...
    99+
    2023-05-30
    android banner
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作