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 相关文章推荐
window.location和document.location的区别分析
Dec 23 Javascript
JavaScript初学者应注意的七个细节小结
Jan 30 Javascript
js动态为代码着色显示行号
May 29 Javascript
JS之Date对象和获取系统当前时间详解
Jan 13 Javascript
js函数定时器实现定时读取系统实时连接数
Apr 30 Javascript
jquery中使用循环下拉菜单示例代码
Sep 24 Javascript
jQuery对指定元素中指定字符串进行替换的方法
Mar 17 Javascript
js与applet相互调用的方法
Jun 22 Javascript
js鼠标经过tab选项卡时实现切换延迟
Mar 24 Javascript
微信禁止下拉查看URL的处理方法
Sep 28 Javascript
在vue中获取微信支付code及code被占用问题的解决方法
Apr 16 Javascript
详解Vue.js和layui日期控件冲突问题解决办法
Jul 25 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中对2个数组相加的函数
2011/06/24 PHP
浅析php工厂模式
2014/11/25 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
PHP中explode函数和split函数的区别小结
2016/08/24 PHP
用一段js程序来实现动画功能
2007/03/06 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
基于JQuery实现滚动到页面底端时自动加载更多信息
2014/01/31 Javascript
图片放大镜jquery.jqzoom.js使用实例附放大镜图标
2014/06/19 Javascript
jQuery循环动画与获取组件尺寸的方法
2015/02/02 Javascript
js如何判断输入字符串长度
2015/12/16 Javascript
基于BootStrap环境写jQuery tabs插件
2016/07/12 Javascript
微信小程序  自定义创建详细介绍
2016/10/27 Javascript
Vue自定义指令详解
2017/07/28 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
three.js中文文档学习之创建场景
2017/11/20 Javascript
Mac下安装vue
2018/04/11 Javascript
详解小程序缓存插件(mrc)
2018/08/17 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
Python的Django框架下管理站点的基本方法
2015/07/17 Python
Django的URLconf中使用缺省视图参数的方法
2015/07/18 Python
详解Python中heapq模块的用法
2016/06/28 Python
20招让你的Python飞起来!
2016/09/27 Python
Python实现计算两个时间之间相差天数的方法
2017/05/10 Python
django 创建过滤器的实例详解
2017/08/14 Python
Python中新式类与经典类的区别详析
2019/07/10 Python
Python图像处理库PIL的ImageFilter模块使用介绍
2020/02/26 Python
Django rest framework分页接口实现原理解析
2020/08/21 Python
购买英国原创艺术:Art Gallery
2018/08/25 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
入学生会自荐书范文
2014/02/05 职场文书
鲜花方阵解说词
2014/02/13 职场文书
电气工程自动化求职信
2014/03/14 职场文书
电工实训报告总结
2014/11/05 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
2016年领导干部正风肃纪心得体会
2015/10/09 职场文书
基于PyQT5制作一个桌面摸鱼工具
2022/02/15 Python