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(1.6.3) 中css方法对浮动的实现缺陷分析
Sep 09 Javascript
JQuery获取浏览器窗口内容部分高度的代码
Feb 24 Javascript
JS鼠标滑过图片时切换图片实现思路
Sep 12 Javascript
JS实现多物体缓冲运动实例代码
Nov 29 Javascript
JavaScript实现列表分页功能特效
May 15 Javascript
浅谈JavaScript超时调用和间歇调用
Aug 30 Javascript
JS实现黑客帝国文字下落效果
Sep 01 Javascript
三个js循环的关键字示例(for与while)
Feb 16 Javascript
JS基于ocanvas插件实现的简单画板效果代码(附demo源码下载)
Apr 05 Javascript
vue如何引用其他组件(css和js)
Apr 13 Javascript
angularJs中datatable实现代码
Jun 03 Javascript
Bootstrap与Angularjs的模态框实例代码
Aug 03 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 clearstatcache()函数详解
2010/03/02 PHP
php生成略缩图代码
2012/07/16 PHP
php 检查电子邮件函数(自写)
2014/01/16 PHP
PHP内置的Math函数效率测试
2014/12/01 PHP
php中Redis的应用--消息传递
2017/03/28 PHP
动态加载iframe
2006/06/16 Javascript
jQuery 渐变下拉菜单
2009/12/15 Javascript
使用jquery给指定的table动态添加一行、删除一行
2016/10/13 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
详解vue-router 2.0 常用基础知识点之router-link
2017/05/10 Javascript
JS实现的文字间歇循环滚动效果完整示例
2018/02/13 Javascript
解决koa2 ctx.render is not a function报错问题
2018/08/07 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
vue调用微信JSDK 扫一扫,相册等需要注意的事项
2021/01/03 Vue.js
[01:31:03]DOTA2完美盛典全回顾 见证十五项大奖花落谁家
2017/11/28 DOTA
[38:42]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第二场 11.05
2020/11/05 DOTA
python正则表达式re模块详解
2014/06/25 Python
python验证码识别教程之滑动验证码
2018/06/04 Python
替换python字典中的key值方法
2018/07/06 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
python groupby 函数 as_index详解
2019/12/16 Python
django 解决扩展自带User表遇到的问题
2020/05/14 Python
python使用多线程+socket实现端口扫描
2020/05/28 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
利用CSS3把图片变成灰色模式的实例代码
2016/09/06 HTML / CSS
canvas实现手机的手势解锁的步骤详细
2020/03/16 HTML / CSS
英国最大的电脑零售连锁店集团:PC World
2016/10/10 全球购物
New Balance俄罗斯官方网上商店:购买运动鞋
2020/03/02 全球购物
美国名牌手表折扣网站:Jomashop
2020/05/22 全球购物
中文系学生自荐信范文
2013/11/13 职场文书
电子商务个人自荐信
2013/12/12 职场文书
送餐员岗位职责范本
2014/02/21 职场文书
电台实习生求职信
2014/02/25 职场文书
售房委托书
2014/08/30 职场文书
走近毛泽东观后感
2015/06/04 职场文书
小学中队委竞选稿
2015/11/20 职场文书