js轮播图之旋转木马效果


Posted in Javascript onOctober 13, 2020

本文实例为大家分享了js轮播图之旋转木马效果的具体代码,供大家参考,具体内容如下

思路:给定一个数组,储存每张图片的位置,旋转将位置进行替换
左旋转:将数组第一个数据删除,然后添加到数组的最后
右旋转:将数组最后一个数据删除,然后添加到数组的开头
先附上效果图,再来实现

js轮播图之旋转木马效果

接下来就是最主要的,封装原生js动画函数

//封装函数获取任意一个元素的任意属性的值(兼容ie8)
function getStyle(element, attr) {
 return window.getComputedStyle ? window.getComputedStyle(element, null)[attr] : element.currentStyle[attr];
}
//封装js变速动画
function animate(element, json, fn) {
 //每次启动定时器之前先停止
 clearInterval(element.tmId);
 element.tmId = setInterval(function () {
  var flag = true;
  //遍历对象中的每个属性
  for (var attr in json) {
   //执行透明度动画
   if (attr == "opacity") {
    //获取当前元素的属性值
    var current = parseInt(getStyle(element, attr)*100);
    //获取目标值
    var target = json[attr]*100;
    //移动的步数
    var step = (target - current) / 10;
    step = step > 0 ? Math.ceil(step) : Math.floor(step);
    //移动后的值
    current += step;
    element.style[attr] = current / 100;
   } else if (attr == "zIndex") {
    //改变层级属性
    element.style[attr] = json[attr];
   } else {
    //获取当前元素的属性值
    var current = parseInt(getStyle(element, attr));
    //获取目标值
    var target = json[attr];
    //移动的步数
    var step = (target - current) / 10;
    step = step > 0 ? Math.ceil(step) : Math.floor(step);
    //移动后的值
    current += step;
    element.style[attr] = current + "px";
    if (current != target) {
     flag = false;
    }
   }
  }
  if (flag) {
   clearInterval(element.tmId);
   //如果有回调函数就调用
   if (fn) fn();
  }
  // 测试
  // console.log("目标:" + target + "/当前:" + current + "/步数:" + step);
 }, 20);
}

封装完函数,剩下的直接调用就可以了,最后附上旋转木马完整代码?

<!DOCTYPE html>
<html>
<head lang="en">
 <meta charset="UTF-8">
 <title>旋转木马轮播图</title>
 <link rel="stylesheet" href="css/css(1).css" rel="external nofollow" />
 <script src="common.js"></script>
 <script>
  var config = [
   {
    width: 400,
    top: 20,
    left: 50,
    opacity: 0.2,
    zIndex: 2
   },//0
   {
    width: 600,
    top: 70,
    left: 0,
    opacity: 0.8,
    zIndex: 3
   },//1
   {
    width: 800,
    top: 100,
    left: 200,
    opacity: 1,
    zIndex: 4
   },//2
   {
    width: 600,
    top: 70,
    left: 600,
    opacity: 0.8,
    zIndex: 3
   },//3
   {
    width: 400,
    top: 20,
    left: 750,
    opacity: 0.2,
    zIndex: 2
   }//4

  ];

  window.onload = function () {
   var flag = true;
   var list = $query("#slide").getElementsByTagName("li");

   function flower() {
    //1、图片散开
    for (var i = 0; i < list.length; i++) {
     //设置每个li的宽,透明度,left,top,zindex
     animate(list[i], config[i], function () {
      flag = true;
     });
    }
   }

   flower();//初始化调用函数
   //按钮的显示与隐藏
   $query("#slide").onmouseover = function () {
    $query("#arrow").style.opacity = "1";
   }
   $query("#slide").onmouseout = function () {
    $query("#arrow").style.opacity = "0";
   }
   //点击切换
   $query("#arrLeft").onclick = function () {
    if (flag) {
     config.unshift(config.pop());
     flower();
     flag = false;
    }
   }
   $query("#arrRight").onclick = function () {
    if (flag) {
     config.push(config.shift());
     flower();
     flag = false;
    }
   }
   //自动切换
   setInterval(function () {
    config.push(config.shift());
    flower();
   }, 2000);
  }
 </script>

