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 相关文章推荐
鼠标经过的文本框textbox变色
May 21 Javascript
asp.net刷新本页面的六种方法总结
Jan 07 Javascript
Javascript 拖拽的一些高级的应用(逐行分析代码,让你轻松了拖拽的原理)
Jan 23 Javascript
javascript省市区三级联动下拉框菜单实例演示
Nov 29 Javascript
html5+javascript实现简单上传的注意细节
Apr 18 Javascript
浅析JS获取url中的参数实例代码
Jun 14 Javascript
AngularJS中$http服务常用的应用及参数
Aug 22 Javascript
Node.js中如何合并两个复杂对象详解
Dec 31 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
Jan 17 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
Sep 20 Javascript
VUE.js实现动态设置输入框disabled属性
Oct 28 Javascript
Node.js API详解之 net模块实例分析
May 18 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
虹吸式咖啡壶操作
2021/03/03 冲泡冲煮
功能强大的php文件上传类
2016/08/29 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
鼠标拖动实现DIV排序示例代码
2013/10/14 Javascript
jquery显示loading图片直到网页加载完成的方法
2015/06/25 Javascript
js实现简单的验证码
2015/12/25 Javascript
Jquery技巧(必须掌握)
2016/03/16 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
详解nodejs 文本操作模块-fs模块(二)
2016/12/22 NodeJs
微信小程序 获取javascript 里的数据
2017/08/17 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
2017/09/20 Javascript
vue动态改变背景图片demo分享
2018/09/13 Javascript
详解js模板引擎art template数组渲染的方法
2018/10/09 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
Bootstrap实现模态框效果
2019/09/30 Javascript
JS JQuery获取data-*属性值方法解析
2020/09/01 jQuery
vue3.0 上手体验
2020/09/21 Javascript
Python数据结构之Array用法实例
2014/10/09 Python
python通过socket实现多个连接并实现ssh功能详解
2017/11/08 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
简单了解python 生成器 列表推导式 生成器表达式
2019/08/22 Python
TensorFlow加载模型时出错的解决方式
2020/02/06 Python
python 解决print数组/矩阵无法完整输出的问题
2020/02/19 Python
在服务器上安装python3.8.2环境的教程详解
2020/04/26 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
HEMA法国:荷兰原创设计
2019/02/21 全球购物
田径运动会开幕式及主持词
2014/03/28 职场文书
员工入职担保书范文
2014/04/01 职场文书
2014年助理政工师工作总结
2014/12/19 职场文书
2015年度个人思想工作总结
2015/04/08 职场文书
2015年机关党委工作总结
2015/05/23 职场文书
海上钢琴师观后感
2015/06/03 职场文书
百善孝为先:关于孝道的经典语录
2019/10/18 职场文书