JS左右无缝轮播功能完整实例


Posted in Javascript onMay 16, 2019

本文实例讲述了JS左右无缝轮播功能。分享给大家供大家参考,具体如下:

其中对上一页下一页按钮设置visibility属性是为了解决轮播中点击上一页下一页导致的bug,应为是a标签所以用了visibility属性,如果是按钮button可以直接设置在轮播过程中按钮不可点击,当然其他解决方法都可以,以实际为准

代码如下:换换图片就可以直接用

<!DOCTYPE html>
<html>
<head lang="en">
  <meta charset="UTF-8">
  <title>3water.com JS左右无缝轮播</title>
  <style>
    * {margin:0;padding:0;}
    #scrollImg{width:1000px;margin:100px auto;}
    #prev{float:left;line-height:250px;}
    #next{float:right;line-height:250px;}
    #div1 {width:800px;height:250px;margin:0px auto;position:relative;overflow:hidden;}
    #div1 ul {position:absolute;left:0;top:0;}
    #div1 ul li {float:left;list-style:none;width:200px;height:250px;}
    #div1 ul li img{width:100%;height:100%;}
  </style>
</head>
<body>
<div id="scrollImg">
  <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" id="prev">向左</a>
  <a href="javascript:void(0)" rel="external nofollow" rel="external nofollow" id="next">向右</a>
  <div id="div1">
    <ul>
      <li><img src="image/0.jpeg" /></li>
      <li><img src="image/1.JPEG" /></li>
      <li><img src="image/3.jpg" /></li>
      <li><img src="image/4.jpeg" /></li>
    </ul>
  </div>
</div>
<script>
  window.onload=function(){
    var oDiv=document.getElementById("div1");
    var oUl=document.getElementsByTagName("ul")[0];
    var oLi=document.getElementsByTagName("li");
    var index=0;
    var timer;//定时器
    oUl.innerHTML=oUl.innerHTML+oUl.innerHTML;//将轮播内容复制一份
    oUl.style.width=oLi[0].offsetWidth*oLi.length+"px";
    //移动速度
    var speed=-10;
    //控制滚动的方向
    var prev=document.getElementById("prev");
    var next=document.getElementById("next");
    //上一页
    prev.onclick=function(){
      if(index==4){
        index=1;
        oUl.style.left="0px";
      }else{
        index++;
        speed=10;
      }
      move();
    };
    //下一页
    next.onclick=function(){
      if(index==0){
        index=3;
        oUl.style.left=-oUl.offsetWidth/2+"px";
      }else{
        index--;
        speed=-10;
      }
      move();
    };
    function move(){
      timer=setInterval(function () {
        oUl.style.left=oUl.offsetLeft-speed+"px";
        var stop=-index*oLi[0].offsetWidth+"px";
        prev.style.visibility="hidden";
        next.style.visibility="hidden";
        if(oUl.style.left==stop){
          clearInterval(timer);
          prev.style.visibility="visible";
          next.style.visibility="visible";
        }
      },20);
    }
  }
</script>
</body>
</html>

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JQuery页面图片切换和新闻列表滚动效果的具体实现
Sep 26 Javascript
jQuery 1.9.1源码分析系列(十五)动画处理之缓动动画核心Tween
Dec 03 Javascript
javascript实现右侧弹出“分享到”窗口效果
Feb 01 Javascript
Javascript基础回顾之(一) 类型
Jan 31 Javascript
探索webpack模块及webpack3新特性
Sep 18 Javascript
Vue2.0仿饿了么webapp单页面应用详细步骤
Jul 08 Javascript
vue项目部署到Apache服务器中遇到的问题解决
Aug 24 Javascript
JS实现随机生成10个手机号的方法示例
Dec 07 Javascript
详解微信小程序-canvas绘制文字实现自动换行
Apr 26 Javascript
深入理解Vue keep-alive及实践总结
Aug 21 Javascript
详解js中的原型,原型对象,原型链
Jul 16 Javascript
原生js实现贪吃蛇游戏
Oct 26 Javascript
Node.js Windows Binary二进制文件安装方法
May 16 #Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
May 16 #Javascript
详解如何搭建mpvue框架搭配vant组件库的小程序项目
May 16 #Javascript
微信端调取相册和摄像头功能,实现图片上传,并上传到服务器
May 16 #Javascript
webpack4手动搭建Vue开发环境实现todoList项目的方法
May 16 #Javascript
怎样在vue项目下添加ESLint的方法
May 16 #Javascript
eslint 的三大通用规则详解
May 16 #Javascript
You might like
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
分享PHP源码批量抓取远程网页图片并保存到本地的实现方法
2015/12/01 PHP
php接口技术实例详解
2016/12/07 PHP
php实现文件预览功能
2017/05/23 PHP
PHP结合Redis+MySQL实现冷热数据交换应用案例详解
2019/07/09 PHP
extjs之去除s.gif的影响
2010/12/25 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
基于jQuery实现仿淘宝套餐选择插件
2015/03/04 Javascript
jQuery+css实现的tab切换标签(兼容各浏览器)
2016/01/28 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
vue.js+element 默认提示中英文操作
2020/11/11 Javascript
vue 数据遍历筛选 过滤 排序的应用操作
2020/11/17 Javascript
vue动态合并单元格并添加小计合计功能示例
2020/11/26 Vue.js
Python正则表达式使用经典实例
2016/06/21 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
python使用SMTP发送qq或sina邮件
2017/10/21 Python
Python字典,函数,全局变量代码解析
2017/12/18 Python
numpy.transpose对三维数组的转置方法
2018/04/17 Python
Flask框架Flask-Principal基本用法实例分析
2018/07/23 Python
浅谈pytorch和Numpy的区别以及相互转换方法
2018/07/26 Python
python3去掉string中的标点符号方法
2019/01/22 Python
python实现监控阿里云账户余额功能
2019/12/16 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
html5 canvas 简单画板实现代码
2012/01/05 HTML / CSS
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
韩国邮政旗下生鲜食品网上超市:epost
2016/08/27 全球购物
研究生求职推荐信范文
2013/11/30 职场文书
放弃继承权公证书
2015/01/23 职场文书
2015年超市工作总结范文
2015/05/26 职场文书
教师网络培训心得体会
2016/01/09 职场文书
研究生毕业登记表的自我鉴定范文
2019/07/15 职场文书