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.blockUI.js上传滚动等待效果实现思路及代码
Mar 18 Javascript
批量修改标签css样式以input标签为例
Jul 31 Javascript
Javascript基础教程之定义和调用函数
Jan 18 Javascript
Node.js实用代码段之正确拼接Buffer
Mar 17 Javascript
IOS中safari下的select下拉菜单文字过长不换行的解决方法
Sep 26 Javascript
详解JavaScript中的属性和特性
Dec 08 Javascript
详解MVC如何使用开源分页插件(shenniu.pager.js)
Dec 16 Javascript
vue基于mint-ui的城市选择3级联动的示例
Oct 25 Javascript
node 命令方式启动修改端口的方法
May 12 Javascript
微信小程序开发常见问题及解决方案
Jul 11 Javascript
JavaScript:ES2019 的新特性(译)
Aug 08 Javascript
Vue中keep-alive 实现后退不刷新并保持滚动位置
Mar 17 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
CodeIgniter安全相关设置汇总
2014/07/03 PHP
PHP使用memcache缓存技术提高响应速度的方法
2014/12/26 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
简单谈谈PHP中strlen 函数
2016/02/27 PHP
PHP实现JS中escape与unescape的方法
2016/07/11 PHP
thinkphp5.1 文件引入路径问题及注意事项
2018/06/13 PHP
地震发生中逃生十大法则
2008/05/12 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
js通过地址栏给action传值(中文乱码全是问号)
2013/05/02 Javascript
手机端网页点击链接触发自动拨打或保存电话的示例代码
2014/08/15 Javascript
js实现选中复选框文字变色的方法
2015/08/14 Javascript
jquery插件uploadify多图上传功能实现代码
2016/08/12 Javascript
javascript ES6中箭头函数注意细节小结
2017/02/17 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
利用纯JS实现像素逐渐显示的方法示例
2017/08/14 Javascript
关于Vue背景图打包之后访问路径错误问题的解决
2017/11/03 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
详解vue挂载到dom上会发生什么
2019/01/20 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
怎么理解wx.navigateTo的events参数使用详情
2020/05/18 Javascript
js简单粗暴的发布订阅示例代码
2021/01/23 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python处理文本文件实现生成指定格式文件的方法
2014/07/31 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
详解python算法之冒泡排序
2019/03/05 Python
python清空命令行方式
2020/01/13 Python
Python的历史与优缺点整理
2020/05/26 Python
python可以用哪些数据库
2020/06/22 Python
Python中全局变量和局部变量的理解与区别
2021/02/07 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
Parfume Klik丹麦:香水网上商店
2018/07/10 全球购物
用C#语言写出与SQLSERVER访问时的具体过程
2013/04/16 面试题
2014年自我评价
2014/01/04 职场文书
房屋买卖委托书格式范本格式
2014/10/13 职场文书
导游词之五台山
2019/10/11 职场文书
Python实现制作销售数据可视化看板详解
2021/11/27 Python