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中常用的55个经典技巧
Aug 12 Javascript
8个超棒的学习 jQuery 的网站 推荐收藏
Apr 02 Javascript
JQuery.closest(),parent(),parents()寻找父结点
Feb 17 Javascript
js实现拖拽效果(构造函数)
Dec 14 Javascript
js判断出两个字符串最大子串的函数实现方法
Nov 01 Javascript
使用node.js中的Buffer类处理二进制数据的方法
Nov 26 Javascript
JS控件bootstrap datepicker使用方法详解
Mar 25 Javascript
浅谈mint-ui loadmore组件注意的问题
Nov 08 Javascript
JS实现可针对算术表达式求值的计算器功能示例
Sep 04 Javascript
微信小程序实现时间预约功能
Nov 27 Javascript
angular 实现同步验证器跨字段验证的方法
Apr 11 Javascript
了解javascript中变量及函数的提升
May 27 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.ini中文版
2006/10/09 PHP
PHP多维数组遍历方法(2种实现方法)
2015/12/10 PHP
Thinkphp5.0框架视图view的模板布局用法分析
2019/10/12 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
推荐11款jQuery开发的复选框和单选框美化插件
2011/08/02 Javascript
javascript基础知识大全 便于大家学习,也便于我自己查看
2012/08/17 Javascript
JavaScript学习笔记之基础语法
2015/01/22 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
2016/06/18 Javascript
js计算系统当前日期是星期几的方法
2016/07/14 Javascript
javascript中的 object 和 function小结
2016/08/14 Javascript
详解JavaScript中的属性和特性
2016/12/08 Javascript
JavaScript获取select中text值的方法
2017/02/13 Javascript
easyui combogrid实现本地模糊搜索过滤多列
2017/05/13 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
JS实现的数组去除重复数据算法小结
2017/11/17 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
js实现鼠标点击飘爱心效果
2020/08/19 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
python技能之数据导出excel的实例代码
2017/08/11 Python
Python进阶之全面解读高级特性之切片
2019/02/19 Python
Python二叉搜索树与双向链表转换算法示例
2019/03/02 Python
python3实现字符串操作的实例代码
2019/04/16 Python
python opencv如何实现图片绘制
2020/01/19 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
贝尔帐篷精品店:Bell Tent Boutique
2019/06/12 全球购物
能否解释一下XSS cookie盗窃是什么意思
2012/06/02 面试题
综合办公室个人的自我评价
2013/12/22 职场文书
大气污染防治方案
2014/05/19 职场文书
客运企业隐患排查工作方案
2014/06/06 职场文书
2014年国庆节庆祝建国65周年比赛演讲稿
2014/09/21 职场文书
四风剖析查摆对照检查材料思想汇报
2014/09/24 职场文书
高三毕业评语
2014/12/31 职场文书
迟到检讨书
2015/01/26 职场文书
python pandas 解析(读取、写入)CSV 文件的操作方法
2022/12/24 Python