原生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 相关文章推荐
浅谈javascript的原型继承
Jul 25 Javascript
js控制再次点击按钮之间的间隔时间可防止重复提交
Aug 01 Javascript
jQuery中scrollTop()方法用法实例
Jan 16 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
Jun 23 Javascript
由浅入深剖析Angular表单验证
Jul 14 Javascript
AngularJS表单和输入验证实例
Nov 02 Javascript
JavaScript数据结构之二叉树的计数算法示例
Apr 13 Javascript
原生JavaScrpit中异步请求Ajax实现方法
Nov 03 Javascript
微信小程序之多文件下载的简单封装示例
Jan 29 Javascript
使用react实现手机号的数据同步显示功能的示例代码
Apr 03 Javascript
详解微信小程序动画Animation执行过程
Sep 23 Javascript
Taro小程序自定义顶部导航栏功能的实现
Dec 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
ThinkPHP中ajax使用实例教程
2014/08/22 PHP
php编程中echo用逗号和用点号连接的区别
2016/03/26 PHP
Smarty模板简单配置与使用方法示例
2016/05/23 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
php微信开发之百度天气预报
2016/11/18 PHP
实例介绍PHP中zip_open()函数用法
2019/02/15 PHP
ThinkPHP5.1框架数据库链接和增删改查操作示例
2019/08/03 PHP
在一个浏览器里呈现所有浏览器测试结果的前端测试工具的思路
2010/03/02 Javascript
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
2010/03/27 Javascript
THREE.JS入门教程(6)创建自己的全景图实现步骤
2013/01/25 Javascript
jquery实现metro效果示例代码
2013/09/06 Javascript
判断某个字符在一个字符串中是否存在的js代码
2014/02/28 Javascript
jsPDF导出pdf示例
2014/05/02 Javascript
浅谈javascript回调函数
2014/12/07 Javascript
javascript比较两个日期的先后示例代码
2014/12/31 Javascript
js实现简单鼠标跟随效果的方法
2015/04/10 Javascript
jQuery实现延迟跳转的方法
2015/06/05 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
JS区分Object与Aarry的六种方法总结
2017/02/27 Javascript
nodejs实现超简单生成二维码的方法
2018/03/17 NodeJs
详解vue组件基础
2018/05/04 Javascript
JavaScript实现一个简易的计算器实例代码
2018/05/10 Javascript
详解angular如何调用HTML字符串的方法
2018/06/30 Javascript
es6中使用map简化复杂条件判断操作实例详解
2020/02/19 Javascript
python中Flask框架简单入门实例
2015/03/21 Python
Python使用SocketServer模块编写基本服务器程序的教程
2016/07/12 Python
Python wxPython库Core组件BoxSizer用法示例
2018/09/03 Python
解决python执行不输出系统命令弹框的问题
2019/06/24 Python
基于Django统计博客文章阅读量
2019/10/29 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
Html5监听手机摇一摇事件的实现
2019/11/07 HTML / CSS
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
本科生详细的自我评价
2013/09/19 职场文书
安全责任书模板
2014/07/22 职场文书
Jpa Specification如何实现and和or同时使用查询
2021/11/23 Java/Android