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编程起步(第六课)
Feb 27 Javascript
Javascript对象属性方法汇总
Nov 21 Javascript
动态加载jquery库的方法
Feb 12 Javascript
JS实现向表格行添加新单元格的方法
Mar 30 Javascript
详解js图片轮播效果实现原理
Dec 17 Javascript
Uploadify上传文件方法
Mar 16 Javascript
JavaScript 是什么意思
Sep 22 Javascript
jQuery列表检索功能实现代码
Jul 17 jQuery
JS返回顶部实例代码
Aug 09 Javascript
Nginx 配置多站点vhost 的方法
Jan 07 Javascript
Echarts动态加载多条折线图的实现代码
May 24 Javascript
Layui点击图片弹框预览的实现方法
Sep 16 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程序
2006/10/09 PHP
php生成随机密码的几种方法
2011/01/17 PHP
PHP笔记之:日期函数的使用介绍
2013/04/24 PHP
php获取url参数方法总结
2014/11/13 PHP
ThinkPHP实现支付宝接口功能实例
2014/12/02 PHP
9条PHP编程小知识及易犯的小错误
2015/01/22 PHP
学习php设计模式 php实现观察者模式(Observer)
2015/12/09 PHP
浅析PHP中的闭包和匿名函数
2017/12/25 PHP
详解php反序列化
2020/06/10 PHP
用CSS+JS实现的进度条效果效果
2007/06/05 Javascript
深入理解JavaScript高级之词法作用域和作用域链
2013/12/10 Javascript
jquery 绑定回车动作扑捉回车键触发的事件
2014/03/26 Javascript
jQuery中die()方法用法实例
2015/01/19 Javascript
jQuery实现简单的间隔向上滚动效果
2015/03/09 Javascript
jQuery实现预加载图片的方法
2015/03/17 Javascript
Vue-router 类似Vuex实现组件化开发的示例
2017/09/15 Javascript
jquery的 filter()方法使用教程
2018/03/22 jQuery
Vue自定义过滤器格式化数字三位加一逗号实现代码
2018/03/23 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
微信小程序封装自定义弹窗的实现代码
2019/05/08 Javascript
JS查找孩子节点简单示例
2019/07/25 Javascript
详解Python的Django框架中的通用视图
2015/05/04 Python
Python利用openpyxl库遍历Sheet的实例
2018/05/03 Python
python实现可逆简单的加密算法
2019/03/22 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
python pygame实现挡板弹球游戏
2019/11/25 Python
Python全局变量与global关键字常见错误解决方案
2020/10/05 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
最耐用行李箱,一箱永流传:Briggs & Riley(全球终身保修)
2017/12/07 全球购物
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
北京一家公司的.net开发工程师笔试题
2012/04/17 面试题
社区党的群众路线教育实践活动剖析材料
2014/10/09 职场文书
工厂见习报告范文
2014/10/31 职场文书
2015年资料员工作总结
2015/04/25 职场文书
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js