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 操作Javascript对象和数组的工具函数小结
Jan 22 Javascript
Google Maps API地图应用示例分享
Oct 23 Javascript
jquery制作 随机弹跳的小球特效
Feb 01 Javascript
浅谈JavaScript中的作用域和闭包问题
Jul 07 Javascript
基于BootstrapValidator的Form表单验证(24)
Dec 12 Javascript
JS原型与原型链的深入理解
Feb 15 Javascript
JavaScript 中调用 Kotlin 方法实例详解
Jun 09 Javascript
使用JavaScript根据图片获取条形码的方法
Jul 04 Javascript
jquery实现楼层滚动效果
Jan 01 jQuery
解决vue v-for 遍历循环时key值报错的问题
Sep 06 Javascript
JointJS JavaScript流程图绘制框架解析
Aug 15 Javascript
vue.js实现二级菜单效果
Oct 19 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
E路文章系统PHP
2006/12/11 PHP
PHP 批量删除数据的方法分析
2009/10/30 PHP
PHP中的strtr函数使用介绍(str_replace)
2011/10/20 PHP
php中将数组存到文件里的实现代码
2012/01/19 PHP
基于PHP常用字符串的总结(待续)
2013/06/07 PHP
PHP中array_keys和array_unique函数源码的分析
2016/02/26 PHP
php array 转json及java 转换 json数据格式操作示例
2019/11/13 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
(转载)JavaScript中匿名函数,函数直接量和闭包
2007/05/08 Javascript
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
js中json处理总结之JSON.parse
2016/10/14 Javascript
jQuery Dialog 打开时自动聚焦的解决方法(两种方法)
2016/11/24 Javascript
javascript基础练习之翻转字符串与回文
2017/02/20 Javascript
vue+swiper实现组件化开发的实例代码
2017/10/26 Javascript
angular 数据绑定之[]和{{}}的区别
2018/09/25 Javascript
微信小程序的线程架构【推荐】
2019/05/14 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
Python实现树莓派WiFi断线自动重连的实例代码
2017/03/16 Python
Python 专题三 字符串的基础知识
2017/03/19 Python
利用Tkinter(python3.6)实现一个简单计算器
2017/12/21 Python
Python解决走迷宫问题算法示例
2018/07/27 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
Series和DataFrame使用简单入门
2019/11/13 Python
IronPython连接MySQL的方法步骤
2019/12/27 Python
python打开音乐文件的实例方法
2020/07/21 Python
Python 必须了解的5种高级特征
2020/09/10 Python
Numpy(Pandas)删除全为零的列的方法
2020/09/11 Python
Canvas 文字碰撞检测并抽稀的方法
2019/05/27 HTML / CSS
英国著名国际平价时尚男装品牌:Topman
2016/08/27 全球购物
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
小女主人连衣裙:Little Mistress
2017/07/10 全球购物
2016年“9.22”世界无车日活动小结
2016/04/05 职场文书
Nginx防盗链与服务优化配置的全过程
2022/01/18 Servers
如何利用python实现Simhash算法
2022/06/28 Python