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开发时的五个注意事项
Dec 08 Javascript
初学JavaScript第二章
Sep 30 Javascript
js实现简单模态窗口,背景灰显
Nov 14 Javascript
window.onload 加载完毕的问题及解决方案(上)
Jul 09 Javascript
JS 无法通过W3C验证的处理方法
Mar 09 Javascript
javascript nextSibling 与 getNextElement(node) 使用介绍
Oct 13 Javascript
裁剪字符串trim()自定义改进版
Apr 10 Javascript
BootStrap实用代码片段之一
Mar 22 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
Nov 20 Javascript
js实现日期显示的一些操作(实例讲解)
Jul 27 Javascript
详解vuex的简单使用
Mar 12 Javascript
详解Angular6.0使用路由步骤(共7步)
Jun 29 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页面跳转代码 输入网址跳转到你定义的页面
2013/03/28 PHP
php中二维数组排序问题方法详解
2015/08/28 PHP
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
详解Vue 方法与事件处理器
2017/06/20 Javascript
angularJs的ng-class切换class
2017/06/23 Javascript
jQuery实现鼠标响应式透明度渐变动画效果示例
2018/02/13 jQuery
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
js实现时钟定时器
2020/03/26 Javascript
详解JS预解析原理
2020/06/16 Javascript
Vue实现简单购物车功能
2020/12/13 Vue.js
[05:22]DOTA2 2015国际邀请赛中国区预选赛首日TOP10
2015/05/26 DOTA
python文件读写并使用mysql批量插入示例分享(python操作mysql)
2014/02/17 Python
Python多线程爬虫简单示例
2016/03/04 Python
python爬取微信公众号文章
2018/08/31 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
pandas DataFrame 行列索引及值的获取的方法
2019/07/02 Python
详解使用python绘制混淆矩阵(confusion_matrix)
2019/07/14 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
python爬虫-模拟微博登录功能
2019/09/12 Python
浅谈如何使用python抓取网页中的动态数据实现
2020/08/17 Python
多重CSS背景动画实现方法示例
2014/04/04 HTML / CSS
HTML5图片层叠的实现示例
2020/07/07 HTML / CSS
SCHIESSER荷兰官方网站:德国内衣专家
2020/10/09 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
英语专业个人求职自荐信
2013/09/21 职场文书
护理工作感言
2014/01/16 职场文书
2014年圣诞节促销方案
2014/03/14 职场文书
2014年党课学习材料
2014/05/11 职场文书
星级党支部申报材料
2014/05/31 职场文书
群教班子对照检查材料
2014/08/26 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
2016年元旦寄语
2015/08/17 职场文书
Python爬虫基础之初次使用scrapy爬虫实例
2021/06/26 Python