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 相关文章推荐
基于jquery的DIV随滚动条滚动而滚动的代码
Jul 20 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
May 27 Javascript
js实现目录链接,内容跟着目录滚动显示的简单实例
Oct 15 Javascript
Vue中img的src属性绑定与static文件夹实例
May 18 Javascript
jQuery中each循环的跳出和结束实例
Aug 16 jQuery
vue使用中的内存泄漏【推荐】
Jul 10 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
Sep 15 Javascript
微信小程序提取公用函数到util.js及使用方法示例
Jan 10 Javascript
js脚本中执行java后台代码方法解析
Oct 11 Javascript
JavaScript实现联动菜单特效
Jan 07 Javascript
js中位数不足自动补位扩展padLeft、padRight实现代码
Apr 06 Javascript
带你彻底理解JavaScript中的原型对象
Apr 14 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若干单维数组遍历方法的比较
2011/09/20 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
PHP实现通过正则表达式替换回调的内容标签
2015/06/15 PHP
PHP aes (ecb)解密后乱码问题
2015/06/22 PHP
PHP版QQ互联OAuth示例代码分享
2015/07/05 PHP
深入浅析安装PhpStorm并激活的步骤详解
2020/09/17 PHP
JavaScript的变量作用域深入理解
2009/10/25 Javascript
js 页面刷新location.reload和location.replace的区别小结
2009/12/24 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
js模拟淘宝网的多级选择菜单实现方法
2015/08/18 Javascript
JS实现仿新浪微博发布内容为空时提示功能代码
2015/08/19 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
JavaScript累加、迭代、穷举、递归等常用算法实例小结
2018/05/08 Javascript
[26:50]2018完美盛典DOTA2表演赛
2018/12/17 DOTA
九步学会Python装饰器
2015/05/09 Python
Python 最大概率法进行汉语切分的方法
2018/12/14 Python
对Python定时任务的启动和停止方法详解
2019/02/19 Python
Python魔法方法功能与用法简介
2019/04/04 Python
python判断所输入的任意一个正整数是否为素数的两种方法
2019/06/27 Python
解决python 文本过滤和清理问题
2019/08/28 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
Python super()函数使用及多重继承
2020/05/06 Python
Keras中 ImageDataGenerator函数的参数用法
2020/07/03 Python
python批量修改交换机密码的示例
2020/09/22 Python
Selenium环境变量配置(火狐浏览器)及验证实现
2020/12/07 Python
html5视频媒体标签video的使用方法及完整参数说明详解
2019/09/27 HTML / CSS
Html5定位终极解决方案
2020/02/05 HTML / CSS
当当网官方旗舰店:中国图书销售夺金品牌
2018/04/02 全球购物
必须要使用游标的SQL语句有那些
2012/05/07 面试题
环境日宣传活动总结
2014/07/09 职场文书
个人授权委托书模板
2014/09/14 职场文书
银行求职自荐信范文
2015/03/04 职场文书
2015教师年度思想工作总结
2015/04/30 职场文书
师德师风培训感言
2015/08/03 职场文书
考研经验交流会策划书
2015/11/02 职场文书