原生js实现图片轮播特效


Posted in Javascript onDecember 18, 2015

本文特意为原生js实现图片轮播特效代码做了下总结,分享给大家供大家参考,欢迎大家学习。

运行效果图:

原生js实现图片轮播特效

具体代码:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>最简单的轮播广告</title>
  <style>
    body, div, ul, li {
      margin: 0;
      padding: 0;
    }

    ul {
      list-style-type: none;
    }

    body {
      background: #000;
      text-align: center;
      font: 12px/20px Arial;
    }

    #box {
      position: relative;
      width: 492px;
      height: 172px;
      background: #fff;
      border-radius: 5px;
      border: 8px solid #fff;
      margin: 10px auto;
    }

    #box .list {
      position: relative;
      width: 490px;
      height: 170px;
      overflow: hidden;
      border: 1px solid #ccc;
    }

    #box .list li {
      position: absolute;
      top: 0;
      left: 0;
      width: 490px;
      height: 170px;
      opacity: 0;
      transition: opacity 0.5s linear
    }

    #box .list li.current {
      opacity: 1;
    }

    #box .count {
      position: absolute;
      right: 0;
      bottom: 5px;
    }

    #box .count li {
      color: #fff;
      float: left;
      width: 20px;
      height: 20px;
      cursor: pointer;
      margin-right: 5px;
      overflow: hidden;
      background: #F90;
      opacity: 0.7;
      border-radius: 20px;
    }

    #box .count li.current {
      color: #fff;
      opacity: 0.7;
      font-weight: 700;
      background: #f60
    }
  </style>
</head>
<body>
<div id="box">
  <ul class="list">
    <li class="current" style="opacity: 1;"><img src="img/images04/01.jpg" width="490" height="170"></li>
    <li style="opacity: 0;"><img src="img/images04/02.jpg" width="490" height="170"></li>
    <li style="opacity: 0;"><img src="img/images04/03.jpg" width="490" height="170"></li>
    <li style="opacity: 0;"><img src="img/images04/04.jpg" width="490" height="170"></li>
    <li style="opacity: 0;"><img src="img/images04/05.jpg" width="490" height="170"></li>
  </ul>
  <ul class="count">
    <li class="current">1</li>
    <li class="">2</li>
    <li class="">3</li>
    <li class="">4</li>
    <li class="">5</li>
  </ul>
</div>


<script>
  var box=document.getElementById('box');
  var uls=document.getElementsByTagName('ul');
  var imgs=uls[0].getElementsByTagName('li');
  var btn=uls[1].getElementsByTagName('li');
  var i=index=0; //中间量,统一声明;
  var play=null;
  console.log(box,uls,imgs,btn);//获取正确

  //图片切换, 淡入淡出效果我是用(transition: opacity 0.8s linear)做的,不纠结、简单 在css里面
  function show(a){        //方法定义的是当传入一个下标时,按钮和图片做出对的反应
    for(i=0;i<btn.length;i++ ){
      btn[i].className='';    //很容易看懂吧?每个按钮都先设置成看不见,然后把当前按钮设置成可见。
      btn[a].className='current';
    }
    for(i=0;i<imgs.length;i++){ //把图片的效果设置和按钮相同
      imgs[i].style.opacity=0;
      imgs[a].style.opacity=1;
    }
  }
  //切换按钮功能,响应对应图片
  for(i=0;i<btn.length;i++){
    btn[i].index=i;  //不知道你有没有发现,循环里的方法去调用循环里的变量体i,会出现调到的不是i的变动值的问题。所以我先在循环外保存住
    btn[i].onmouseover=function(){
      show(this.index);
      clearInterval(play); //这就是最后那句话追加的功能
    }
  }

  //自动轮播方法
