javascript实现图片轮播效果


Posted in Javascript onJanuary 20, 2016

本文实例介绍了javascript实现图片轮播效果的详细代码,分享给大家供大家参考,具体内容如下

效果图:

javascript实现图片轮播效果

具体代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style type="text/css">
  *{
    margin: 0;
    padding: 0;
  }
   .wrap{
     width: 510px;
     margin: 0 auto;
     overflow: hidden;
      position: relative;
   }
   .caktye{
     width: 9999px;
     overflow: hidden;
     position: relative;
     left: 0;
   }
   .main{
     text-align: center;
      position: absolute;
      bottom: 10px;
      /*border: 1px solid red;*/
      left: 35%;

   }
   .main button{
     width: 25px;
      height: 25px;
      text-align: center;
      line-height: 25px;
      border-radius: 25px;
      display: inline-block;
      border: none;
   }
   .active{
     background-color: yellow;
   }
   .caktye a{
     float: left;
   }
   .caktye img {
      display: block;
      width:510px;
    }
   #prevBtn{
        display: block;
        position: absolute;
        left: 5px;
        bottom: 45%;
      width: 15px;
      height: 15px;
      /*overflow: hidden;*/
      border-left: 5px solid ;
      border-top: 5px solid ;
       border-color: rgba(255,255,255,0.5);
      -webkit-transform: rotate(45deg);
      transform: rotate(-45deg);
   }
   #nextBtn{
      display: block;
      position: absolute;
      right: 5px;
      bottom: 45%;
      width: 15px;
      height: 15px;
      /*overflow: hidden;*/
      border-right: 5px solid;
      border-top: 5px solid;
      -webkit-transform: rotate(45deg);
      transform: rotate(45deg);
      border-color: rgba(255,255,255,0.5);
      /*background-color: rgba(255,255,255,0.8);*/
   }

  </style>
</head>
<body>
 
  <div class="wrap">
   <div class="caktye" id="inner">
    <a href="###"><img src="img/1.jpg"></a>
    <a href="###"><img src="img/2.jpg"></a>
    <a href="###"><img src="img/3.jpg"></a>
    <a href="###"><img src="img/4.jpg"></a>
    <a href="###"><img src="img/5.jpg"></a>
      <a href="###"><img src="img/1.jpg"></a>
   </div>
    <div class="main">
      <button class="active">1</button>
      <button>2</button>
      <button>3</button>
      <button>4</button>
      <button>5</button>
   </div>
   <div>
      <a href="###" id="prevBtn"></a>
      <a href="###" id="nextBtn"></a>

   </div>
  </div>   
  <script type="text/javascript">
   var innerList = document.getElementById("inner");
   var btnList = document.getElementsByTagName("button");
   var perWidth = inner.children[0].offsetWidth;
   var prevBtn = document.getElementById("prevBtn");
   var nextBtn = document.getElementById("nextBtn");
   // var imgList = inner.getElementsByTagName("img");
   
   // var perWidth = imgList[0].offsetWidth;
   var timer = 0;
   var timer1 = 0;
   var index =0;
   var runFlag = true; //设置一个动画是否走完的标志位

   for(var i = 0; i < btnList.length; i++) {
      btnList[i].index = i;
      btnList[i].onclick = function() {
         index = this.index;
         
         tab();
      }
   }
   function tab() {
      var start = inner.offsetLeft;
      var end = - perWidth * index;
      var change = end - start;
      var t = 0;
      var maxT = 30;

      clearInterval(timer1);
      timer1 = setInterval(function() {
         t++;
         if(t >= maxT) {
            clearInterval(timer1);
            // alert("停下来了");
            runFlag = true;
         }
         inner.style.left = change/maxT * t + start + "px";
         if(index == btnList.length && t >= maxT) {
            inner.style.left = 0;
         }
      },30)

      // inner.style.left = - perWidth * index + "px";
      for(var j = 0; j < btnList.length; j++) {
         btnList[j].className = "";
      }
      if(index >= btnList.length) {
         btnList[0].className = "active";
      }else {
         btnList[index].className = "active";
      }
      
   }
    function xunhuan(){
       index++;
   
         if(index>btnList.length){
         index=1;
         }
         // inner.style.left = - perWidth * index + "px";
       tab();
   }

   var timer =setInterval(xunhuan,5000);

   inner.onmouseover =function(){
   clearInterval(timer);
   }
   inner.onmouseout =function(){
    timer = setInterval(xunhuan,5000);
   }

   function next() {
      index++;
      if(index > btnList.length) {
         index = 1;
      }
      tab();
   }
   function prev() {
      index--;
      if(index < 0 ) {
         index = btnList.length - 1;
         inner.style.left = - btnList.length * perWidth + "px";
         console.log(index);
      }
      tab();
   }
   //下一张
   nextBtn.onclick = function() {
      clearInterval(timer);
      if(runFlag) {
         next();
      }
      runFlag = false;
      
   }
   //上一张
   prevBtn.onclick = function() {
      clearInterval(timer);
      if(runFlag) {
         prev();
      }
      runFlag = false;
      
   }
  </script>
