JS实现动态无缝轮播


Posted in Javascript onJanuary 11, 2020

在同学的帮助下,终于使用纯js代码实现了动态轮播,学无止境加油吧!

JS实现动态无缝轮播

效果图是这样的,我们需要定义一个div,并放入三张图片,还需要左右两个按钮,以及底下三个按钮三个div。

先看布局代码

<div class="banner" id="banner">
    <ul class="clear" >
      <li style="left:0" ><img src="k1.jpg"></li>
      <li style="left:100%" ><img src="k-2.jpg"></li>
      <li style="left:100%"><img src="k-3.jpg"></li>
    </ul>
    <div class="pageNav"></div>
    <div class="leftBtn"></div>
    <div class="rightBtn"></div>
</div>

如何是css部分

.clear:after{
     display:block;
     content:"";
     clear:both;
    }
    .banner{
      width: 100%;
      position:relative;
      height: 390px;
    }
    .banner ul{
      width: 100%;
      height: 390px;
      list-style-type:none;
      overflow: hidden;
    }
    .banner ul li{
      width: 100%;
      position: absolute;
    }
    .pageNav{
      position: absolute;
      left:50%;
      bottom:20px;
      transform: translateX(-50%);
    }
    .pageNav a{
      display:inline-block;
      margin:0 5px;
      width: 20px;
      height: 20px;
      background-color:#fff;
      border-radius:50%;
      border:2px solid #000;
      cursor:pointer;
    }
    .pageNav a.cur{
      background-color:red;
    }
    .leftBtn, .rightBtn{
      position:absolute;
      top: 50%;
      transform:translateY(-50%);
      width: 40px;
      height: 50px;
      background-color:rgba(0, 0, 0, 0.5);
      cursor:pointer;
    }
    .leftBtn{
      left:0;
    }
    .rightBtn{
      right:0;
    }
    .leftBtn:hover,.rightBtn:hover{
      background-color:rgba(0, 0, 0, 0.8);
 }

接下来是js部分