</head>
<body>
<div class="wrap" id="wrap">
 <div class="slide" id="slide">
  <ul>
   <li><a href="#"><img src="images/slidepic1.jpg" alt=""/></a></li>
   <li><a href="#"><img src="images/slidepic2.jpg" alt=""/></a></li>
   <li><a href="#" ><img src="images/slidepic3.jpg" alt=""/></a></li>
   <li><a href="#"><img src="images/slidepic4.jpg" alt=""/></a></li>
   <li><a href="#"><img src="images/slidepic5.jpg" alt=""/></a></li>
  </ul>
  <div class="arrow" id="arrow">
   <a href="javascript:void(0);" class="prev" id="arrLeft"></a>
   <a href="javascript:void(0);" class="next" id="arrRight"></a>
  </div>
 </div>
</div>

</body>
</html>

精彩专题分享:jQuery图片轮播 JavaScript图片轮播 Bootstrap图片轮播

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

Javascript 相关文章推荐
jquery选择器-根据多个属性选择示例代码
Oct 21 Javascript
jQuery模拟点击A标记示例参考
Apr 17 Javascript
js获取数组的最后一个元素
Apr 14 Javascript
jQuery实现的超简单点赞效果实例分析
Dec 31 Javascript
初识angular框架后的所思所想
Feb 19 Javascript
第二篇Bootstrap起步
Jun 21 Javascript
Javascript将JSON日期格式化
Aug 23 Javascript
Web打印解决方案之普通报表打印功能
Aug 29 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
Oct 30 Javascript
完美实现js焦点轮播效果(一)
Mar 07 Javascript
JS获取并处理php数组的方法实例分析
Sep 04 Javascript
vue如何解决循环引用组件报错的问题
Sep 22 Javascript
Vue中正确使用Element-UI组件的方法实例
Oct 13 #Javascript
JavaScript数组常用的增删改查与其他属性详解
Oct 13 #Javascript
JS将指定的某个字符全部转换为其他字符实例代码
Oct 13 #Javascript
JavaScript实现拖动对话框效果的实现代码
Oct 12 #Javascript
react的hooks的用法详解
Oct 12 #Javascript
微信小游戏中three.js离屏画布的示例代码
Oct 12 #Javascript
原生JavaScript实现弹幕组件的示例代码
Oct 12 #Javascript
You might like
PHP setcookie() cannot modify header information 的解决方法
2009/01/09 PHP
PHP获取文件绝对路径的代码(上一级目录)
2011/05/29 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
PHP中功能强大却很少使用的函数实例小结
2016/11/10 PHP
Yii2.0框架实现带分页的多条件搜索功能示例
2019/02/20 PHP
PHP中localeconv()函数的用法
2019/03/26 PHP
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
js移除事件 js绑定事件实例应用
2012/11/28 Javascript
JavaScript之Getters和Setters 平台支持等详细介绍
2012/12/07 Javascript
css配合jquery美化 select
2013/11/29 Javascript
使用JS或jQuery模拟鼠标点击a标签事件代码
2014/03/10 Javascript
Windows8下搭建Node.js开发环境教程
2014/09/03 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
javascript实现无缝上下滚动特效
2015/12/16 Javascript
jQuery简单自定义图片轮播插件及用法示例
2016/11/21 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
vue devtools的安装与使用教程
2018/08/08 Javascript
解决layer弹层遮罩挡住窗体的问题
2018/08/17 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
python实现simhash算法实例
2014/04/25 Python
Python发送email的3种方法
2015/04/28 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
聊聊Python中的pypy
2018/01/12 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
使用Python将图片转正方形的两种方法实例代码详解
2020/04/29 Python
python初步实现word2vec操作
2020/06/09 Python
黑猩猩商店:The Chimp Store
2020/02/12 全球购物
高校学生干部的自我评价分享
2013/11/04 职场文书
设计专业自荐信
2014/06/19 职场文书
大学毕业生个人总结
2015/02/28 职场文书
南京大屠杀观后感
2015/06/02 职场文书
2015年思想品德教学工作总结
2015/07/22 职场文书
幼儿园园长新年寄语
2015/08/17 职场文书
python中tkinter复选框使用操作
2021/11/11 Python