原生js实现旋转木马轮播图效果

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

话不多说,请看代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>旋转木马特效</title>
 <style type="text/css">
 *{margin: 0;padding: 0;list-style:none;}
 #demo{width:1200px;margin:100px auto 0;}
 #innerht{width:1200px;height:500px;position:relative;}
 ul li{position:absolute;top:0;left:0;z-index:1;}
 ul li img{width:100%;}
 #corrow{position:absolute;width:100%;top:50%;opacity:0;z-index:99;}
 #btn_lef,#btn_rig{position:absolute;height:112px;width:76px;top:50%;margin-top:-56px;}
 #btn_lef{left:0;}
 #btn_rig{right:0;}
 </style>
</head>
<body>
 <div id="demo">
 <div id="innerht">
  <ul>
  <li><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=dac666f84f6ad05ec026ad655ea0f159" alt=""></a></li>
  <li><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=89c2213f2b614db88b5724b82dafc02a" alt=""></a></li>
  <li><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=e7969486909c076abf795995bdc3da54" alt=""></a></li>
  <li><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=b404e53a3f4dd7e97438693e8e2d4082" alt=""></a></li>
  <li><a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" ><img src="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=ed309dded163d172b53154b2046eb1a2" alt=""></a></li>
  </ul>
  <div id="corrow">
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="btn_lef"><img src="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=206927b03b97b194bc04cdcaf0e10a33" height="112" width="76" alt=""></a>
  <a href="javascript:;" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" rel="external nofollow" id="btn_rig"><img src="http://www.qdfuns.com/misc.php?mod=attach&genre=editor&aid=0e84253cccdf667e293522a0a107eeec" height="112" width="76" alt=""></a>
  </div>
 </div>
 </div>
</body>
<script type="text/javascript">
 (function(window){
 function $(id){
  return document.getElementById(id);
 };
//每张图片对应的样式
 var tempArr = [
  {
  "width":400,
  "top":20,
  "left":50,
  "opacity":0.2,
  "zIndex":2
  },
  {
  "width":600,
  "top":70,
  "left":0,
  "opacity":0.8,
  "zIndex":3
  },
  {
  "width":800,
  "top":100,
  "left":200,
  "opacity":1,
  "zIndex":4
  },
  {
  "width":600,
  "top":70,
  "left":600,
  "opacity":0.8,
  "zIndex":3
  },
  {
  "width":400,
  "top":20,
  "left":750,
  "opacity":0.2,
  "zIndex":2
  }
 ];
 // 设置限流函数
 var onOff = true ;
 // 获取对象
 var left = $("btn_lef"),right = $("btn_rig"),innerht = $("innerht"),ul = innerht.children[0],lis = ul.children,arrow = $("corrow");
 // 给每个li添加样式
 addStyle();
 // 大盒子的hover事件
 innerht.onmouseover = function(){
  animate(arrow,{"opacity":1});
 };
 innerht.onmouseout = function(){
  animate(arrow,{"opacity":0});
 };
 // 右箭头点击事件
 right.onclick = function(){
  if( onOff ){
  onOff = false;
  var atop = tempArr.shift();
  tempArr.push( atop );
  addStyle();
  };
 };
 // 左箭头点击事件
 left.onclick = function(){
  if( onOff ){
  onOff = false;
  var apop = tempArr.pop();
  tempArr.unshift( apop );
  addStyle();
  };
 };
 function addStyle(){
  for( i = 0 ; i < lis.length ; i++ ){
  animate(lis[i],tempArr[i],function(){
   onOff = true;
   console.log(onOff);
  });
  };
 };
 // 设置animate函数
 function animate(obj,json,fn){
  clearInterval(obj.timer);
  obj.timer = setInterval(function(){
  var flog = true ;
  for( k in json ){
   if( k === "zIndex" ){
   obj.style[k] = json[k]; 
   }else if( k === "opacity" ){
   var leader = getStyle(obj,k) * 100 ;
   var target = json[k] * 100 ;
   var step = ( target - leader ) / 10 ;
   step = step > 0 ? Math.ceil( step ) : Math.floor( step ) ;
   // 浮点数判断相等时是不准确的
   // 所以不能写leader = ( leader + step )/100;
   // 保持leader和target都是整数,便于下面判断相等
   leader = leader + step ;
   obj.style[k] = leader / 100;
   }else{
   var leader = parseInt( getStyle(obj,k) ) || 0 ;
   var target = json[k];
   var step = ( target - leader ) / 10 ;
   step = step > 0 ? Math.ceil( step ) : Math.floor( step ) ;
   leader = leader + step ; 
   obj.style[k] = leader + "px";
   };
   if( leader !== target ){
   flog = false ;
   };
  };
  console.log(flog);
  if( flog ){
   clearInterval( obj.timer );
   if( fn ){
   fn();
   };
  };
  }, 15);
 };
 // 设置getStyle函数,获取计算后的样式
 function getStyle(obj,attr){
  if( window.getComputedStyle ){
  return window.getComputedStyle(obj,null)[attr];
  }else{
  return obj.currentStyle[attr];
  };
 };
 })(window)