var banner=document.getElementById("banner");
  var ul=banner.getElementsByTagName("ul")[0];
  var li=ul.getElementsByTagName("li");
  var pageNav=banner.getElementsByClassName("pageNav")[0],leftBtn=document.getElementsByClassName("leftBtn")[0],rightBtn=document.getElementsByClassName("rightBtn")[0],n=0,index=0,timerElem=null,state=false;
  for(var i=0;i<li.length;i++){//给图片底下添加按钮
    pageA=document.createElement("a");
    if(i==0){
      pageA.className="cur";
    }
    pageNav.appendChild(pageA);
  }
  pageNav.addEventListener('click',pageNavClick,false);
  function pageNavClick(e){
    if(state){
      return;
    }
    e=e||window.event;//兼容性考虑
    for(var i=0;i<li.length;i++){
      if(pageNav.children[i]==e.target){
        index=n;
        var offset=i-n;
        n=i;
        showBtn(n);
        if(offset>0){
          showImg(-100);
        }else{
          showImg(100);
        }
      }
    }
  }
  function showBtn(index){
    for(var z=0;z<li.length;z++){
      pageNav.children[z].className="";
    }
    pageNav.children[index].className="cur";
  }
  function showImg(offset){
    clearInterval(timerElem);
    var speed=offset/20;
    timerElem=setInterval(function(){
      state=true;
      if(parseInt(li[n].style.left)==0){
        state=false;
        clearInterval(timerElem);
        li[n].style.left="0";
        for(var l=0;l<n;l++){
          li[l].style.left="-100%"
        }
        for(var r=n+1;r<li.length;r++){
          li[r].style.left="100%";
        }
      }else{
        li[n].style.left=parseInt(li[n].style.left)+speed+"%";
        li[index].style.left=parseInt(li[index].style.left)+speed+"%";
      }
    },100)
  }
  leftBtn.onclick=function(){
    if(state){
      return;
    }
    index=n;
    n--;
    if(n<0){
      n=li.length-1;
      li[n].style.left="-100%";
    }
    showBtn(n);
    showImg(100);
  }
  rightBtn.onclick=function(){
    if(state){
      return;
    }
    index=n;
    n++;
    if(n>li.length-
      1){
      n=0;
      li[n].style.left="100%";
    }
    showBtn(n);
    showImg(-100);
  }
  var timer;
  timer=setInterval(autoLunbo,3000);
  function autoLunbo(){
    rightBtn.onclick();
  }
  banner.onmouseover=function(){
    clearInterval(timer);
  }
  banner.onmouseout=function(){
    timer=setInterval(autoLunbo,3000);
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jquery实现可拖动DIV自定义保存到数据的实例
Nov 20 Javascript
JavaScript中的数值范围介绍
Dec 29 Javascript
详解JavaScript中的异常处理方法
Jun 16 Javascript
jQuery与getJson结合的用法实例
Aug 07 Javascript
javascript中checkbox使用方法实例演示
Nov 19 Javascript
使用jquery获取url及url参数的简单实例
Jun 14 Javascript
基于JavaScript实现Tab选项卡切换效果
Nov 24 Javascript
ECMAScript6--解构
Mar 30 Javascript
javascript高仿热血传奇游戏实现代码
Feb 22 Javascript
vuex管理状态 刷新页面保持不被清空的解决方案
Nov 11 Javascript
JavaScript隐式类型转换代码实例
May 29 Javascript
vue打包通过image-webpack-loader插件对图片压缩优化操作
Nov 12 Javascript
原生js实现无缝轮播图
Jan 11 #Javascript
JS实现轮播图效果
Jan 11 #Javascript
js实现带搜索功能的下拉框
Jan 11 #Javascript
js实现select下拉框选择
Jan 11 #Javascript
js实现二级联动简单实例
Jan 11 #Javascript
jQuery实现轮播图效果demo
Jan 11 #jQuery
详解微信小程序中var、let、const用法与区别
Jan 11 #Javascript
You might like
PHP 5.3新增魔术方法__invoke概述
2014/07/23 PHP
PHP 中使用explode()函数切割字符串为数组的示例
2017/05/06 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
JavaScript 继承详解 第一篇
2009/08/30 Javascript
jquery ajax提交表单数据的两种实现方法
2010/04/29 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
扩展jQuery对象时如何扩展成员变量具体怎么实现
2014/04/25 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
JavaScript  cookie 跨域访问之广告推广
2016/04/20 Javascript
浅析angularJS中的ui-router和ng-grid模块
2016/05/20 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
2016/11/18 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
微信小程序支付之c#后台实现方法
2017/10/19 Javascript
在vue中,v-for的索引index在html中的使用方法
2018/03/06 Javascript
webpack本地开发环境无法用IP访问的解决方法
2018/03/20 Javascript
JavaScript如何对图片进行黑白化
2018/04/10 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
NodeJs入门教程之定时器和队列
2019/03/08 NodeJs
JavaScript 中判断变量是否为数字的示例代码
2020/10/22 Javascript
[01:11:21]DOTA2-DPC中国联赛 正赛 Phoenix vs CDEC BO3 第三场 3月7日
2021/03/11 DOTA
python实现上传下载文件功能
2020/11/19 Python
Selenium的使用详解
2018/10/19 Python
python ChainMap的使用和说明详解
2019/06/11 Python
win10系统下python3安装及pip换源和使用教程
2020/01/06 Python
英国著名的小众美容品牌网站:Alyaka
2017/08/08 全球购物
Lands’ End英国官方网站:高质量男女服装
2017/10/07 全球购物
计算机专业毕业生的自我评价
2013/11/18 职场文书
成语的广告词
2014/03/19 职场文书
大学生评语大全
2014/04/18 职场文书
务虚会发言材料
2014/12/25 职场文书
勤俭节约倡议书范文
2015/04/29 职场文书
工作态度怎么写
2015/06/25 职场文书
Python中文纠错的简单实现
2021/07/07 Python
zabbix配置nginx监控的实现
2022/05/25 Servers