原生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 通用简单的table选项卡实现
May 07 Javascript
什么是DOM(Document Object Model)文档对象模型
Mar 05 Javascript
AngularJS中的包含详细介绍及实现示例
Jul 28 Javascript
ion content 滚动到底部会遮住一部分视图的快速解决方法
Sep 06 Javascript
canvas实现流星雨的背景效果
Jan 13 Javascript
node.js中axios使用心得总结
Nov 29 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
Jul 25 Javascript
Angular封装搜索框组件操作示例
Apr 25 Javascript
vue实现弹幕功能
Oct 25 Javascript
Vue实现push数组并删除的例子
Nov 01 Javascript
使用Bootstrap做一个朝代历史表
Dec 10 Javascript
Vue实现简单的留言板
Oct 23 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
S900/ ETON E1-XM 收音机
2021/03/02 无线电
基于mysql的bbs设计(一)
2006/10/09 PHP
定制404错误页面,并发信给管理员的程序
2006/10/09 PHP
php数组冒泡排序算法实例
2016/05/06 PHP
php模仿qq空间或朋友圈发布动态、评论动态、回复评论、删除动态或评论的功能(中)
2017/06/11 PHP
ThinkPHP中图片按比例切割的代码实例
2019/03/08 PHP
浅谈laravel-admin form中的数据,在提交后,保存前,获取并进行编辑
2019/10/21 PHP
图片格式的JavaScript和CSS速查手册
2007/08/20 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
2010/03/31 Javascript
jQuery实现原理的模拟代码 -6 代码下载
2010/08/16 Javascript
javascript不可用的问题探究
2013/10/01 Javascript
在JavaScript中判断整型的N种方法示例介绍
2014/06/18 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
详解jQuery向动态生成的内容添加事件响应jQuery live()方法
2015/11/02 Javascript
vue事件修饰符和按键修饰符用法总结
2017/07/25 Javascript
jQuery实现输入框的放大和缩小功能示例
2018/07/21 jQuery
layui select获取自定义属性方法
2018/08/15 Javascript
解决vue props 拿不到值的问题
2018/09/11 Javascript
VUEX采坑之路之获取不到$store的解决方法
2019/11/08 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
详解vite2.0配置学习(typescript版本)
2021/02/25 Javascript
Python3.4实现远程控制电脑开关机
2018/02/22 Python
详解python如何在django中为用户模型添加自定义权限
2018/10/15 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
python实现小球弹跳效果
2019/05/10 Python
Python 求数组局部最大值的实例
2019/11/26 Python
Win10下用Anaconda安装TensorFlow(图文教程)
2020/06/18 Python
CSS3 display知识详解
2015/11/25 HTML / CSS
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
意大利买卖二手奢侈品网站:LAMPOO
2020/06/03 全球购物
春节请假条
2014/04/11 职场文书
2014年国庆晚会主持词
2014/09/19 职场文书
领导干部作风建设剖析材料
2014/10/11 职场文书
2014年幼儿园老师工作总结
2014/12/05 职场文书
高中生综合素质自我评价
2015/03/06 职场文书
博士导师推荐信
2015/03/25 职场文书