原生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]点出统计器
Oct 11 Javascript
js 页面刷新location.reload和location.replace的区别小结
Dec 24 Javascript
基于jquery的finkyUI插件与Ajax实现页面数据加载功能
Dec 03 Javascript
用js调用迅雷下载代码的二种方法
Apr 15 Javascript
如何实现修改密码时密码框显示保存到cookie的密码
Dec 10 Javascript
jQuery中使用each处理json数据
Apr 23 Javascript
JavaScript实现点击按钮复制指定区域文本(推荐)
Nov 25 Javascript
微信小程序tabbar不显示解决办法
Jun 08 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
Aug 14 Javascript
详解React中setState回调函数
Jun 14 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
Oct 12 jQuery
JS如何在数组指定位置插入元素
Mar 10 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
WAR3重制版DOTA 5V5初体验
2020/04/09 DOTA
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
PHP中preg_match正则匹配中的/u、/i、/s含义
2015/04/17 PHP
PHP实现的贪婪算法实例
2017/10/17 PHP
Javascript string 扩展库代码
2010/04/09 Javascript
Three.js源码阅读笔记(物体是如何组织的)
2012/12/27 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
百度地图自定义控件分享
2015/03/04 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
JavaScript模块化开发之SeaJS
2015/12/13 Javascript
JavaScript中的函数(二)
2015/12/23 Javascript
angularjs创建弹出框实现拖动效果
2020/08/25 Javascript
不间断循环滚动效果的实例代码(必看篇)
2016/10/08 Javascript
javascript实现无法关闭的弹框
2016/11/27 Javascript
jquery实现左右滑动式轮播图
2017/03/02 Javascript
bootstrap table使用入门基本用法
2017/05/24 Javascript
自定义vue全局组件use使用、vuex的使用详解
2017/06/14 Javascript
解决linux下node.js全局模块找不到的问题
2018/05/15 Javascript
Vue3.0中的monorepo管理模式的实现
2019/10/14 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
2020/05/27 Javascript
python使用socket远程连接错误处理方法
2015/04/29 Python
完美解决在oj中Python的循环输入问题
2018/06/25 Python
使用Python机器学习降低静态日志噪声
2018/09/29 Python
详解分布式任务队列Celery使用说明
2018/11/29 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
django实现用户注册实例讲解
2019/10/30 Python
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
工程类专业自荐信范文
2014/03/09 职场文书
投资合作协议书
2014/04/17 职场文书
大学生实习鉴定评语
2014/04/25 职场文书
竞选班干部演讲稿600字
2014/08/20 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
撤诉书怎么写
2015/05/19 职场文书
大学社团活动总结怎么写
2019/06/21 职场文书
开网店计划分析
2019/07/30 职场文书
《王国之心》迎来了发售的20周年, 野村哲发布贺图
2022/04/11 其他游戏