js实现无缝滚动图(可控制当前滚动的方向)

发布时间 - 2026-01-10 23:13:05    点击率:

这个版本可以控制左右滚动,鼠标点击对应的广告会自动滑动把广告完全展示出来。还实现了记录当前滚动的方向,当鼠标离开,接着继续滚动!!!

效果图:

代码如下:

<!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>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# js  # 无缝滚动  # js实现无缝滚动  # js实现左右无缝滚动  # 彻底搞懂JS无缝滚动代码  # js 实现无缝滚动 兼容IE和FF  # div+css+js实现无缝滚动类似marquee无缝滚动兼容firefox  # jcarousellite.js 基于Jquery的图片无缝滚动插件  # js向上无缝滚动  # 网站公告效果 具体代码  # js实现图片无缝滚动特效  # 走马灯效果代码js appendChild实现的无缝滚动  # JS左右无缝滚动(一般方法+面向对象方法)  # Jquery与JS两种方法仿twitter/新浪微博 高度自适应无缝滚动实现代码  # js实现无缝滚动图  # 鼠标  # 鼠标点击  # 实现了  # 当鼠标  # span  # relative  # block  # absolute  # display  # height  # auto  # position  # hidden  # overflow  # cdn  # http  # url  # attach  # pics  # notes 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何快速搭建安全的FTP站点?  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  千库网官网入口推荐 千库网设计创意平台入口  如何快速搭建自助建站会员专属系统?  HTML5打空格有哪些误区_新手常犯的空格使用错误【技巧】  历史网站制作软件,华为如何找回被删除的网站?  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  Laravel如何实现多语言支持_Laravel本地化与国际化(i18n)配置教程  Laravel的辅助函数有哪些_Laravel常用Helpers函数提高开发效率  Laravel怎么防止CSRF攻击_Laravel CSRF保护中间件原理与实践  Laravel怎么使用Markdown渲染文档_Laravel将Markdown内容转HTML页面展示【实战】  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  敲碗10年!Mac系列传将迎来「触控与联网」双革新  javascript读取文本节点方法小结  javascript基本数据类型及类型检测常用方法小结  微信小程序 wx.uploadFile无法上传解决办法  如何在搬瓦工VPS快速搭建网站?  如何撰写建站申请书?关键要点有哪些?  如何快速选择适合个人网站的云服务器配置?  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  bing浏览器学术搜索入口_bing学术文献检索地址  Win10如何卸载预装Edge扩展_Win10卸载Edge扩展教程【方法】  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  javascript中闭包概念与用法深入理解  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  Windows驱动无法加载错误解决方法_驱动签名验证失败处理步骤  Laravel如何配置和使用缓存?(Redis代码示例)  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  C++时间戳转换成日期时间的步骤和示例代码  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Python函数文档自动校验_规范解析【教程】  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  JavaScript中的标签模板是什么_它如何扩展字符串功能  WEB开发之注册页面验证码倒计时代码的实现  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel Sail是什么_基于Docker的Laravel本地开发环境Sail入门  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  使用C语言编写圣诞表白程序  如何登录建站主机?访问步骤全解析  如何在宝塔面板创建新站点?  HTML5空格在Angular项目里怎么处理_Angular中空格的渲染问题【详解】  如何在阿里云虚拟机上搭建网站?步骤解析与避坑指南  Laravel怎么实现搜索高亮功能_Laravel结合Scout与Algolia全文检索【实战】  网站制作免费,什么网站能看正片电影?  微信小程序 canvas开发实例及注意事项  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  Laravel如何与Inertia.js和Vue/React构建现代单页应用  Laravel用户密码怎么加密_Laravel Hash门面使用教程