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 相关文章推荐
jquery图片放大功能简单实现
Aug 01 Javascript
简单的两种Extjs formpanel加载数据的方式
Nov 09 Javascript
浅谈jQuery中的checkbox问题
Aug 10 Javascript
如何使用jquery实现文字上下滚动效果
Oct 12 Javascript
百度搜索框智能提示案例jsonp
Nov 28 Javascript
微信小程序图表插件(wx-charts)实例代码
Jan 17 Javascript
vuejs手把手教你写一个完整的购物车实例代码
Jul 06 Javascript
使用VScode 插件debugger for chrome 调试react源码的方法
Sep 13 Javascript
JavaScript实现打砖块游戏
Feb 25 Javascript
JavaScript中while循环的基础使用教程
Aug 11 Javascript
vue项目查看vue版本及cli版本的实现方式
Oct 24 Javascript
JavaScript实现打字游戏
Feb 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
dede3.1分页文字采集过滤规则详说(图文教程)
2007/04/03 PHP
php实现图片等比例缩放代码
2015/07/23 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
PHP性能分析工具xhprof的安装使用与注意事项
2017/12/19 PHP
通过ifame指向的页面高度调整iframe的高度
2006/10/05 Javascript
JavaScript经典效果集锦
2010/07/06 Javascript
node.js中的fs.realpath方法使用说明
2014/12/16 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
ES6中如何使用Set和WeakSet
2016/03/10 Javascript
Bootstrap编写导航栏和登陆框
2016/05/30 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
DOM 事件的深入浅出(一)
2016/12/05 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
npm 更改默认全局路径以及国内镜像的方法
2018/05/16 Javascript
原生JS实现多条件筛选
2020/08/19 Javascript
vue3+typescript实现图片懒加载插件
2020/10/26 Javascript
Vue 的 v-model用法实例
2020/11/23 Vue.js
[00:10]DOTA2全国高校联赛速递
2018/05/30 DOTA
实现python版本的按任意键继续/退出
2016/09/26 Python
python 网络编程详解及简单实例
2017/04/25 Python
对Python中的条件判断、循环以及循环的终止方法详解
2019/02/08 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
python实现的登录与提交表单数据功能示例
2019/09/25 Python
Python2与Python3的区别点整理
2019/12/12 Python
Python sorted排序方法如何实现
2020/03/31 Python
python中time包实例详解
2021/02/02 Python
美国正宗奢华复古手袋、珠宝及配饰网站:What Goes Around Comes Around
2018/07/21 全球购物
网络工程师个人的自我评价范文
2013/10/01 职场文书
《放飞蜻蜓》教学反思
2014/04/27 职场文书
诚信的演讲稿范文
2014/05/12 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
学生违反校规检讨书
2014/10/28 职场文书
2015年教师节贺卡寄语
2015/03/24 职场文书
2015暑假实习报告范文
2015/07/13 职场文书
Python内置的数据类型及使用方法
2022/04/13 Python