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 ui 1.7更新小结
Aug 15 Javascript
js模仿jquery的写法示例代码
Jun 16 Javascript
jquery 选取方法都有哪些
May 18 Javascript
Javascript解析URL方法详解
Dec 05 Javascript
了不起的node.js读书笔记之例程分析
Dec 22 Javascript
JavaScript调用客户端Java程序的方法
Jul 27 Javascript
滚动条的监听与内容随着滚动条动态加载的实现
Feb 08 Javascript
Ajax高级笔记 JavaScript高级程序设计笔记
Jun 22 Javascript
详解jQuery获取特殊属性的值以及设置内容
Nov 14 jQuery
element的el-table中记录滚动条位置的示例代码
Nov 06 Javascript
一篇文章带你使用Typescript封装一个Vue组件(简单易懂)
Jun 05 Javascript
vue 导航守卫和axios拦截器有哪些区别
Dec 19 Vue.js
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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
PHP 5.0 Pear安装方法
2006/12/06 PHP
简单的PHP多图上传小程序代码
2011/07/17 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
PHP微信红包生成代码分享
2016/10/06 PHP
php抽象方法和抽象类实例分析
2016/12/07 PHP
PHP异步进程助手async-helper
2018/02/05 PHP
$.ajax json数据传递方法
2008/11/19 Javascript
javascript实现原生ajax的几种方法介绍
2013/09/21 Javascript
js中Image对象以及对其预加载处理示例
2013/11/20 Javascript
jquery动态添加删除(tr/td)
2015/02/09 Javascript
Node.js 学习笔记之简介、安装及配置
2015/03/03 Javascript
JS平滑无缝滚动效果的实现代码
2016/05/06 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
基于JavaScript实现的希尔排序算法分析
2017/04/14 Javascript
如何编写一个d.ts文件的步骤详解
2018/04/13 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
javascript导出csv文件(excel)的方法示例
2019/08/25 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
CKEditor扩展插件:自动排版功能autoformat插件实现方法详解
2020/02/06 Javascript
5个你不知道的JavaScript字符串处理库(小结)
2020/06/01 Javascript
easyUI使用分页过滤器对数据进行分页操作实例分析
2020/06/01 Javascript
[01:06]DOTA2隆重推出2016冬季勇士令状 内含上海特级锦标赛互动指南
2016/02/17 DOTA
python+mongodb数据抓取详细介绍
2017/10/25 Python
Python使用一行代码获取上个月是几月
2018/08/30 Python
使用Python为中秋节绘制一块美味的月饼
2019/09/11 Python
Python中包的用法及安装
2020/02/11 Python
TensorFlow-gpu和opencv安装详细教程
2020/06/30 Python
HTML5中使用json对象的实例代码
2018/09/10 HTML / CSS
船餐厅和泰晤士河餐饮游轮:Bateaux London
2018/03/19 全球购物
应聘护士求职信
2014/07/21 职场文书
快速学习Oracle触发器和游标
2021/06/30 Oracle