原生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 相关文章推荐
js操作CheckBoxList实现全选/反选(在客服端完成)
Feb 02 Javascript
iframe的父子窗口之间的对象相互调用基本用法
Sep 03 Javascript
js检测判断日期大于多少天的方法
May 04 Javascript
学习JavaScript设计模式之责任链模式
Jan 18 Javascript
Bootstrap项目实战之首页内容介绍(全)
Apr 25 Javascript
JS生成不重复的随机数组的简单实例
Jul 10 Javascript
JS实现针对给定时间的倒计时功能示例
Apr 11 Javascript
Vue之Watcher源码解析(1)
Jul 19 Javascript
vue基于两个计算属性实现选中和全选功能示例
Feb 08 Javascript
搭建Vue从Vue-cli到router路由护卫的实现
Nov 14 Javascript
vue动态设置页面title的方法实例
Aug 23 Javascript
基于JavaScript实现随机点名器
Feb 25 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 5.0对象模型深度探索之对象复制
2008/03/27 PHP
解析file_get_contents模仿浏览器头(user_agent)获取数据
2013/06/27 PHP
php实现的双色球算法示例
2017/06/20 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
详解PHP中的外观模式facade pattern
2018/02/05 PHP
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
2013/05/07 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
判断JS对象是否拥有某种属性的两种方式
2013/12/02 Javascript
通过隐藏iframe实现文件下载的js方法介绍
2014/02/26 Javascript
jQuery Ajax页面局部加载方法汇总
2016/06/02 Javascript
Bootstrap基本模板的使用和理解1
2016/12/14 Javascript
使用JavaScript判断用户输入的是否为正整数(两种方法)
2017/02/05 Javascript
javascript history对象详解
2017/02/09 Javascript
深入理解vue.js中的v-if和v-show
2017/06/22 Javascript
React操作真实DOM实现动态吸底部的示例
2017/10/23 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
浅谈vue中组件绑定事件时是否加.native
2019/11/09 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
关于javascript中的promise的用法和注意事项(推荐)
2021/01/15 Javascript
Numpy 改变数组维度的几种方法小结
2018/08/02 Python
Python3基础教程之递归函数简单示例
2019/06/07 Python
Python中的十大图像处理工具(小结)
2019/06/10 Python
Python基于机器学习方法实现的电影推荐系统实例详解
2019/06/25 Python
python设置随机种子实例讲解
2019/09/12 Python
印尼购物网站:iLOTTE
2019/10/16 全球购物
总裁秘书岗位职责
2013/12/04 职场文书
财务管理职业生涯规划书
2014/02/26 职场文书
我的老师教学反思
2014/05/01 职场文书
村抢险救灾方案
2014/05/09 职场文书
理想点亮人生演讲稿
2014/05/21 职场文书
2014领导班子四风剖析对照检查材料思想汇报
2014/09/20 职场文书
预备党员对照检查材料思想汇报
2014/09/24 职场文书
小学教师学习党的群众路线教育实践活动心得体会
2014/10/31 职场文书
电话营销开场白
2015/05/29 职场文书
2019客服个人年终工作总结范文
2019/07/08 职场文书
python解析json数据
2022/04/29 Python