</script>
</html>

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


# js旋转木马轮播图  # 旋转木马轮播图  # 旋转木马轮播  # JS实现旋转木马轮播案例  # js轮播图之旋转木马效果  # JavaScript实现旋转木马轮播图  # js实现旋转木马轮播图效果  # JS实现旋转木马轮播图  # js实现旋转木马效果  # JS实现旋转木马式图片轮播效果  # 原生JS实现旋转木马式图片轮播插件  # 原生js实现旋转木马效果  # 都是  # 多说  # 不准确  # 浮点数  # btn_lef  # btn_rig  # body  # div  # opacity  # top  # left  # li  # absolute  # corrow  # index  # img  # id  # mod  # misc  # php 


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


相关推荐: Laravel如何自定义错误页面(404, 500)?(代码示例)  标题:Vue + Vuex + JWT 身份认证的正确实践与常见误区解析  Laravel如何处理CORS跨域问题_Laravel项目CORS配置与解决方案  Laravel如何使用.env文件管理环境变量?(最佳实践)  专业型网站制作公司有哪些,我设计专业的,谁给推荐几个设计师兼职类的网站?  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  如何在阿里云ECS服务器部署织梦CMS网站?  Win11怎么开启自动HDR画质_Windows11显示设置HDR选项  详解Oracle修改字段类型方法总结  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  Python结构化数据采集_字段抽取解析【教程】  Laravel如何将应用部署到生产服务器_Laravel生产环境部署流程  Laravel广播系统如何实现实时通信_Laravel Reverb与WebSockets实战教程  JavaScript Ajax实现异步通信  如何在Windows环境下新建FTP站点并设置权限?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  Win11任务栏卡死怎么办 Windows11任务栏无反应解决方法【教程】  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  装修招标网站设计制作流程,装修招标流程?  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Laravel中的withCount方法怎么高效统计关联模型数量  如何正确选择百度移动适配建站域名?  Bootstrap整体框架之CSS12栅格系统  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  php后缀怎么变mp4格式错误_修改扩展名提示格式不对怎么办【技巧】  lovemo网页版地址 lovemo官网手机登录  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  Laravel定时任务怎么设置_Laravel Crontab调度器配置  C++用Dijkstra(迪杰斯特拉)算法求最短路径  网站制作企业,网站的banner和导航栏是指什么?  详解jQuery中的事件  Laravel怎么实现一对多关联查询_Laravel Eloquent模型关系定义与预加载【实战】  制作企业网站建设方案,怎样建设一个公司网站?  Laravel如何配置任务调度?(Cron Job示例)  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Python正则表达式进阶教程_复杂匹配与分组替换解析  深圳网站制作平台,深圳市做网站好的公司有哪些?  C语言设计一个闪闪的圣诞树  Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决  Laravel如何使用withoutEvents方法临时禁用模型事件  Laravel怎么在Blade中安全地输出原始HTML内容  七夕网站制作视频,七夕大促活动怎么报名?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  如何确认建站备案号应放置的具体位置?