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 相关文章推荐
文本框回车提交与禁止提交示例
Sep 27 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
Feb 19 Javascript
Iframe 自动适应页面的高度示例代码
Feb 26 Javascript
PHP使用方法重载实现动态创建属性的get和set方法
Nov 17 Javascript
JavaScript常用脚本汇总(一)
Mar 04 Javascript
使用JQuery实现Ctrl+Enter提交表单的方法
Oct 22 Javascript
理解javascript中的MVC模式
Jan 28 Javascript
Angular中自定义Debounce Click指令防止重复点击
Jul 26 Javascript
分析javascript原型及原型链
Mar 18 Javascript
JavaScript实现轮播图效果
Oct 30 Javascript
浅谈es6中的元编程
Dec 01 Javascript
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 Vue.js
原生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
WINDOWS下php5.2.4+mysql6.0+apache2.2.4+ZendOptimizer-3.3.0配置
2008/03/28 PHP
UTF8编码内的繁简转换的PHP类
2009/07/09 PHP
微信access_token的获取开发示例
2015/04/16 PHP
php5.3后静态绑定用法详解
2016/11/11 PHP
Ajax+PHP实现的删除数据功能示例
2019/02/12 PHP
js调用webservice中的方法实现思路及代码
2013/02/25 Javascript
js确认删除对话框效果的示例代码
2014/02/20 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
javascript实现3D变换的立体圆圈实例
2015/08/06 Javascript
jQuery实现图片左右滚动特效
2020/04/20 Javascript
Java中Timer的用法详解
2015/10/21 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
2020/03/26 Javascript
使用canvas及js简单生成验证码方法
2017/04/02 Javascript
jquery单击文字或图片内容放大并居中显示
2017/06/23 jQuery
vue底部加载更多的实例代码
2018/06/29 Javascript
Python 命令行非阻塞输入的小例子
2013/09/27 Python
Python实现Const详解
2015/01/27 Python
浅谈Python 对象内存占用
2016/07/15 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
解决python使用open打开文件中文乱码的问题
2017/12/29 Python
python中找出numpy array数组的最值及其索引方法
2018/04/17 Python
python3监控CentOS磁盘空间脚本
2018/06/21 Python
如何安装并使用conda指令管理python环境
2019/07/10 Python
使用html2canvas将页面转成图并使用用canvas2image下载
2019/04/04 HTML / CSS
爱尔兰电子产品购物网站:Komplett.ie
2018/04/04 全球购物
戴尔马来西亚官网:Dell Malaysia
2020/05/02 全球购物
公务员转正鉴定材料
2014/02/11 职场文书
《蚕姑娘》教学反思
2014/04/15 职场文书
党员承诺践诺书
2014/05/20 职场文书
食品安全宣传标语
2014/06/07 职场文书
设计大赛策划方案
2014/06/13 职场文书
安全月宣传标语
2014/10/07 职场文书
村党建工作汇报材料
2014/11/02 职场文书
2014年保险公司工作总结
2014/11/22 职场文书
公司出纳岗位职责
2015/03/31 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python