js实现旋转木马轮播图效果


Posted in Javascript onJanuary 10, 2020

本文实例为大家分享了js实现旋转木马轮播图的具体代码,供大家参考,具体内容如下

整个页面的文件结构如下图所示:

js实现旋转木马轮播图效果

html部分代码:

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>旋转木马轮播图</title>
 <link rel="stylesheet" href="css/myStyle.css" rel="external nofollow" />
 <script type="text/javascript" src="js/animate.js"></script>
 <script type="text/javascript" src="js/my.js"></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:;" class="prev" id="arrLeft"></a>
   <a href="javascript:;" class="next" id="arrRight"></a>
  </div>
 </div>
</div>
</body>
</html>

在html部分引入的myStyle.css文件部分代码

@charset "UTF-8";
 
blockquote,body,button,dd,dl,dt,fieldset,form,h1,h2,h3,h4, h5, h6, hr, input, legend, li, ol, p, pre, td, textarea, th, ul{
 margin:0;
 padding:0
}
 
body,button,input,select,textarea{
 font:12px/1.5 "Microsoft YaHei", "微软雅黑", SimSun, "宋体", sans-serif;
 color:#666;
}
 
ol,ul{
 list-style:none
}
 
a{
 text-decoration:none
}
 
fieldset,img{
 border:0;
 vertical-align:top;
}
 
a,input,button,select,textarea{
 outline:none
}
 
a,button{
 cursor:pointer
}
 
.wrap{
 width:1200px;
 margin:100px auto;
}
.slide{
 height:500px;
 position: relative;
}
 
.slide li{
 position:absolute;
 left:200px;
 top:0
}
 
.slide li img{
 width:100%
}
 
.arrow{
 opacity:0;
}
 
.prev ,.next{
 width:76px;
 height:112px;
 position:absolute;
 top:50%;
 margin-top:-56px;
 background:url(../images/prev.png) no-repeat;
 z-index:99;
}
 
 
.next{
 right:0;
 background-image:url(../images/next.png);
}

在html部分引入的animate.js文件部分代码

/**
 * Created by RENPINGSHENG on 2018/4/6.
 */
 
function animate(obj,json,fn) {
 clearInterval(obj.timer);
 obj.timer = setInterval(function () {
  var flag = true;
  for(var k in json){
   if( k == "opacity"){
    var leader = getStyle(obj,k) * 100;
    var target = json[k] * 100;
    var step = (target - leader) /10;
    step = step > 0 ? Math.ceil(step) : Math.floor(step);
    leader = leader + step;
    obj.style[k] = leader /100;
   } else if ( k == "zIndex"){
    obj.style[k] = json[k];
   }else{
    var leader = parseInt(getStyle(obj,k)) || 0;
    var target = json[k];
    var step = (target - leader) /10;
    step = step >0 ? Math.ceil(step) : Math.floor(step);
    leader = leader + step;
    obj.style[k] = leader + "px";
   }
 
   console.log("target:" + target + "leader:" + leader + "step:" + step);
   if (leader != target){
    flag = false;
   }
  }
 
  if (flag){
   clearInterval(obj.timer);
   if(fn){
    fn();
   }
  }
 },15)
}
 
function getStyle(obj,attr){
 if (obj.currentStyle){
  return obj.currentStyle[attr];
 }else{
  return window.getComputedStyle(obj,null)[attr];
 }
}

在html部分引入的my.js文件部分代码

/**
 * Created by RENPINGSHENG on 2018/4/6.
 */
 
 
window.onload = function () {
 var wrap = document.getElementById("wrap");
 var slide = document.getElementById("slide");
 var ul = slide.children[0];
 var lis = ul.children;
 var arrow = document.getElementById("arrow");
 var arrRight = document.getElementById("arrRight");
 var arrLeft = document.getElementById("arrLeft");
 
 var config = [
  {
   width:400,
   top:20,
   left:50,
   opacity:0.2,
   zIndex:2
  },
  {
   width:600,
   top:70,
   left:0,
   opacity:0.8,
   zIndex:3
  },
  {
   width:800,
   top:100,
   left:200,
   opacity:1,
   zIndex:4
  },
  {
   width:600,
   top:70,
   left:600,
   opacity:0.8,
   zIndex:3
  },
  {
   width:400,
   top:20,
   left:750,
   opacity:0.2,
   zIndex:2
  }
 ];
 
 wrap.onmouseover = function () {
  animate(arrow,{"opacity":1});
 }
 wrap.onmouseout = function () {
  animate(arrow,{"opacity":0});
 }
 function assign() {
  for(var i = 0;i < lis.length;i++){
   animate(lis[i],config[i],function(){
    flag = true;
   })
  }
 }
 
 var flag = true;
 assign();
 arrRight.onclick = function () {
  flag = false;
  config.push(config.shift());
  assign();
 };
 arrLeft.onclick = function () {
  flag = false;
  config.unshift(config.pop());
  assign();
 }
}

