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 相关文章推荐
javascript下过滤数组重复值的代码
Sep 10 Javascript
js取值中form.all和不加all的区别介绍
Jan 20 Javascript
推荐25个超炫的jQuery网格插件
Nov 28 Javascript
javascript控制图片播放的实现代码
Jul 29 Javascript
jquery实现网页的页面平滑滚动效果代码
Nov 02 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
Aug 09 Javascript
AngularJS模板加载用法详解
Nov 04 Javascript
在js中做数字字符串补0(js补零)
Mar 25 Javascript
jquery实现用户登陆界面(示例讲解)
Sep 06 jQuery
原生JavaScript实现Ajax异步请求
Nov 19 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
Apr 11 Javascript
微信小程序APP的生命周期及页面的生命周期
Apr 19 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
wordpress之wp-settings.php
2007/08/17 PHP
PHP操作xml代码
2010/06/17 PHP
php 按指定元素值去除数组元素的实现方法
2011/11/04 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
laravel实现分页样式替换示例代码(增加首、尾页)
2017/09/22 PHP
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
获取dom元素那些讨厌的位置封装代码
2010/06/23 Javascript
JQuery调webservice实现邮箱验证(检测是否可用)
2013/05/21 Javascript
js全屏显示显示代码的三种方法
2013/11/11 Javascript
jquery使用jquery.zclip插件复制对象的实例教程
2013/12/04 Javascript
利用js读取动态网站从服务器端返回的数据
2014/02/10 Javascript
js父窗口关闭时子窗口随之关闭完美解决方案
2014/04/29 Javascript
微信小程序 数据绑定详解及实例
2016/10/25 Javascript
ionic开发中点击input时键盘自动弹出
2016/12/23 Javascript
JQuery统计input和textarea文字输入数量(代码分享)
2016/12/29 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
2019/11/09 Javascript
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
Js跳出两级循环方法代码实例
2020/09/22 Javascript
小程序实现密码输入框
2020/11/16 Javascript
[06:13]DOTA2进化论(修改版)
2013/10/08 DOTA
[03:27]《辉夜杯》线下训练营 导师CU和海涛指点迷津
2015/10/23 DOTA
Python 3中的yield from语法详解
2017/01/18 Python
Python正则表达式和元字符详解
2018/11/29 Python
pthon贪吃蛇游戏详细代码
2019/01/27 Python
python如何使用socketserver模块实现并发聊天
2019/12/14 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
Python getattr()函数使用方法代码实例
2020/08/10 Python
分享29个基于Bootstrap的HTML5响应式网页设计模板
2015/11/19 HTML / CSS
Farfetch中文官网:奢侈品牌时尚购物平台
2020/03/15 全球购物
英国100%防污和防水的靴子:Muck Boot Company
2020/09/08 全球购物
五年后的职业生涯规划
2014/03/04 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
导游词之凤凰古城
2019/10/22 职场文书
html实现随机点名器的示例代码
2021/04/02 Javascript
golang 如何通过反射创建新对象
2021/04/28 Golang