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 创建对象
Jul 17 Javascript
jQuery EasyUI API 中文文档 - Form表单
Oct 06 Javascript
用js正确判断用户名cookie是否存在的方法
Jan 28 Javascript
JavaScript实现列出数组中最长的连续数
Dec 29 Javascript
分分钟玩转Vue.js组件
Oct 25 Javascript
基于JavaScript实现购物车功能
Feb 07 Javascript
分享十三个最佳JavaScript数据网格库
Apr 07 Javascript
微信小程序 本地图片按照屏幕尺寸处理
Aug 04 Javascript
微信小程序实现工作时间段选择
Feb 15 Javascript
vue发送websocket请求和http post请求的实例代码
Jul 11 Javascript
websocket4.0+typescript 实现热更新的方法
Aug 14 Javascript
手把手教你从零开始react+antd搭建项目
Jun 03 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
Sublime里直接运行PHP配置方法
2014/11/28 PHP
PHP身份证校验码计算方法
2016/08/10 PHP
php微信公众号开发之图片回复
2018/10/20 PHP
laravel 解决后端无法获取到前端Post过来的值问题
2019/10/22 PHP
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
JavaScript 模式之工厂模式(Factory)应用介绍
2012/11/15 Javascript
js中widow.open()方法使用详解
2013/07/30 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
jquery禁止回车触发表单提交
2014/12/12 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
JavaScript获取当前cpu使用率的方法
2015/12/15 Javascript
jQuery.form插件的使用及跨域异步上传文件
2016/04/27 Javascript
angular.js 路由及页面传参示例
2017/02/24 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
浅谈ES6 模板字符串的具体使用方法
2017/11/07 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
python函数式编程学习之yield表达式形式详解
2018/03/25 Python
Python3批量创建Crowd用户并分配组
2020/05/20 Python
pytorch简介
2020/11/11 Python
荷兰DOD药房中文官网:DeOnlineDrogist
2020/12/27 全球购物
厂长助理岗位职责
2013/12/27 职场文书
《骆驼和羊》教学反思
2014/02/27 职场文书
土木工程求职信
2014/05/29 职场文书
预备党员转正考核材料
2014/06/03 职场文书
商场促销活动总结
2014/07/10 职场文书
教师演讲稿开场白
2014/08/25 职场文书
群众路线专项整治工作情况报告
2014/10/28 职场文书
通知函的格式
2015/04/27 职场文书
python自然语言处理之字典树知识总结
2021/04/25 Python
浅谈python数据类型及其操作
2021/05/25 Python
oracle索引总结
2021/09/25 Oracle
Shell中的单中括号和双中括号的用法详解
2022/12/24 Servers