代码完成后,用浏览器打开网页,效果如下:

js实现旋转木马轮播图效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JS option location 页面跳转实现代码
Dec 27 Javascript
js实现window.open不被拦截的解决方法汇总
Oct 30 Javascript
JavaScript实现查找字符串中第一个不重复的字符
Dec 29 Javascript
JavaScript中数组成员的添加、删除介绍
Dec 30 Javascript
Java File类的常用方法总结
Mar 18 Javascript
基于javascript实现tab选项卡切换特效调试笔记
Mar 30 Javascript
微信小程序 数组(增,删,改,查)等操作实例详解
Jan 05 Javascript
用angular实现多选按钮的全选与反选实例代码
May 23 Javascript
Angular实现点击按钮控制隐藏和显示功能示例
Dec 29 Javascript
layui button 按钮弹出提示窗口,确定才进行的方法
Sep 06 Javascript
js中Function引用类型常见有用的方法和属性详解
Dec 11 Javascript
Javascript类型判断相关例题及解析
Aug 26 Javascript
微信小程序新闻网站详情页实例代码
Jan 10 #Javascript
如何在Node和浏览器控制台中打印彩色文字
Jan 09 #Javascript
JavaScript复制变量三种方法实例详解
Jan 09 #Javascript
js实现左右轮播图
Jan 09 #Javascript
Vue-axios-post数据后端接不到问题解决
Jan 09 #Javascript
一看就会的vuex实现登录验证(附案例)
Jan 09 #Javascript
Websocket 向指定用户发消息的方法
Jan 09 #Javascript
You might like
无线电波是什么?它是怎样传输的?
2021/03/01 无线电
不用GD库生成当前时间的PNG格式图象的程序
2006/10/09 PHP
PHP中error_reporting()函数的用法(修改PHP屏蔽错误)
2011/07/01 PHP
PHP冒泡算法详解(递归实现)
2014/11/10 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
php文件上传类的分享
2017/07/06 PHP
laravel5.6实现数值转换
2019/10/23 PHP
PHP与Web页面交互操作实例分析
2020/06/02 PHP
php解析非标准json、非规范json的方式实例
2020/12/10 PHP
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
js实现翻页后保持checkbox选中状态的实现方法
2012/11/03 Javascript
jQuery文本框(input textare)事件绑定方法教程
2013/04/24 Javascript
Jquery选中或取消radio示例
2013/09/29 Javascript
jQuery实现表单提交时判断的方法
2014/12/13 Javascript
RequireJS多页面应用实例分析
2016/06/29 Javascript
基于JavaScript实现轮播图原理及示例
2020/04/10 Javascript
关于jQuery.ajax()的jsonp碰上post详解
2017/07/02 jQuery
jQuery实现点击关注和取消功能
2017/07/03 jQuery
js+html5实现半透明遮罩层弹框效果
2020/08/24 Javascript
localstorage实现带过期时间的缓存功能
2019/06/28 Javascript
详解vue路由
2020/08/05 Javascript
[48:27]EG vs Liquid 2018国际邀请赛淘汰赛BO3 第二场 8.25
2018/08/29 DOTA
详解Python爬虫的基本写法
2016/01/08 Python
Centos Python2 升级到Python3的简单实现
2016/06/21 Python
基于python(urlparse)模板的使用方法总结
2017/10/13 Python
Python爬虫工程师面试问题总结
2018/03/22 Python
基于python3实现socket文件传输和校验
2018/07/28 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
Python存储读取HDF5文件代码解析
2020/11/25 Python
python中操作文件的模块的方法总结
2021/02/04 Python
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
公司中层干部的自我评价分享
2014/03/01 职场文书
汽车运用工程专业求职信
2014/06/18 职场文书
中学生思想品德评语
2014/12/31 职场文书
springboot中rabbitmq实现消息可靠性机制详解
2021/09/25 Java/Android
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS