JS实现旋转木马式图片轮播效果


Posted in Javascript onJanuary 18, 2017

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

主要html代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <link rel="stylesheet" type="text/css" href="css/css.css">
  <script type="text/javascript" src="js/animate.js"></script>
</head>
<body>
  <div class="w-wrap" id="js_wrap">
    <div class="wrap-slide" id="wrap_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>
        <!-- <li><a href="#"><img src="images/slidepic6.jpg" alt=""></a></li> -->
      </ul>
      <div class="wrap-slide-arrow" id="wrap_slide_arrow">
        <a href="javascript:;" class="prev"></a>
        <a href="javascript:;" class="next"></a>
      </div>
    </div>
  </div>
  <script>
    function $(id){ return document.getElementById(id);}
    var js_wrap = $("js_wrap"); 
    var wrap_slide = $("wrap_slide"); 
    var wrap_slide_arrow = $("wrap_slide_arrow");
    var lis = wrap_slide.children[0].children;


    var json = [
      {
        //1
        width: 400,
        top: 20,
        left: 50,
        opacity: 20,
        z: 2
      },
      {
        //2
        width: 600,
        top: 70,
        left: 0,
        opacity: 80,
        z: 3
      },
      {
        //3
        width: 800,
        top: 100,
        left: 200,
        opacity: 100,
        z: 4
      },
      {
        //4
        width: 600,
        top: 70,
        left: 600,
        opacity: 80,
        z: 3
      },
      {
        //5
        width: 400,
        top: 20,
        left: 750,
        opacity: 20,
        z: 2
      }/*,
      {
        //6
        width: 300,
        top: 10,
        left: 400,
        opacity: 10,
        z: 1
      }*/
    ]
    change(); //将各个图片按照json铺开层次
    var jieliu = true;
    //两个按钮点击事件
    var as = wrap_slide_arrow.children;
    for(var k in as){
      as[k].onclick = function(){
        if(this.className == "prev"){
          /*alert("左侧按钮");*/
          //所有图片逆时针旋转,相当于图片不动,json的第一个删除并插到最后一个
          if(jieliu == true){
            change(false);
            jieliu = false;
          }

        }else if(this.className == "next"){
          /*alert("右侧按钮");*/
          //所有图片顺时针旋转,相当于图片不动,json的最后一个删除并插到第一个
          if(jieliu == true){
            change(true);
            jieliu = false;
          }
        }
      }
    }
    function change(flag){
      if(flag){
        //所有图片顺时针旋转,相当于图片不动,json的最后一个删除并插到第一个      
        json.unshift(json.pop());
      }else{
        //所有图片逆时针旋转,相当于图片不动,json的第一个删除并插到最后一个
        json.push(json.shift());
      }
      for(var k in json){
        animate(lis[k],{
          width: json[k].width,
          top: json[k].top,
          left: json[k].left,
          opacity: json[k].opacity,
          zIndex: json[k].z
        },function(){ jieliu = true;}); //当动画执行完,执行回调函数,此时置节流为true
      }
    }
    var timer = null;
    timer = setInterval(autoPlay,2000);
    function autoPlay(){
      if(jieliu == true){
        change(true);
        jieliu = false;
      }
    }

    js_wrap.onmouseover = function(){
      clearInterval(timer);
      animate(wrap_slide_arrow,{opacity:100});
    }
    js_wrap.onmouseout = function(){
      clearInterval(timer);
      timer = setInterval(autoPlay,2000);
      animate(wrap_slide_arrow,{opacity:0});
    }

    /*js_wrap.onmouseover = function(){
      animate(wrap_slide_arrow,{opacity:100});
    }
    js_wrap.onmouseout = function(){
      animate(wrap_slide_arrow,{opacity:0});
    }*/
  </script>
</body>
</html>

主要css代码:

/*初始化 reset*/
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;}

.w-wrap{
  width: 1200px;
  margin: 100px auto;
}
.wrap-slide{
  position: relative;
}
.wrap-slide li{
  position: absolute;
  left: 200px;
  top: 0;
}
.wrap-slide li img{
  width: 100%;
}
.wrap-slide-arrow{
  opacity: 0;
  position: relative;
}
.prev,.next{
  width: 76px;
  height: 112px;
  position: absolute;
  top: 50%;
  margin-top: -56px;
  background: url(../images/prev.png) no-repeat;
}
.next{
  right: 0;
  background: url(../images/next.png) no-repeat;
}

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

Javascript 相关文章推荐
JavaScript 学习笔记(七)字符串的连接
Dec 31 Javascript
小议Javascript中的this指针
Mar 18 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
Aug 14 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
Jul 03 Javascript
js delete 用法(删除对象属性及变量)
Aug 24 Javascript
浅谈javascript中自定义模版
Jan 29 Javascript
js精美的幻灯片画集特效代码分享
Aug 29 Javascript
js实现文字垂直滚动和鼠标悬停效果
Dec 31 Javascript
Node.js开发第三方微信公众平台
Jun 05 Javascript
jQuery实现上下滚动公告栏详细代码
Nov 21 jQuery
微信小程序页面间传递数组对象方法解析
Nov 06 Javascript
重置Redux的状态数据的方法实现
Nov 18 Javascript
微信小程序实现图片预加载组件
Jan 18 #Javascript
JavaScript原生节点操作小结
Jan 17 #Javascript
Javascript 两种刷新方法以及区别和适用范围
Jan 17 #Javascript
easyUI combobox实现联动效果
Jan 17 #Javascript
Angularjs实现搜索关键字高亮显示效果
Jan 17 #Javascript
React Router基础使用
Jan 17 #Javascript
JavaScript自定义分页样式
Jan 17 #Javascript
You might like
php session 预定义数组
2009/03/16 PHP
php excel类 phpExcel使用方法介绍
2010/08/21 PHP
利用php递归实现无限分类 格式化数组的详解
2013/06/08 PHP
PHP实现无限极分类图文教程
2014/11/25 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
PHP Filter过滤器全面解析
2016/08/09 PHP
详解PHP文件的自动加载(autoloading)
2018/02/04 PHP
Tab页界面,用jQuery及Ajax技术实现
2009/09/21 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
AngularJs html compiler详解及示例代码
2016/09/01 Javascript
原生JS实现图片轮播切换效果
2016/12/15 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
将input框中输入内容显示在相应的div中【三种方法可选】
2017/05/08 Javascript
微信小程序组件 marquee实例详解
2017/06/23 Javascript
vue 父组件调用子组件方法及事件
2018/03/29 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
swiper在vue项目中loop循环轮播失效的解决方法
2018/09/15 Javascript
angular 未登录状态拦截路由跳转的方法
2018/10/09 Javascript
Angular Excel 导入与导出的实现代码
2019/04/17 Javascript
JS中实现一个下载进度条及播放进度条的代码
2019/06/10 Javascript
layui插件表单验证提交触发提交的例子
2019/09/09 Javascript
使用Python对IP进行转换的一些操作技巧小结
2015/11/09 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
Python带动态参数功能的sqlite工具类
2018/05/26 Python
python 实现目录复制的三种小结
2019/12/04 Python
4款Python 类型检查工具,你选择哪个呢?
2020/10/30 Python
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
纪检干部现实表现材料
2014/08/21 职场文书
运动会开幕词
2015/01/28 职场文书
2016年感恩节寄语
2015/12/07 职场文书
高中班主任工作总结(范文)
2019/08/20 职场文书
php 原生分页
2021/04/01 PHP