原生js实现轮播图

发布时间 - 2026-01-10 23:18:20    点击率:

本文实例为大家分享了js轮播图的具体实现代码,供大家参考,具体内容如下

CSS:

<style> 
  * { 
    margin: 0; 
    padding: 0; 
    list-style: none; 
    text-decoration: none; 
    font-family: "Microsoft YaHei", Arial, Helvetica, sans-serifsans-serif; 
  } 
   
  body { 
    background: #eee; 
  } 
   
  #Bigbox { 
    width: 720px; 
    height: 420px; 
    border: 1px solid #333; 
    margin: 60px auto; 
  } 
   
  #Box { 
    width: 700px; 
    height: 400px; 
    position: relative; 
    overflow: hidden; 
    top: 10px; 
    left: 10px; 
  } 
   
  #Ul { 
    height: 400px; 
    position: absolute; 
    top: 0; 
    left: 0; 
  } 
   
  #Ul li { 
    width: 700px; 
    height: 400px; 
    float: left; 
  } 
   
  #Left { 
    width: 60px; 
    height: 50px; 
    border-radius: 30%; 
    background: rgba(96, 96, 96, .5); 
    position: absolute; 
    top: 50%; 
    left: 0; 
    margin-top: -25px; 
    color: #fff; 
    line-height: 50px; 
    text-align: center; 
    cursor: pointer; 
    font-size: 20px; 
    display: none; 
  } 
   
  #Right { 
    width: 60px; 
    height: 50px; 
    border-radius: 30%; 
    background: rgba(96, 96, 96, .5); 
    position: absolute; 
    top: 50%; 
    right: 0; 
    margin-top: -25px; 
    color: #fff; 
    line-height: 50px; 
    text-align: center; 
    cursor: pointer; 
    font-size: 20px; 
    display: none; 
  } 
</style> 

html:

<div id="Bigbox"> 
    <div id="Box"> 
      <ul id="Ul"> 
        <li> 
          1<img src="img/1.jpg" width="100%" height="100%"> 
        </li> 
        <li> 
          2<img src="img/2.jpg" width="100%" height="100%"> 
        </li> 
        <li> 
          3<img src="img/3.jpg" width="100%" height="100%"> 
        </li> 
        <li> 
          4<img src="img/4.jpg" width="100%" height="100%"> 
        </li> 
        <li> 
          5<img src="img/5.jpg" width="100%" height="100%"> 
        </li> 
        <li> 
          6<img src="img/6.jpg" width="100%" height="100%"> 
        </li> 
        <li> 
          7<img src="img/7.jpg" width="100%" height="100%"> 
        </li> 
        <li> 
          8<img src="img/8.jpg" width="100%" height="100%"> 
        </li> 
        <li> 
          9<img src="img/9.jpg" width="100%" height="100%"> 
        </li> 
        <li> 
          10<img src="img/10.jpg" width="100%" height="100%"> 
        </li> 
      </ul> 
      <div id="Left" onselectstart="return false">左</div> 
      <div id="Right" onselectstart="return false">右</div> 
    </div> 
 </div> 

js:

