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 相关文章推荐
jQuery.extend 函数的详细用法
Jun 27 Javascript
jquery设置元素的readonly和disabled的写法
Sep 22 Javascript
jQuery判断元素是否存在的可靠方法
May 06 Javascript
基于JS实现导航条flash导航条
Jun 17 Javascript
JS实现弹出居中的模式窗口示例
Jun 20 Javascript
使用jQuery调用XML实现无刷新即时聊天
Aug 07 Javascript
2种简单的js倒计时方式
Oct 20 Javascript
使用puppeteer破解极验的滑动验证码
Feb 24 Javascript
微信jssdk逻辑在vue中的运用详解
Nov 14 Javascript
javascript function(函数类型)使用与注意事项小结
Jun 10 Javascript
javascript设计模式 ? 装饰模式原理与应用实例分析
Apr 14 Javascript
vue组件开发之slider组件使用详解
Aug 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
Yii 快速,安全,专业的PHP框架
2014/09/03 PHP
Thinkphp多文件上传实现方法
2014/10/31 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
超级退弹代码
2008/07/07 Javascript
基于jquery1.4.2的仿flash超炫焦点图播放效果
2010/04/20 Javascript
父子窗体间传递JSON格式的数据的代码
2010/12/25 Javascript
extjs关于treePanel+chekBox全部选中以及清空选中问题探讨
2013/04/02 Javascript
javascript实现 百度翻译 可折叠的分享按钮列表
2015/03/12 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
jQuery页面弹出框实现文件上传
2017/02/09 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
Node.JS用纯JavaScript生成图片或滑块式验证码功能
2019/09/12 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
2020/02/09 Javascript
[00:23]DOTA2群星共贺开放测试 25日无码时代来袭
2013/09/23 DOTA
python学习之编写查询ip程序
2016/02/27 Python
将TensorFlow的模型网络导出为单个文件的方法
2018/04/23 Python
Python 装饰器原理、定义与用法详解
2019/12/07 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
利用python清除移动硬盘中的临时文件
2020/10/28 Python
如何用Python进行时间序列分解和预测
2021/03/01 Python
CSS3轻松实现清新 Loading 效果的简单实例
2016/06/06 HTML / CSS
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
世界顶级俱乐部的官方球衣和套装:Subside Sports
2018/04/22 全球购物
Java如何格式化日期
2012/08/07 面试题
畜牧兽医本科生个人的自我评价
2013/10/11 职场文书
业务员岗位职责
2013/11/16 职场文书
优秀员工个人的自我评价
2013/11/29 职场文书
求职自荐信怎么写
2014/03/06 职场文书
租房协议书范本
2014/04/09 职场文书
终止合同协议书
2014/04/17 职场文书
医院院务公开实施方案
2014/05/03 职场文书
交通事故协议书范本
2014/11/18 职场文书
幼儿园开学家长寄语(2015秋季)
2015/05/27 职场文书
python实现调用摄像头并拍照发邮箱
2021/04/27 Python
【海涛七七解说】DCG第二周:DK VS 天禄
2022/04/01 DOTA