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 相关文章推荐
jQuery实现Flash效果上下翻动的中英文导航菜单代码
Sep 22 Javascript
JavaScript 链式结构序列化详解
Sep 30 Javascript
bootstrap table小案例
Oct 21 Javascript
原生js实现仿window10系统日历效果的实例
Oct 31 Javascript
Vue调试神器vue-devtools安装方法
Dec 12 Javascript
Swiper自定义分页器使用详解
Dec 28 Javascript
vue cli webpack中使用sass的方法
Feb 24 Javascript
webpack+react+antd脚手架优化的方法
Apr 02 Javascript
countUp.js实现数字动态变化效果
Oct 17 Javascript
Vue中Table组件行内右键菜单实现方法(基于 vue + AntDesign)
Nov 21 Javascript
Javascript模块化机制实现原理详解
Apr 02 Javascript
vue实现放大镜效果
Sep 17 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操作数组的一些函数整理介绍
2011/07/17 PHP
php使用websocket示例详解
2014/03/12 PHP
php判断两个浮点数是否相等的方法
2015/03/14 PHP
php输出指定时间以前时间格式的方法
2015/03/21 PHP
PHP连接操作access数据库实例
2015/03/30 PHP
学习YUI.Ext 第三天
2007/03/10 Javascript
eval与window.eval的差别分析
2011/03/17 Javascript
Markdown与Bootstrap相结合实现图片自适应属性
2016/05/04 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
Javascript 事件冒泡机制详细介绍
2016/10/10 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
vue项目中axios使用详解
2018/02/07 Javascript
解决Vue 通过下表修改数组,页面不渲染的问题
2018/03/08 Javascript
微信小程序的部署方法步骤
2018/09/04 Javascript
vue移动端弹框组件的实例
2018/09/25 Javascript
JavaScript格式化json和xml的方法示例
2019/01/22 Javascript
微信小程序引入VANT组件的方法步骤
2019/09/19 Javascript
Vue el-autocomplete远程搜索下拉框并实现自动填充功能(推荐)
2019/10/25 Javascript
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
让Python代码更快运行的5种方法
2015/06/21 Python
python爬虫 正则表达式使用技巧及爬取个人博客的实例讲解
2017/10/20 Python
python视频按帧截取图片工具
2019/07/23 Python
Python3开发实例之非关系型图数据库Neo4j安装方法及Python3连接操作Neo4j方法实例
2020/03/18 Python
浅谈django 模型类使用save()方法的好处与注意事项
2020/03/28 Python
python上传时包含boundary时的解决方法
2020/04/08 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
Python通过文本和图片生成词云图
2020/05/21 Python
PyInstaller的安装和使用的详细步骤
2020/06/02 Python
CSS 3.0文字悬停跳动特效代码
2020/10/26 HTML / CSS
私营公司诉讼代理委托书范本
2014/09/13 职场文书
如何写辞职书
2015/02/26 职场文书
物业工程部主管岗位职责
2015/04/16 职场文书
送给客户微信问候语!
2019/07/04 职场文书
当你找不到方向的时候,不妨读读刘备的一生
2019/08/05 职场文书
python绘制箱型图
2021/04/27 Python
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers