原生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 相关文章推荐
fckeditor粘贴Word时弹出窗口取消的方法
Oct 30 Javascript
jquery中change()用法实例分析
Feb 06 Javascript
JavaScript自定义等待wait函数实例分析
Mar 23 Javascript
基于jquery实现省市区三级联动效果
Dec 25 Javascript
JavaScript中${pageContext.request.contextPath}取值问题及解决方案
Dec 08 Javascript
原生和jQuery的ajax用法详解
Jan 23 Javascript
layer.open关闭父窗口 以及调用父页面的方法
Aug 17 Javascript
jquery+php后台实现省市区联动功能示例
May 23 jQuery
基于vue手写tree插件的那点事儿
Aug 20 Javascript
Vue学习之组件用法实例详解
Jan 06 Javascript
vue 中使用print.js导出pdf操作
Nov 13 Javascript
javascript拖曳互换div的位置实现示例
Jun 28 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 模板高级篇总结
2006/12/21 PHP
调整PHP的性能
2013/10/30 PHP
thinkphp实现发送邮件密码找回功能实例
2014/12/01 PHP
php进行支付宝开发中return_url和notify_url的区别分析
2014/12/22 PHP
Laravel中Facade的加载过程与原理详解
2017/09/22 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
JS模拟多线程
2007/02/07 Javascript
Js 获取当前日期时间及其它操作实现代码
2021/03/04 Javascript
jQuery 使用手册(二)
2009/09/23 Javascript
jQuery Ajax之load()方法
2009/10/12 Javascript
JavaScript DOM学习第六章 表单实例
2010/02/19 Javascript
JavaScript中的包装对象介绍
2015/01/27 Javascript
JS实现的鼠标跟随代码(卡通手型点击效果)
2015/10/26 Javascript
vue.js表格分页示例
2016/10/18 Javascript
JS日期对象简单操作(获取当前年份、星期、时间)
2016/10/26 Javascript
jQuery实现html table行Tr的复制、删除、计算功能
2017/07/10 jQuery
JavaScript你不知道的一些数组方法
2017/08/18 Javascript
简单的网页广告特效实例
2017/08/19 Javascript
Vue组件中prop属性使用说明实例代码详解
2018/05/31 Javascript
js实现简单掷骰子效果
2019/10/24 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
vue中选中多个选项并且改变选中的样式的实例代码
2020/09/16 Javascript
[01:45]IMBATV TI4前线报道-选手到达
2014/07/07 DOTA
[59:48]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第一场 1月26日
2021/03/11 DOTA
使用DataFrame删除行和列的实例讲解
2018/04/08 Python
Python使用OpenCV进行标定
2018/05/08 Python
Python 字符串与数字输出方法
2018/07/16 Python
python 画三维图像 曲面图和散点图的示例
2018/12/29 Python
pandas数据集的端到端处理
2019/02/18 Python
利用Python的turtle库绘制玫瑰教程
2019/11/23 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
keras输出预测值和真实值方式
2020/06/27 Python
高校毕业生自我鉴定
2013/10/27 职场文书
三方股东合作协议书
2014/10/28 职场文书
电影雨中的树观后感
2015/06/15 职场文书
用Python可视化新冠疫情数据
2022/01/18 Python