原生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 相关文章推荐
filemanage功能中用到的common.js
Apr 08 Javascript
JS Jquery 遍历,筛选页面元素 自动完成(实现代码)
Jul 08 Javascript
JS判断客户端是手机还是PC的2个代码
Apr 12 Javascript
jQuery实现的仿select功能代码
Aug 19 Javascript
JavaScript中三种异步上传文件方式
Mar 06 Javascript
CSS3 3D 技术手把手教你玩转
Sep 02 Javascript
Vue.js tab实现选项卡切换
May 16 Javascript
使用jQuery实现鼠标点击左右按钮滑动切换
Aug 04 jQuery
微信小程序template模版的使用方法
Apr 13 Javascript
说说如何使用Vuex进行状态管理(小结)
Apr 14 Javascript
vue 中Virtual Dom被创建的方法
Apr 15 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
Oct 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设计模式中单例模式的应用分析
2013/05/15 PHP
PHP Global变量定义当前页面的全局变量实现探讨
2013/06/05 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
简单PHP会话(session)说明介绍
2016/08/21 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
破解Session cookie的方法
2006/07/28 Javascript
看了就知道什么是JSON
2007/12/09 Javascript
JavaScript OOP类与继承
2009/11/15 Javascript
jQuery阻止冒泡和HTML默认操作
2010/11/17 Javascript
jQuery队列控制方法详解queue()/dequeue()/clearQueue()
2010/12/02 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
js实现jquery的offset()方法实例
2015/01/10 Javascript
ExpressJS入门实例
2015/01/14 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
vueJS简单的点击显示与隐藏的效果【实现代码】
2016/05/03 Javascript
简单总结JavaScript中的String字符串类型
2016/05/26 Javascript
Ionic+AngularJS实现登录和注册带验证功能
2017/02/09 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
JS获取日期的方法实例【昨天,今天,明天,前n天,后n天的日期】
2017/09/28 Javascript
webpack中如何使用雪碧图的示例代码
2018/11/11 Javascript
微信小程序和百度的语音识别接口详解
2019/05/06 Javascript
微信小程序保持session会话的方法
2020/03/20 Javascript
Webpack的Loader和Plugin的区别
2020/11/09 Javascript
pandas带有重复索引操作方法
2018/06/08 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
Python 操作mysql数据库查询之fetchone(), fetchmany(), fetchall()用法示例
2019/10/17 Python
python编写softmax函数、交叉熵函数实例
2020/06/11 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
网页中的电话号码如何实现一键直呼效果_附示例
2016/03/15 HTML / CSS
简单介绍HTML5中的文件导入
2015/05/08 HTML / CSS
蒂芙尼澳大利亚官方网站:Tiffany&Co. Australia
2017/08/27 全球购物
计算机应用专业推荐信
2013/11/13 职场文书
学生检讨书怎么写
2014/10/09 职场文书
校本课程教学计划
2015/01/19 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
Oracle用户管理及赋权
2022/04/24 Oracle