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 相关文章推荐
入门基础学习 ExtJS笔记(一)
Nov 11 Javascript
js弹出窗口之弹出层的小例子
Jun 17 Javascript
jquery组件使用中遇到的问题整理及解决
Feb 21 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
May 04 Javascript
Bootstrap企业网站实战项目4
Oct 14 Javascript
vue指令以及dom操作详解
Mar 04 Javascript
layui选项卡效果实现代码
May 19 Javascript
AngularJS中使用three.js的实例详解
Jul 21 Javascript
基于BootStrap的文本编辑器组件Summernote
Oct 27 Javascript
Angular4学习教程之DOM属性绑定详解
Jan 04 Javascript
vue自定义全局共用函数详解
Sep 18 Javascript
vue项目初始化到登录login页面的示例
Oct 31 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
环境会对咖啡种植有什么影响
2021/03/03 咖啡文化
CURL的学习和应用(附多线程实现)
2013/06/03 PHP
PHP.ini中配置屏蔽错误信息显示和保存错误日志的例子
2014/05/12 PHP
Symfony2联合查询实现方法
2016/03/18 PHP
Zend Framework实现具有基本功能的留言本(附demo源码下载)
2016/03/22 PHP
php实现的mysqldb读写分离操作类示例
2017/02/07 PHP
php扩展开发入门demo示例
2019/09/23 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
IE DOM实现存在的部分问题及解决方法
2009/07/25 Javascript
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
理解JavaScript中的对象 推荐
2011/01/09 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
js锁屏解屏通过对$.ajax进行封装实现
2014/07/31 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
关于 jQuery Easyui异步加载tree的问题解析
2016/12/06 Javascript
React快速入门教程
2017/01/17 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
使用Angular 6创建各种动画效果的方法
2018/10/10 Javascript
微信小程序列表中item左滑删除功能
2018/11/07 Javascript
VueJs里利用CryptoJs实现加密及解密的方法示例
2019/04/29 Javascript
vue history 模式打包部署在域名的二级目录的配置指南
2019/07/02 Javascript
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
python元组操作实例解析
2014/09/23 Python
Python实现分割文件及合并文件的方法
2015/07/10 Python
浅谈pandas中Dataframe的查询方法([], loc, iloc, at, iat, ix)
2018/04/10 Python
Python自动生成代码 使用tkinter图形化操作并生成代码框架
2019/09/18 Python
10 套华丽的CSS3 按钮小结
2012/10/03 HTML / CSS
AutoShack.com加拿大:北美主要的汽车零部件零售商
2019/07/24 全球购物
2014全国两会学习心得体会2000字
2014/03/10 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
实习科室评语
2015/01/04 职场文书
农业项目投资意向书
2015/05/09 职场文书
法人代表资格证明书
2015/06/18 职场文书
2016庆祝国庆67周年宣传语
2015/11/25 职场文书
员工安全责任协议书
2016/03/22 职场文书