原生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 相关文章推荐
jQuery层次选择器选择元素使用介绍
Apr 18 Javascript
让网页跳转到指定位置的jquery代码非书签
Sep 06 Javascript
jquery form 隐藏的input 选择
Apr 29 Javascript
javascript将数字转换整数金额大写的方法
Jan 27 Javascript
Javascript简单改变表单元素背景的方法
Jul 15 Javascript
JS获取文件大小方法小结
Dec 08 Javascript
JS函数的定义与调用方法推荐
May 12 Javascript
深入理解JS addLoadEvent函数
May 20 Javascript
jQuery中设置form表单中action值的实现方法
May 25 Javascript
vue2.0 keep-alive最佳实践
Jul 06 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
Jul 31 Javascript
不使用 JS 匿名函数理由
Nov 17 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
处理单名多值表单的详解
2013/06/08 PHP
PHP爬虫之百万级别知乎用户数据爬取与分析
2016/01/22 PHP
php生成验证码,缩略图及水印图的类分享
2016/04/07 PHP
PHP实现的一致性Hash算法详解【分布式算法】
2018/03/31 PHP
php如何获取Http请求
2020/04/30 PHP
如何在标题栏显示框架内页面的标题
2007/02/03 Javascript
网上应用的一个不错common.js脚本
2007/08/08 Javascript
jquery 插件 web2.0分格的分页脚本,可用于ajax无刷新分页
2008/12/25 Javascript
javascript闭包入门示例
2014/04/30 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
详解element上传组件before-remove钩子问题解决
2020/04/08 Javascript
python批量同步web服务器代码核心程序
2014/09/01 Python
Python中的赋值、浅拷贝、深拷贝介绍
2015/03/09 Python
python读取文本中数据并转化为DataFrame的实例
2018/04/10 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
Python通过TensorFlow卷积神经网络实现猫狗识别
2019/03/14 Python
Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析
2019/04/27 Python
python pandas模块基础学习详解
2019/07/03 Python
Python二维数组实现求出3*3矩阵对角线元素的和示例
2019/11/29 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
Django celery异步任务实现代码示例
2020/11/26 Python
俄罗斯第一家多品牌在线奢侈品精品店:Aizel.ru
2020/09/06 全球购物
this关键字的作用
2016/01/30 面试题
小学运动会广播稿200字(十二篇)
2014/01/14 职场文书
建筑设计学生的自我评价
2014/01/16 职场文书
推荐信怎么写
2014/05/09 职场文书
文明礼仪标语
2014/06/13 职场文书
党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
教师作风建设剖析材料
2014/10/11 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
交通事故和解协议书
2015/01/27 职场文书
行政介绍信范文
2015/05/04 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
2017寒假社会实践心得体会范文
2016/01/14 职场文书
创业计划书之奶茶店开店方案范本!
2019/08/06 职场文书