</body>
</html>

希望本文所述对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
JavaScript字符串String和Array操作的有趣方法
Dec 18 Javascript
js实现拉伸拖动iframe的具体代码
Aug 03 Javascript
JavaScript作用域链使用介绍
Aug 29 Javascript
Extjs grid添加一个图片状态或者按钮的方法
Apr 03 Javascript
jQuery移动web开发之页面跳转和加载外部页面的实现
Dec 04 Javascript
jQuery多文件异步上传带进度条实例代码
Aug 16 Javascript
jQuery.uploadify文件上传组件实例讲解
Sep 23 Javascript
深入理解jquery的$.extend()、$.fn和$.fn.extend()
Jul 08 jQuery
angularjs 的数据绑定实现原理
Jul 02 Javascript
微信小程序支付PHP代码
Aug 23 Javascript
js笔试题-接收get请求参数
Jun 15 Javascript
vue中注册自定义的全局js方法
Nov 15 Javascript
JS获取鼠标坐标位置实例分析
Jan 20 #Javascript
属于你的jQuery提示框(Tip)插件
Jan 20 #Javascript
学习JavaScript设计模式之模板方法模式
Jan 20 #Javascript
高性能JavaScript循环语句和条件语句
Jan 20 #Javascript
详解Javascript模板引擎mustache.js
Jan 20 #Javascript
JavaScript优化专题之Loading and Execution加载和运行
Jan 20 #Javascript
JQuery日历插件My97DatePicker日期范围限制
Jan 20 #Javascript
You might like
PHP正则的Unknown Modifier错误解决方法
2010/03/02 PHP
获取URL文件名后缀
2013/10/24 PHP
PHP安装memcached扩展笔记
2015/05/28 PHP
变量在 PHP7 内部的实现(二)
2015/12/21 PHP
PHP中常见的密码处理方式和建议总结
2018/10/14 PHP
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
jQuery插件原来如此简单 jQuery插件的机制及实战
2012/02/07 Javascript
仅IE支持clearAttributes/mergeAttributes方法使用介绍
2012/05/04 Javascript
IE6已终止操作问题的2种情况及解决
2014/04/23 Javascript
单元选择合并变色示例代码
2014/05/26 Javascript
浅谈JavaScript函数节流
2014/12/09 Javascript
node.js 使用ejs模板引擎时后缀换成.html
2015/04/22 Javascript
整理AngularJS中的一些常用指令
2015/06/16 Javascript
使用AngularJS对路由进行安全性处理的方法
2015/06/18 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
JavaScript淡入淡出渐变简单实例
2015/08/06 Javascript
Javascript实现检测客户端类型代码封包
2015/12/03 Javascript
BootStrap的Datepicker控件使用心得分享
2016/05/25 Javascript
Query常用DIV操作获取和设置长度宽度的实现方法
2016/09/19 Javascript
整理一下常见的IE错误
2016/11/18 Javascript
jQuery的Ajax接收java返回数据方法
2018/08/11 jQuery
nodejs log4js 使用详解
2019/05/31 NodeJs
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
python daemon守护进程实现
2016/08/27 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
Django Web开发中django-debug-toolbar的配置以及使用
2018/05/06 Python
Python通过paramiko远程下载Linux服务器上的文件实例
2018/12/27 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
在python下实现word2vec词向量训练与加载实例
2020/06/09 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
Java如何基于wsimport调用wcf接口
2020/06/17 Python
python调用百度AI接口实现人流量统计
2021/02/03 Python
工程开工庆典邀请函
2014/02/01 职场文书
公司合作协议书范本
2014/04/18 职场文书
springboot 启动如何排除某些bean的注入
2021/08/02 Java/Android
Python实现数据的序列化操作详解
2022/07/07 Python