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 相关文章推荐
JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
Nov 03 Javascript
js预载入和JavaScript Image()对象使用介绍
Aug 28 Javascript
js实现简单的购物车有图有代码
May 26 Javascript
基于豆瓣API+Angular开发的web App
Jan 02 Javascript
jquery ztree异步搜索(搜叶子)实践
Feb 25 Javascript
js querySelector() 使用方法
Dec 21 Javascript
JavaScript实现的商品抢购倒计时功能示例
Apr 17 Javascript
javascript 开发之百度地图使用到的js函数整理
May 19 Javascript
JavaScript操作文件_动力节点Java学院整理
Jun 30 Javascript
Vue学习之组件用法实例详解
Jan 06 Javascript
基于canvasJS在PHP中制作动态图表
May 30 Javascript
vue3为什么要用proxy替代defineProperty
Oct 19 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函数memory_get_usage获取PHP内存清耗量的方法
2011/12/06 PHP
解析PHP跨站刷票的实现代码
2013/06/18 PHP
深入解析php中的foreach问题
2013/06/30 PHP
IIS安装Apache伪静态插件的具体操作图文
2013/07/01 PHP
Linux下安装PHP MSSQL扩展教程
2014/10/24 PHP
php实现将二维关联数组转换成字符串的方法详解
2017/07/31 PHP
PHP连接及操作PostgreSQL数据库的方法详解
2019/01/30 PHP
Windows服务器中PHP如何安装redis扩展
2019/09/27 PHP
JavaScript中的稀疏数组与密集数组[译]
2012/09/17 Javascript
js使下拉列表框可编辑不止是选择
2013/12/12 Javascript
BootStrap下jQuery自动完成的样式调整
2016/05/30 Javascript
picLazyLoad 实现图片延时加载(包含背景图片)
2016/07/21 Javascript
JQuery 动态生成Table表格实例代码
2016/12/02 Javascript
Bootstrap CSS布局之按钮
2016/12/17 Javascript
Nodejs基于LRU算法实现的缓存处理操作示例
2017/03/17 NodeJs
Three.js基础学习教程
2017/11/16 Javascript
JavaScript中click和onclick本质区别与用法分析
2018/06/07 Javascript
vue router 跳转后回到顶部的实例
2018/08/31 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
深入理解Puppeteer的入门教程和实践
2019/03/05 Javascript
jsonp跨域获取百度联想词的方法分析
2019/05/13 Javascript
用Python计算三角函数之atan()方法的使用
2015/05/15 Python
Python使用filetype精确判断文件类型
2017/07/02 Python
Python3多线程爬虫实例讲解代码
2018/01/05 Python
python dict 相同key 合并value的实例
2019/01/21 Python
梅尔倒谱系数(MFCC)实现
2019/06/19 Python
html Table 表头固定的实现
2019/01/22 HTML / CSS
APM Monaco中国官网:来自摩纳哥珠宝品牌
2017/12/27 全球购物
对于没有初始化的变量的初始值可以作怎样的假定
2014/10/12 面试题
大专生自我鉴定范文
2013/10/01 职场文书
人力资源部培训专员岗位职责
2014/01/02 职场文书
企业后勤岗位职责
2014/02/28 职场文书
青年志愿者先进事迹
2014/05/06 职场文书
新郎结婚保证书
2015/02/26 职场文书
使用Djongo模块在Django中使用MongoDB数据库
2021/06/20 Python
CSS实现鼠标悬浮动画特效
2023/05/07 HTML / CSS