<script> 
 window.onload = function() { 
   var n = 0; 
   var timer = null; 
   var timer1 = null; 
   var timer2 = null; 
   var timer3 = null; 
   var oDiv = document.getElementById('Box') 
   var oUl = document.getElementById('Ul') 
   var oLi = oUl.getElementsByTagName('li') 
    //获取div宽度 
   var oDivWidth = getStyle(oDiv, 'width').split('px')[0] //复制oUl的innerHTML 
   oUl.innerHTML += oUl.innerHTML 
    //设置ul宽度 
   oUl.style.width = oLi.length * oDivWidth + 'px' 
    //获取ul宽度 
   var oUlWidth = getStyle(oUl, 'width').split('px')[0] //封装获取非行间样式函数 
   function getStyle(obj, sName) { 
    if (obj.currentStyle) { 
     return obj.currentStyle[sName]; 
    } else { 
     return getComputedStyle(obj, false)[sName]; 
    } 
   } 
   //执行函数 
   clearInterval(timer3) 
   timer3 = setInterval(function() { 
     Run() 
    }, 2000) 
    //封装运动函数 
   function Run() { 
    clearInterval(timer) 
    timer = setInterval(function() { 
     n -= 20; 
     oUl.style.left = n + 'px' 
     if (n % oDivWidth == 0) { 
      clearInterval(timer3) 
      clearInterval(timer) 
      clearInterval(timer1) 
      timer1 = setTimeout(function() { 
       Run() 
      }, 2000) 
     } 
     if (n <= -oUlWidth / 2) { 
      oUl.style.left = 0; 
      n = 0; 
      clearInterval(timer3) 
      clearInterval(timer) 
      clearInterval(timer1) 
      timer1 = setTimeout(function() { 
       Run() 
      }, 2000) 
     } 
    }, 30) 
   } 
 
   //鼠标移入停止滚动 
   oDiv.onmouseover = function() { 
    Left.style.display = 'block' 
    Right.style.display = 'block' 
    clearInterval(timer3) 
    clearInterval(timer2) 
    timer2 = setInterval(function() { 
     if (n % oDivWidth == 0) { 
      clearInterval(timer) 
      clearInterval(timer1) 
     } 
    }, 30) 
 
   } 
 
   //鼠标移出继续执行 
   oDiv.onmouseout = function() { 
    Left.style.display = 'none' 
    Right.style.display = 'none' 
    clearInterval(timer3) 
    clearInterval(timer2) 
    clearInterval(timer1) 
    timer1 = setTimeout(function() { 
     Run() 
    }, 2000) 
   } 
 
   //向左 
   Left.onclick = function() { 
    //清除所有定时器 
    clearInterval(timer) 
    clearInterval(timer1) 
    clearInterval(timer2) 
    clearInterval(timer3) 
    timer = setInterval(function() { 
     n -= 50; 
     oUl.style.left = n + 'px' 
     if (n % oDivWidth == 0) { 
      clearInterval(timer) 
     } 
     if (n <= -oUlWidth / 2) { 
      oUl.style.left = 0; 
      n = 0; 
     } 
    }, 30) 
   } 
 
   //向右 
   Right.onclick = function() { 
    clearInterval(timer) 
    clearInterval(timer1) 
    clearInterval(timer2) 
    clearInterval(timer3) 
    if (n == 0) { 
     n = -oUlWidth / 2 
    } 
    clearInterval(timer) 
    timer = setInterval(function() { 
     n += 50; 
     oUl.style.left = n + 'px' 
     if (n % oDivWidth == 0) { 
      clearInterval(timer) 
     } 
 
    }, 30) 
   } 
  } 
</script> 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# js  # 轮播图  # 原生JS实现层叠轮播图  # 原生JS京东轮播图代码  # 原生js实现旋转木马轮播图效果  # 原生js实现轮播图的示例代码  # 支持移动端原生js轮播图  # 原生JS轮播图插件  # 原生js实现无限循环轮播图效果  # 原生js实现焦点轮播图效果  # 原生js实现无缝轮播图效果  # 原生js实现网易轮播图效果  # 原生js实现移动开发轮播图、相册滑动特效  # js原生代码实现轮播图的实例讲解  # 鼠标  # 行间  # 大家分享  # 具体内容  # 大家多多  # 移出  # Box  # hidden  # overflow  # relative  # position  # border  # px  # height  # auto  # solid  # top  # rgba  # radius  # fff 


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


相关推荐: 香港服务器如何优化才能显著提升网站加载速度?  Laravel API资源类怎么用_Laravel API Resource数据转换  Laravel怎么实现模型属性的自动加密  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  Laravel distinct去重查询_Laravel Eloquent去重方法  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  nodejs redis 发布订阅机制封装实现方法及实例代码  用v-html解决Vue.js渲染中html标签不被解析的问题  如何在云主机快速搭建网站站点?  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  在线教育网站制作平台,山西立德教育官网?  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  Laravel storage目录权限问题_Laravel文件写入权限设置  Java解压缩zip - 解压缩多个文件或文件夹实例  Edge浏览器怎么启用睡眠标签页_节省电脑内存占用优化技巧  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  北京网站制作的公司有哪些,北京白云观官方网站?  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  原生JS获取元素集合的子元素宽度实例  Claude怎样写结构化提示词_Claude结构化提示词写法【教程】  laravel怎么用DB facade执行原生SQL查询_laravel DB facade原生SQL执行方法  如何在阿里云部署织梦网站?  微信公众帐号开发教程之图文消息全攻略  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  Laravel如何自定义分页视图?(Pagination示例)  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  儿童网站界面设计图片,中国少年儿童教育网站-怎么去注册?  Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  简单实现Android验证码  千库网官网入口推荐 千库网设计创意平台入口  Bootstrap整体框架之JavaScript插件架构  Laravel如何处理异常和错误?(Handler示例)  Laravel的.env文件有什么用_Laravel环境变量配置与管理详解  大连网站制作公司哪家好一点,大连买房网站哪个好?  在centOS 7安装mysql 5.7的详细教程  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  制作旅游网站html,怎样注册旅游网站?  Python文件流缓冲机制_IO性能解析【教程】  Laravel怎么清理缓存_Laravel optimize clear命令详解  Gemini手机端怎么发图片_Gemini手机端发图方法【步骤】  php增删改查怎么学_零基础入门php数据库操作必知基础【教程】  阿里云网站搭建费用解析:服务器价格与建站成本优化指南