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的siblings效果的js代码
Aug 09 Javascript
js 获取class的元素的方法 以及创建方法getElementsByClassName
Mar 11 Javascript
js获取元素到文档区域document的(横向、纵向)坐标的两种方法
May 17 Javascript
jQuery实现隔行背景色变色
Nov 24 Javascript
JavaScript中实现map功能代码分享
Jun 11 Javascript
JavaScript实现获取某个元素相邻兄弟节点的prev与next方法
Jan 25 Javascript
整理AngularJS框架使用过程当中的一些性能优化要点
Mar 05 Javascript
Javascript实现一个简单的输入关键字添加标签效果实例
Jun 01 Javascript
jQuery选择器之子元素选择器详解
Sep 18 jQuery
分析javascript中9 个常见错误阻碍你进步
Sep 18 Javascript
微信小程序 下拉刷新及上拉加载原理解析
Nov 06 Javascript
微信小程序自定义tabBar的踩坑实践记录
Nov 06 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中DateTime的常用方法
2016/08/11 PHP
TFDN图片播放器 不错自动播放
2006/10/03 Javascript
js更优雅的兼容
2010/08/12 Javascript
jquery入门——事件机制之事件中的冒泡现象示例解释
2020/09/12 Javascript
纯js写的分页表格数据为json串
2014/02/18 Javascript
小巧强大的jquery layer弹窗弹层插件
2015/12/06 Javascript
JavaScript给input的value赋值引发的关于基本类型值和引用类型值问题
2015/12/07 Javascript
javascript基于prototype实现类似OOP继承的方法
2015/12/16 Javascript
理解javascript定时器中的setTimeout与setInterval
2016/02/23 Javascript
原生JS和jQuery版实现文件上传功能
2016/04/18 Javascript
AngularJS Phonecat实例讲解
2016/11/21 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
详解nodejs模板引擎制作
2017/06/14 NodeJs
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
微信小程序实现顶部普通选项卡效果(非swiper)
2020/06/19 Javascript
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
Bootstrap table使用方法汇总
2017/11/17 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
vue-cli+webpack项目 修改项目名称的方法
2018/02/28 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
webpack常用构建优化策略小结
2019/11/21 Javascript
使用Bootstrap做一个朝代历史表
2019/12/10 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
微信小程序实现日历小功能
2020/11/18 Javascript
[02:08]2018年度CS GO枪械皮肤设计大赛优秀作者-完美盛典
2018/12/16 DOTA
Python入门之modf()方法的使用
2015/05/15 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
2018/10/11 Python
用Python实现数据的透视表的方法
2018/11/16 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
python读取并写入mat文件的方法
2019/07/12 Python
Django 开发调试工具 Django-debug-toolbar使用详解
2019/07/23 Python
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
大学生四个方面的自我评价
2013/09/19 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
Python NumPy灰度图像的压缩原理讲解
2021/08/04 Python
攻击最高的10只幽灵系神奇宝贝,坚盾剑怪排第一,第五最为可怕
2022/03/18 日漫