function autoPlay(){
      play=setInterval(function(){ //这个paly是为了保存定时器的,变量必须在全局声明 不然其他方法调不到 或者你可以调用auto.play 也许可以但是没时间试了
      index++;
      index>=imgs.length&&(index=0);//可能有优先级问题,所以用了括号,没时间测试了。
      show(index);
    },1000)
  }
  autoPlay();//马上调用,我试过用window.onload调用这个方法,但是调用之后影响到了其他方法,使用autoPlay所以只能这样调用了

  //div的鼠标移入移出事件
  box.onmouseover=function(){
    clearInterval(play);
  };
  box.onmouseout=function(){
    autoPlay();
  };
  //按钮下标也要加上相同的鼠标事件,不然图片停止了,定时器没停,会突然闪到很大的数字上。 貌似我可以直接追加到之前定义事件中。

</script>
</body>
</html>

希望本文所述对大家学习javascript程序设计有所帮助。

Javascript 相关文章推荐
8款非常棒的响应式jQuery 幻灯片插件推荐
Feb 02 Javascript
js实现表单Radio切换效果的方法
Aug 17 Javascript
JS实现DIV容器赋值的方法
Dec 14 Javascript
基于jQuery实现音乐播放试听列表
Apr 14 Javascript
JavaScript判断数组重复内容的两种方法(推荐)
Jun 06 Javascript
打造通用的匀速运动框架(实例讲解)
Oct 17 Javascript
vue.js中toast用法及使用toast弹框的实例代码
Aug 27 Javascript
JQuery事件委托原理与用法实例分析
May 13 jQuery
解决Vue中 父子传值 数据丢失问题
Aug 27 Javascript
移动端手指操控左右滑动的菜单
Sep 08 Javascript
JavaScript实现指定数量的并发限制的示例代码
Mar 10 Javascript
微信小程序实现可长按移动控件
Nov 01 Javascript
js表单中选择框值的获取及表单的序列化
Dec 17 #Javascript
浏览器兼容性问题大汇总
Dec 17 #Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
Dec 17 #Javascript
js调出上下文菜单的实例
Dec 17 #Javascript
快速掌握WordPress中加载JavaScript脚本的方法
Dec 17 #Javascript
JSONObject使用方法详解
Dec 17 #Javascript
JS实现alert中显示换行的方法
Dec 17 #Javascript
You might like
php读取xml实例代码
2010/01/28 PHP
Extjs 几个方法的讨论
2010/01/28 Javascript
js用Date对象处理时间实现思路及代码
2013/01/31 Javascript
jQuery的animate函数学习记录
2014/08/08 Javascript
Javascript基础教程之数据类型 (布尔型 Boolean)
2015/01/18 Javascript
JavaScript匿名函数用法分析
2015/02/13 Javascript
bootstrap table复杂操作代码
2016/11/01 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
基于JavaScript实现带缩略图的轮播效果
2017/01/12 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
Node.js简单入门前传
2017/08/21 Javascript
使用Angular CLI进行单元测试和E2E测试的方法
2018/03/24 Javascript
JavaScript引用类型Object常见用法实例分析
2018/08/08 Javascript
快速解决vue-cli在ie9+中无效的问题
2018/09/04 Javascript
微信小程序实现文字无限轮播效果
2018/12/28 Javascript
vue ssr服务端渲染(小白解惑)
2019/11/10 Javascript
基于vue.js仿淘宝收货地址并设置默认地址的案例分析
2020/08/20 Javascript
Python 深入理解yield
2008/09/06 Python
python逆向入门教程
2018/01/15 Python
浅谈Django学习migrate和makemigrations的差别
2018/01/18 Python
浅析python协程相关概念
2018/01/20 Python
一条命令解决mac版本python IDLE不能输入中文问题
2018/05/15 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
Python访问MongoDB,并且转换成Dataframe的方法
2018/10/15 Python
Django框架实现的简单分页功能示例
2018/12/04 Python
python 机器学习之支持向量机非线性回归SVR模型
2019/06/26 Python
OpenCV 模板匹配
2019/07/10 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
西班牙鞋子和箱包在线销售网站:zapatos.es
2020/02/17 全球购物
中文专业自荐书
2014/06/29 职场文书
工程部主管岗位职责
2015/02/12 职场文书
2015学校年度工作总结
2015/05/11 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
详解JavaScript中的执行上下文及调用堆栈
2021/04/29 Javascript