js实现无缝滚动图(可控制当前滚动的方向)


Posted in Javascript onFebruary 22, 2017

这个版本可以控制左右滚动,鼠标点击对应的广告会自动滑动把广告完全展示出来。还实现了记录当前滚动的方向,当鼠标离开,接着继续滚动!!!

效果图:

js实现无缝滚动图(可控制当前滚动的方向)

代码如下:

<!DOCTYPE html>
<html lang="en">
 <head>
 <meta charset="utf-8">
 <style type = "text/css">
 *{margin: 0; padding: 0;}
  li { list-style: none; }
  .box {
  width: 800px;
  height: 450px;
  margin: 50px auto;
  overflow: hidden; 
  position: relative;
  }
  .box span {
  width: 40px;
  height: 60px;  
  display: block;
  position: absolute;
  top: 225px;
  margin-top: -20px;
  cursor: pointer;
  z-index: 1;
  }
  .box #left {
 background: url('http://cdn.attach.qdfuns.com/notes/pics/201701/14/042311cbd7gbjd7sggkd2b.png') no-repeat;
 left: 0;
    display: none;
  }
  .box #right {
  background: url('http://cdn.attach.qdfuns.com/notes/pics/201701/14/042241w8z4hx4m4pjhyjzs.png') no-repeat;
  right: 0;
   display: none;
  }
  #ad {
  width: 4000px;
  height: 450px;
  position: absolute;
  }
  #ad li {
 float: left;
  }
 </style>
 <script type = "text/javascript">
  window.onload = function(){
  var ad = document.getElementById("ad");
  var lef = document.getElementById("left");
  var rig = document.getElementById("right");
  var timer = null; //管理定时器
 var aspect = true;
  function animate(obj,speed){
   //关闭上一个定时器
   clearInterval(obj.timer);
   //管理定时器
 obj.timer = setInterval(autoAd,30);
   function autoAd(){
   //判断左走或者右走
   if(speed > 0){
    aspect = true;
    if(obj.offsetLeft >= 0){
    obj.style.left = -3200 + 'px';
    }
 }else {
    aspect = false;
    if(obj.offsetLeft <= -3200){
    obj.style.left = 0;
    }
 }
   //匀速动画: 盒子当前的位置 + 步长
   obj.style.left = obj.offsetLeft + speed +"px";
   }
 }
 animate(ad,-5);
 //鼠标划入显示控制按钮并关闭
  ad.parentNode.onmouseover = function(){
   clearInterval(ad.timer);
 lef.style.display = "block";
   rig.style.display = "block";
 };
  //鼠标离开隐藏控制按钮并启动定时器
  ad.parentNode.onmouseout = function(){
   clearInterval(ad.timer);
   clearInterval(timer);
   lef.style.display = "none";
   rig.style.display = "none";
 if(aspect){
 animate(ad,5);
 }else{
 animate(ad,-5);
 }
  };
  ad.onclick = function(event){
   //关闭自动轮播定时器
   clearInterval(ad.timer);
   clearInterval(timer);
   var event = event || window.event;
 if(event.target){
   var target = - parseInt(event.target.alt) * 800;
 }else{
   var target = - parseInt(event.srcElement.alt) * 800;
 }
   timer = setInterval(function(){
   var step = (target - ad.offsetLeft) / 10;
   step = step > 0 ? Math.ceil(step):Math.floor(step);
   ad.style.left = ad.offsetLeft + step + "px";
   if(ad.offsetLeft%800 == 0){
    clearInterval(timer);
 }
 },20)
 }
  //右移动
  lef.onclick = function(){
   clearInterval(timer);
   animate(ad,5);
  };
  //左移动
  rig.onclick = function(){
   clearInterval(timer);
 animate(ad,-5);
 };
  }
 </script>
 </head>
 <body>
 <div class="box"> 
 <ul id="ad">
 <li><img src="http://cdn.attach.qdfuns.com/notes/pics/201701/14/042153lscsitwp7sszb6zs.jpg" alt="0"></li>
 <li><img src="http://cdn.attach.qdfuns.com/notes/pics/201701/14/042152pfbkbfe8vbtvulfu.jpg" alt="1"></li>
 <li><img src="http://cdn.attach.qdfuns.com/notes/pics/201701/14/042153u3jgn0ds43ndd3dz.jpg" alt="2"></li>
 <li><img src="http://cdn.attach.qdfuns.com/notes/pics/201701/14/042152juuohne22z60hbsb.jpg" alt="3"></li>
 <li><img src="http://cdn.attach.qdfuns.com/notes/pics/201701/14/042153lscsitwp7sszb6zs.jpg" alt="4"></li>
 </ul>
 <span id="left"></span>
 <span id="right"></span>
 </div>
 </body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
