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 相关文章推荐
JS+CSS实现一个气泡提示框
Aug 18 Javascript
使用node.js半年来总结的 10 条经验
Aug 18 Javascript
jQuery DOM删除节点操作指南
Mar 03 Javascript
JS+CSS实现仿msn风格选项卡效果代码
Oct 22 Javascript
JS中作用域和变量提升(hoisting)的深入理解
Oct 31 Javascript
浅析如何利用angular结合translate为项目实现国际化
Dec 08 Javascript
轻松理解JavaScript闭包
Mar 14 Javascript
JavaScript Drum Kit 指南(纯 JS 模拟敲鼓效果)
Jul 23 Javascript
解决vue打包css文件中背景图片的路径问题
Sep 03 Javascript
微信小程序实现上传word、txt、Excel、PPT等文件功能
May 23 Javascript
layui多图上传实现删除功能的例子
Sep 23 Javascript
Vue实现手机扫描二维码预览页面效果
May 28 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/01 无线电
PHP实现的比较完善的购物车类
2014/12/02 PHP
PHP中的类型提示(type hinting)功能介绍
2015/07/01 PHP
Laravel 的数据库迁移的方法
2017/07/31 PHP
Opacity.js
2007/01/22 Javascript
Prototype源码浅析 Number部分
2012/01/16 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
用JavaScript实现使用鼠标画线的示例代码
2014/08/19 Javascript
JavaScript表格常用操作方法汇总
2015/04/15 Javascript
JS解析XML文件和XML字符串详解
2015/04/17 Javascript
JavaScript中的Math.LN2属性用法详解
2015/06/12 Javascript
javascript实现获取指定精度的上传文件的大小简单实例
2016/10/25 Javascript
JS使用正则截取两个字符串之间的字符串实现方法详解
2017/01/06 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
es7学习教程之Decorators(修饰器)详解
2017/07/21 Javascript
从setTimeout看js函数执行过程
2017/12/19 Javascript
实例解析Vue.js下载方式及基本概念
2018/05/11 Javascript
详解关于element级联选择器数据回显问题
2019/02/20 Javascript
JS实现数组删除指定元素功能示例
2019/06/05 Javascript
JavaScript数组排序功能简单实现
2020/05/14 Javascript
[55:44]完美世界DOTA2联赛决赛 FTD vs Phoenix 第二场 11.08
2020/11/11 DOTA
全面理解Python中self的用法
2016/06/04 Python
使用python将图片格式转换为ico格式的示例
2018/10/22 Python
详解重置Django migration的常见方式
2019/02/15 Python
使用Python做定时任务及时了解互联网动态
2019/05/15 Python
Python增强赋值和共享引用注意事项小结
2019/05/28 Python
python处理“
2019/06/10 Python
Python搭建代理IP池实现存储IP的方法
2019/10/27 Python
Pytorch十九种损失函数的使用详解
2020/04/29 Python
Python爬取豆瓣数据实现过程解析
2020/10/27 Python
澳大利亚婴儿喂养品牌:Cherub Baby
2018/11/01 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
Unix控制后台进程都有哪些进程
2016/09/22 面试题
财务检查整改报告
2014/11/06 职场文书
员工担保书范本
2015/09/22 职场文书
简短清晨问候语
2015/11/10 职场文书