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中的私有成员
Sep 18 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
Dec 12 Javascript
利用JS来控制键盘的上下左右键(示例代码)
Dec 14 Javascript
莱鸟介绍window.print()方法
Jan 06 Javascript
window.onerror()的用法与实例分析
Jan 27 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
May 05 Javascript
jQuery实现的浮动层div浏览器居中显示效果
Feb 03 Javascript
js获取当前页的URL与window.location.href简单方法
Feb 13 Javascript
Electron 如何调用本地模块的方法
Feb 01 Javascript
在vue中实现echarts随窗体变化
Jul 27 Javascript
jQuery实现滑动开关效果
Aug 02 jQuery
javascript的setTimeout()使用方法总结
Nov 20 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中的一个中文字符串截取函数
2007/02/14 PHP
纯真IP数据库的应用 IP地址转化成十进制
2009/06/14 PHP
基于在生产环境中使用php性能测试工具xhprof的详解
2013/06/03 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
深入理解PHP中的empty和isset函数
2016/05/26 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
Extjs学习笔记之八 继承和事件基础
2010/01/08 Javascript
使用jQuery操作Cookies的实现代码
2011/10/09 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
jQuery获取页面及个元素高度、宽度的总结——超实用
2015/07/28 Javascript
javascript引用类型之时间Date和数组Array
2015/08/27 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
js select下拉联动 更具级联性!
2020/04/17 Javascript
JS 中可以提升幸福度的小技巧(可以识别更多另类写法)
2018/07/28 Javascript
nodejs之koa2请求示例(GET,POST)
2018/08/07 NodeJs
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
vue-cli或vue项目利用HBuilder打包成移动端app操作
2020/07/29 Javascript
[01:01:36]Optic vs paiN 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
2019/06/04 Python
python自动化测试之DDT数据驱动的实现代码
2019/07/23 Python
django之静态文件 django 2.0 在网页中显示图片的例子
2019/07/28 Python
基于Python中的yield表达式介绍
2019/11/19 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
html5如何及时更新缓存文件(js、css或图片)
2013/06/24 HTML / CSS
HTML5在手机端实现视频全屏展示方法
2020/11/23 HTML / CSS
学生个人的自我评价分享
2013/11/05 职场文书
小学英语教学反思
2014/01/30 职场文书
捐资助学倡议书
2014/04/15 职场文书
社会实践评语
2014/04/28 职场文书
厉行勤俭节约倡议书
2014/05/16 职场文书
食品安全宣传标语
2014/06/07 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
婚育证明样本
2015/06/16 职场文书