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 相关文章推荐
解决火狐浏览器下JS setTimeout函数不兼容失效不执行的方法
Nov 14 Javascript
javascript实现链接单选效果的方法
May 13 Javascript
js仿微博实现统计字符和本地存储功能
Dec 22 Javascript
javascript jquery对form元素的常见操作详解
Jun 12 Javascript
js基本算法:冒泡排序,二分查找的简单实例
Oct 08 Javascript
webpack+vue.js快速入门教程
Oct 12 Javascript
footer定位页面底部(代码分享)
Mar 07 Javascript
原生js实现简单的焦点图效果实例
Dec 14 Javascript
Angular4集成ng2-file-upload的上传组件
Mar 14 Javascript
JS实现根据详细地址获取经纬度功能示例
Apr 16 Javascript
js实现for循环跳过undefined值示例
Jul 02 Javascript
vue模块移动组件的实现示例
May 20 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
这部好评如潮的动漫 知名梗频出 但是画风劝退很多人
2020/03/08 日漫
php数组函数序列之sort() 对数组的元素值进行升序排序
2011/11/02 PHP
优化WordPress的Google字体以加速国内服务器上的运行
2015/11/24 PHP
php实现图片上传并利用ImageMagick生成缩略图
2016/03/14 PHP
php自动提交表单的方法(基于fsockopen与curl)
2016/05/09 PHP
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
javascript中的绑定与解绑函数应用示例
2013/06/24 Javascript
php is_numberic函数造成的SQL注入漏洞
2014/03/10 Javascript
JavaScript前补零操作实例
2015/03/11 Javascript
JavaScript模拟实现键盘打字效果
2015/06/29 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
CSS javascript 结合实现悬浮固定菜单效果
2015/08/23 Javascript
jQuery实用技巧必备(上)
2015/11/02 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
js字符串操作总结(必看篇)
2016/11/22 Javascript
用jQuery实现可输入多选下拉组合框实例代码
2017/01/18 Javascript
jQuery制作图片旋转效果
2017/02/02 Javascript
jQuery遮罩层实例讲解
2017/05/11 jQuery
Node层模拟实现multipart表单的文件上传示例
2018/01/02 Javascript
从vue源码解析Vue.set()和this.$set()
2018/08/30 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
mock.js模拟前后台交互
2019/07/25 Javascript
Python数据结构之单链表详解
2017/09/12 Python
python实现画圆功能
2018/01/25 Python
python实现媒体播放器功能
2018/02/11 Python
python 统计一个列表当中的每一个元素出现了多少次的方法
2018/11/14 Python
python制作mysql数据迁移脚本
2019/01/01 Python
Python pytesseract验证码识别库用法解析
2020/06/29 Python
详解CSS3中常用的样式【基本文本和字体样式】
2020/10/20 HTML / CSS
ReVive利维肤美国官网:RéVive Skincare
2018/04/18 全球购物
技术员岗位职责范本
2015/04/11 职场文书
有关浪费资源的建议书
2015/09/14 职场文书
《莫泊桑拜师》教学反思
2016/02/22 职场文书
Python图像处理之图像拼接
2021/04/28 Python
只用40行Python代码就能写出pdf转word小工具
2021/05/31 Python