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 相关文章推荐
脚本收藏iframe
Jul 21 Javascript
JavaScript控制网页层收起和展开效果的方法
Apr 15 Javascript
创建你的第一个AngularJS应用的方法
Jun 16 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
Apr 14 Javascript
JavaScript:Date类型全面解析
May 19 Javascript
JS控制层作圆周运动的方法
Jun 20 Javascript
angularjs 获取默认选中的单选按钮的value方法
Feb 28 Javascript
详解vue-cli中模拟数据的两种方法
Jul 03 Javascript
layui框架table 数据表格的方法级渲染详解
Aug 19 Javascript
JS实现点击拉拽轮播图pc端移动端适配
Sep 05 Javascript
ES6之Proxy的get方法详解
Oct 11 Javascript
交互式可视化js库gojs使用介绍及技巧
Feb 18 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 MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
php 读取shell管道传输过来的内容
2010/03/01 PHP
Laravel框架源码解析之模型Model原理与用法解析
2020/05/14 PHP
Javascript中Eval函数的使用说明
2008/10/11 Javascript
使用Jquery打造最佳用户体验的登录页面的实现代码
2011/07/08 Javascript
js+css实现增加表单可用性之提示文字
2013/06/03 Javascript
document.forms[].submit()使用介绍
2014/02/19 Javascript
javascript 获取HTML DOM父、子、临近节点
2014/06/16 Javascript
学习javascript面向对象 实例讲解面向对象选项卡
2016/01/04 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
详细总结Javascript中的焦点管理
2016/09/17 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
.vue文件 加scoped 样式不起作用的解决方法
2018/05/28 Javascript
详解.vue文件解析的实现
2018/06/11 Javascript
详解如何使用微信小程序云函数发送短信验证码
2019/03/13 Javascript
vue实现Excel文件的上传与下载功能的两种方式
2019/06/28 Javascript
浅谈vue中resetFields()使用注意事项
2020/08/12 Javascript
[15:57]教你分分钟做大人:斧王
2014/10/30 DOTA
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
python为tornado添加recaptcha验证码功能
2014/02/26 Python
Python实现快速排序和插入排序算法及自定义排序的示例
2016/02/16 Python
使用Python和xlwt向Excel文件中写入中文的实例
2018/04/21 Python
TensorFlow实现简单的CNN的方法
2019/07/18 Python
python链表类中获取元素实例方法
2021/02/23 Python
Python Selenium操作Cookie的实例方法
2021/02/28 Python
使用CSS实现弹性视频html5案例实践
2012/12/26 HTML / CSS
环境科学毕业生自荐信
2013/11/21 职场文书
战友聚会邀请函
2014/01/18 职场文书
电脑销售顾问自荐信
2014/01/29 职场文书
原材料检验岗位职责
2014/03/15 职场文书
2014年大学生党员评议表自我评价
2014/09/20 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
作风转变年心得体会
2014/10/22 职场文书
治庸问责工作总结
2015/08/11 职场文书
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技
使用MybatisPlus打印sql语句
2022/04/22 SQL Server