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 键盘事件的几个基本方法
Oct 30 Javascript
js调用iframe实现打印页面内容的方法
Mar 04 Javascript
JS调用页面表格导出excel示例代码
Mar 18 Javascript
用JavaScript来美化HTML的select标签的下拉列表效果
Nov 17 Javascript
javascript实现全角转半角的方法
Jan 23 Javascript
jQuery插件Validation快速完成表单验证的方式
Jul 28 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
Jun 19 Javascript
Vue 表情包输入组件的实现代码
Jan 21 Javascript
利用Node.js如何实现文件循环覆写
Apr 05 Javascript
中高级前端必须了解的JS中的内存管理(推荐)
Jul 04 Javascript
JavaScript中的惰性载入函数及优势
Feb 18 Javascript
解决Vue-Router升级导致的Uncaught (in promise)问题
Aug 07 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
Zerg建筑一览
2020/03/14 星际争霸
php4的session功能评述(二)
2006/10/09 PHP
php获取$_POST同名参数数组的实现介绍
2013/06/30 PHP
PHP实现检测客户端是否使用代理服务器及其匿名级别
2015/01/07 PHP
PHP实现加强版加密解密类实例
2015/07/29 PHP
PHP模拟asp中response类实现方法
2015/08/08 PHP
微信开发之网页授权获取用户信息(二)
2016/01/08 PHP
PHP批量获取网页中所有固定种子链接的方法
2016/11/18 PHP
基于jquery插件实现常见的幻灯片效果
2013/11/01 Javascript
Jquery插件easyUi表单验证提交(示例代码)
2013/12/30 Javascript
表单验证正则表达式实例代码详解
2015/11/09 Javascript
jQuery动态添加可拖动元素完整实例(附demo源码下载)
2016/06/21 Javascript
简单的渐变轮播插件
2017/01/12 Javascript
基于jQuery代码实现圆形菜单展开收缩效果
2017/02/13 Javascript
微信小程序中用WebStorm使用LESS
2017/03/08 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
基于es6三点运算符的使用方法(实例讲解)
2017/10/12 Javascript
在Vue组件上动态添加和删除属性方法
2018/02/23 Javascript
解决angular2 获取到的数据无法实时更新的问题
2018/08/31 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
ES6字符串的扩展实例
2020/12/21 Javascript
[02:44]DOTA2英雄基础教程 钢背兽
2013/12/19 DOTA
Python中使用MELIAE分析程序内存占用实例
2015/02/18 Python
在Ubuntu系统下安装使用Python的GUI工具wxPython
2016/02/18 Python
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
python 不同方式读取文件速度不同的实例
2018/11/09 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
Django中ORM外键和表的关系详解
2019/05/20 Python
python之pymysql模块简单应用示例代码
2019/12/16 Python
python中return的返回和执行实例
2019/12/24 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
电子商务专业在校生实习自我鉴定
2013/09/29 职场文书
《卖火柴的小女孩》教学反思
2016/02/19 职场文书
导游词之长城八达岭
2019/09/24 职场文书
AJAX实现省市县三级联动效果
2021/10/16 Javascript