JavaScript Perfection kill 测试及答案
Mar 23 Javascript
基于jquery的网页SELECT下拉框美化代码
Oct 28 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
May 07 Javascript
jquery自定义滚动条插件示例分享
Feb 21 Javascript
jQuery源码解读之hasClass()方法分析
Feb 20 Javascript
简单纯js实现点击切换TAB标签实例
Aug 23 Javascript
jquery实现可自动收缩的TAB网页选项卡代码
Sep 06 Javascript
javascript实现加载xml文件的方法
Nov 24 Javascript
Javascript动画效果(1)
Oct 11 Javascript
微信小程序 常用工具类详解及实例
Feb 15 Javascript
vue 自定义组件 v-model双向绑定、 父子组件同步通信的多种写法
Nov 27 Javascript
swiper 自动图片无限轮播实现代码
May 21 Javascript
vuejs2.0实现一个简单的分页示例
Feb 22 #Javascript
Angular.js与node.js项目里用cookie校验账户登录详解
Feb 22 #Javascript
js实现无缝滚动图
Feb 22 #Javascript
JavaScript实现二分查找实例代码
Feb 22 #Javascript
浅谈jquery拼接字符串效率比较高的方法
Feb 22 #Javascript
微信小程序  TLS 版本必须大于等于1.2问题解决
Feb 22 #Javascript
原生JS实现幻灯片
Feb 22 #Javascript
You might like
如何直接访问php实例对象中的private属性详解
2017/10/12 PHP
javascript控制Div层透明属性由浅变深由深变浅逐渐显示
2013/11/12 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
2015/11/24 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
Angular.js中ng-if、ng-show和ng-hide的区别介绍
2017/01/20 Javascript
详解nodejs操作mongodb数据库封装DB类
2017/04/10 NodeJs
javascript+html5+css3自定义提示窗口
2017/06/21 Javascript
详解vue.js的事件处理器v-on:click
2017/06/27 Javascript
深入浅析Vue中的Prop
2018/06/10 Javascript
详解关于vue-area-linkage走过的坑
2018/06/27 Javascript
详解Vue-axios 设置请求头问题
2018/12/06 Javascript
如何在vue里面优雅的解决跨域(路由冲突问题)
2019/01/20 Javascript
layui动态表头的实现代码
2019/08/22 Javascript
vue-cli点击实现全屏功能
2020/03/07 Javascript
JavaScript ECMA-262-3 深入解析(一):执行上下文实例分析
2020/04/25 Javascript
如何使用RoughViz可视化Vue.js中的草绘图表
2021/01/30 Vue.js
python自动化测试之从命令行运行测试用例with verbosity
2014/09/28 Python
Python自定义scrapy中间模块避免重复采集的方法
2015/04/07 Python
Python实现屏幕截图的两种方式
2018/02/05 Python
Python 移动光标位置的方法
2019/01/20 Python
Python实现基于SVM的分类器的方法
2019/07/19 Python
对Python _取log的几种方式小结
2019/07/25 Python
opencv之为图像添加边界的方法示例
2019/12/26 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
Python实现子类调用父类的初始化实例
2020/03/12 Python
Python面向对象魔法方法和单例模块代码实例
2020/03/25 Python
Django基于Models定制Admin后台实现过程解析
2020/11/11 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
招聘单位介绍信
2014/01/14 职场文书
计算机专业求职信
2014/06/02 职场文书
校外活动方案
2014/08/28 职场文书
2014年工程部工作总结
2014/11/25 职场文书
顶岗实习计划书
2015/01/16 职场文书
2015年农村党员公开承诺事项
2015/04/28 职场文书
html5中sharedWorker实现多页面通信的示例代码
2021/05/07 Javascript