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 相关文章推荐
javascript下过滤数组重复值的代码
Sep 10 Javascript
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
May 13 Javascript
客户端 使用XML DOM加载json数据的方法
Sep 28 Javascript
非常漂亮的JS+CSS图片幻灯切换特效
Nov 20 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
Nov 27 Javascript
JavaScript中transform实现数字翻页效果
Mar 08 Javascript
分享vue里swiper的一些坑
Aug 30 Javascript
Vue.js 中的实用工具方法【推荐】
Jul 04 Javascript
JavaScript中this函数使用实例解析
Feb 21 Javascript
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
JS相册图片抖动放大展示效果的示例代码
Jan 29 Javascript
关于antd tree 和父子组件之间的传值问题(react 总结)
Jun 02 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
PHP新手上路(十三)
2006/10/09 PHP
php实现通过cookie换肤的方法
2015/07/13 PHP
实例讲解PHP中使用命名空间
2019/01/27 PHP
JS中setTimeout()的用法详解
2013/04/14 Javascript
解析ScrollPic在ie8下只滚动一遍,然后变为空白 ie6,ie7,chrome,firefox正常
2013/06/26 Javascript
网页防止tab键的使用快速解决方法
2013/11/07 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
基于jquery实现等比缩放图片
2014/12/03 Javascript
jQuery判断对象是否存在的方法
2015/02/05 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
Web前端开发工具——bower依赖包管理工具
2016/03/29 Javascript
BootStrap 智能表单实战系列(十)自动完成组件的支持
2016/06/13 Javascript
浅谈window.onbeforeunload() 事件调用ajax
2016/06/29 Javascript
纯JS实现轮播图
2017/02/22 Javascript
原生JS实现左右箭头选择日期实例代码
2017/03/14 Javascript
Bootstrap标签页(Tab)插件使用方法
2017/03/21 Javascript
理解 javascript 中的函数表达式与函数声明
2017/07/07 Javascript
微信小程序module.exports模块化操作实例浅析
2018/12/20 Javascript
vue使用element-ui实现表单验证
2020/12/13 Vue.js
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
Python Web框架Flask信号机制(signals)介绍
2015/01/01 Python
在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程
2015/04/25 Python
关于python多重赋值的小问题
2019/04/17 Python
python与C、C++混编的四种方式(小结)
2019/07/15 Python
用python实现学生管理系统
2020/07/24 Python
详解如何修改python中字典的键和值
2020/09/29 Python
详解canvas.toDataURL()报错的解决方案全都在这了
2020/03/31 HTML / CSS
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
建设工地安全标语
2014/06/07 职场文书
员工工作自我评价
2014/09/26 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
焦点访谈观后感
2015/06/11 职场文书
计算机教师工作总结
2015/08/13 职场文书
2016年公司新年寄语
2015/08/17 职场文书
中国文明网2015年“向国旗敬礼”活动网上签名寄语
2015/09/24 职场文书
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python