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 相关文章推荐
htm调用JS代码
Mar 15 Javascript
JS字符串截取函数实例
Dec 27 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
Apr 04 Javascript
js实现跨域的4种实用方法原理分析
Oct 29 Javascript
jQuery版本升级踩坑大全
Jan 12 Javascript
JS日程管理插件FullCalendar简单实例
Feb 07 Javascript
jquery.uploadifive插件怎么解决上传限制图片或文件大小问题
May 08 jQuery
jquery实现下拉菜单的手风琴效果
Jul 23 jQuery
基于react组件之间的参数传递(详解)
Sep 05 Javascript
localstorage实现带过期时间的缓存功能
Jun 28 Javascript
JQuery事件冒泡和默认行为代码实例
May 13 jQuery
vue-cli3项目配置eslint代码规范的完整步骤
Sep 10 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 匿名函数与注意事项详细介绍
2016/11/26 PHP
PHP实现的ID混淆算法类与用法示例
2018/08/10 PHP
ThinkPHP框架实现FTP图片上传功能示例
2019/04/08 PHP
JavaScript的面向对象(二)
2006/11/09 Javascript
asp 取文本框名称代码
2008/12/02 Javascript
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
eval与window.eval的差别分析
2011/03/17 Javascript
JavaScript 学习笔记之语句
2015/01/14 Javascript
jQuery实现将页面上HTML标签换成另外标签的方法
2015/06/09 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
JSON+Jquery省市区三级联动
2016/01/13 Javascript
node.js cookie-parser之parser.js
2016/06/06 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
2016/06/09 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
Javascript学习之谈谈JS的全局变量跟局部变量(推荐)
2016/08/28 Javascript
angular+ionic返回上一页并刷新页面
2017/08/08 Javascript
Vue组件和Route的生命周期实例详解
2018/02/10 Javascript
vue.js轮播图组件使用方法详解
2018/07/03 Javascript
JSON基本语法及与JavaScript的异同实例分析
2019/01/04 Javascript
js实现计算器功能
2020/08/10 Javascript
Python网页解析利器BeautifulSoup安装使用介绍
2015/03/17 Python
python下载文件时显示下载进度的方法
2015/04/02 Python
Python基于checksum计算文件是否相同的方法
2015/07/09 Python
Python 常用 PEP8 编码规范详解
2017/01/22 Python
Python模块的定义,模块的导入,__name__用法实例分析
2020/01/07 Python
Tensorflow累加的实现案例
2020/02/05 Python
Python 私有属性和私有方法应用场景分析
2020/06/19 Python
python 用struct模块解决黏包问题
2020/11/07 Python
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
美国单身专业人士在线约会网站:EliteSingles
2019/03/19 全球购物
活动邀请函范文
2014/01/19 职场文书
函授药学自我鉴定
2014/02/07 职场文书
2015年党员发展工作总结
2015/05/13 职场文书
公司回复函格式
2015/07/14 职场文书
简单谈谈Python面向对象的相关知识
2021/06/28 Python
yolov5返回坐标的方法实例
2022/03/17 Python