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 loading效果代码
Jun 18 Javascript
jQuery ajax cache缓存问题
Jul 01 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
Mar 18 Javascript
3种js实现string的substring方法
Nov 09 Javascript
jqGrid表格应用之新增与删除数据附源码下载
Dec 02 Javascript
微信小程序 表单Form实例详解(附源码)
Dec 22 Javascript
详解AngularJS1.6版本中ui-router路由中/#!/的解决方法
May 22 Javascript
利用纯JS实现像素逐渐显示的方法示例
Aug 14 Javascript
Angular5.1新功能分享
Dec 21 Javascript
小程序如何定位所在城市及发起周边搜索
Feb 11 Javascript
JS script脚本中async和defer区别详解
Jun 24 Javascript
Vue中computed及watch区别实例解析
Aug 01 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
ThinkPHP验证码使用简明教程
2014/03/05 PHP
php返回json数据函数实例
2014/10/09 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
thinkPHP+LayUI 流加载实现功能
2019/09/27 PHP
js location.replace与location.reload的区别
2010/09/08 Javascript
学习从实践开始之jQuery插件开发 对话框插件开发
2012/04/26 Javascript
不使用浏览器运行javascript代码的方法
2013/07/24 Javascript
asm.js使用示例代码
2013/11/28 Javascript
JS实现仿百度输入框自动匹配功能的示例代码
2014/02/19 Javascript
js中for in语句的用法讲解
2015/04/24 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
一个简单的JavaScript Map实例(分享)
2016/08/03 Javascript
基于iscroll.js实现下拉刷新和上拉加载效果
2016/11/28 Javascript
微信小程序开发之map地图实现教程
2017/06/08 Javascript
PHP 实现一种多文件上传的方法
2017/09/20 Javascript
nodejs实现解析xml字符串为对象的方法示例
2018/03/14 NodeJs
Vue实现日历小插件
2019/06/26 Javascript
JS基础之逻辑结构与循环操作示例
2020/01/19 Javascript
使用Mock.js生成前端测试数据
2020/12/13 Javascript
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
python 实现判断ip连通性的方法总结
2018/04/22 Python
python 求某条线上特定x值或y值的点坐标方法
2019/07/09 Python
利用python生成照片墙的示例代码
2020/04/09 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
AC Lens:购买隐形眼镜
2017/02/26 全球购物
澳大利亚最好的厨具店:Kitchen Warehouse
2018/03/13 全球购物
英国浴室洗脸盆购物网站:Click Basin
2018/06/08 全球购物
介绍一下内联、左联、右联
2013/12/31 面试题
高中生学期学习自我评价
2014/02/24 职场文书
教学改革实施方案
2014/03/31 职场文书
《最佳路径》教学反思
2014/04/13 职场文书
男方家长婚礼答谢词
2015/09/29 职场文书
《红领巾真好》教学反思
2016/02/16 职场文书
win10+anaconda安装yolov5的方法及问题解决方案
2021/04/29 Python
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang