原生JS实现的自动轮播图功能详解


Posted in Javascript onDecember 28, 2018

本文实例讲述了原生JS实现的自动轮播图功能。分享给大家供大家参考,具体如下:

轮播图的用处

轮播图是现在网站网页上最常见的效果之一,很多网站上都会用到,淘宝京东等等。有些自动选项卡也是需要用到的,而且它的可重复性高。在这里分享一下,用js原生代码,实现轮播图的常见效果!

轮播图的原理

一系列的大小相等的图片平铺,利用CSS布局只显示一张图片,其余隐藏。通过定时器实现自动播放。

 原生JS实现的自动轮播图功能详解

Html布局

首先父容器banner存放所有内容,子容器img-list存放图片。子容器list存放按钮小圆点。圆点我使用了背景图片的方式!

<div id="banner">
  <ul id="img-list">
    <li><img src="images/banner1.png" alt="1"/></li>
    <li><img src="images/banner2.jpg" alt="2"/></li>
    <li><img src="images/banner3.png" alt="3"/></li>
  </ul>
  <div id="list">
    <span index="1" class="on"></span>
    <span index="2"></span>
    <span index="3"></span>
  </div>
</div>

css修饰

1、对盒子模型,文档流的理解,绝对定位问题。

2、图片有固定的的宽高,先在img-list中设置三张图片总共的宽,多余的将overflow: hidden;进行隐藏!载将其图片下的li设置往右浮动。

3、将list span中的宽高固定,给个背景图片。第一张图片上设个默认的黄色圆点图片。

#banner {
  width:100%;
  padding:0;
  clear: both;
  position: relative;
  height: 400px;
  z-index:1;
}
#img-list {
  display: block;
  width:5760px;
  height: 400px;
  overflow: hidden;
  z-index:1;
  position: relative;
}
#img-list li{
  float: left;
  width:100%;
  height: 400px;
  overflow: hidden;
  /* position: absolute;
  top:0;
  left:0; */
  z-index: 2;
}
#list {
  width:100%;
  height:18px;
  text-align: center;
  position: absolute;
  bottom: 10px;
  z-index: 100;
}
#list > span {
  width:18px;
  height: 18px;
  overflow: hidden;
  display: inline-block;
  margin:0 2px;
  background: url(../images/yuan.png);
  cursor: pointer;
}
#list .on {
  background: url(../images/huanyu.png);
}

JS效果

1、首先我们先设置自动播放的函数

2、然后鼠标滑过容器时停止播放,鼠标离开整个容器时继续播放至下一张。

3、再定义并调用自动播放函数

var banner=document.getElementById('banner');
var imglist=document.getElementById('img-list').getElementsByTagName("li");
var list=document.getElementById('list').getElementsByTagName('span');
var index=0;
var timer=null;
//设置自动播放函数
function autoPlay () {
   if (++index >= imglist.length) {index = 0};
   changeImg(index);
}
// 鼠标划过整个容器时停止自动播放
banner.onmouseover = function () {
   clearInterval(timer);
}
// 鼠标离开整个容器时继续播放至下一张
banner.onmouseout=function(){
   timer=setInterval(autoPlay,2000);
}
// 定义并调用自动播放函数
timer = setInterval(autoPlay, 2000);
接着定义图片的切换函数
// 定义图片切换函数
function changeImg (curIndex) {
   for (var i = 0; i < imglist.length; i++) {
     imglist[i].style.display = "none";
     list[i].className = "";
   }
   imglist[curIndex].style.display = "block";
   list[curIndex].className = "on";
}

最后遍历所有数字导航实现划过切换至对应的图片,需获得它的索引值

for (var i = 0; i < list.length; i++) {
 list[i].index=i;
 list[i].onmouseover = function () {
 clearInterval(timer);
 changeImg(this.index);
};

到此为止,我们的轮播所有代码完成!

还不算完美,继续努力!

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
ajax处理php返回json数据的实例代码
Jan 24 Javascript
js怎么终止程序return不行换jfslk
May 30 Javascript
js 立即调用的函数表达式如何写
Jan 12 Javascript
jQuery标签替换函数replaceWith()的使用例子
Aug 28 Javascript
基于jQuery实现响应式圆形图片轮播特效
Nov 25 Javascript
JavaScript字符串常用的方法
Mar 10 Javascript
浅谈JavaScript for循环 闭包
Jun 22 Javascript
基于DOM节点删除之empty和remove的区别(详解)
Sep 11 Javascript
微信小程序媒体组件详解(视频,音乐,图片)
Sep 19 Javascript
requireJS模块化实现返回顶部功能的方法详解
Oct 16 Javascript
JavaScript求一个数组中重复出现次数最多的元素及其下标位置示例
Jul 23 Javascript
Layui Table js 模拟选中checkbox的例子
Sep 03 Javascript
jQuery实现的自定义轮播图功能详解
Dec 28 #jQuery
微信小程序实现简单跑马灯效果
May 26 #Javascript
详解如何快速配置webpack多入口脚手架
Dec 28 #Javascript
详解puppeteer使用代理
Dec 27 #Javascript
Angular(5.2-&gt;6.1)升级小结
Dec 27 #Javascript
详解angular2 控制视图的封装模式
Dec 27 #Javascript
JavaScript原型对象原理与应用分析
Dec 27 #Javascript
You might like
全国FM电台频率大全 - 30 宁夏回族自治区
2020/03/11 无线电
有关JSON以及JSON在PHP中的应用
2010/04/09 PHP
php实现MD5加密16位(不要默认的32位)
2013/08/12 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
老生常谈php 正则中的i,m,s,x,e分别表示什么
2017/03/02 PHP
高亮显示web页表格行的javascript代码
2010/11/19 Javascript
JavaScript定义类或函数的几种方式小结
2011/01/09 Javascript
动态改变div的z-index属性的简单实例
2013/08/08 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
详解js中class的多种函数封装方法
2016/01/03 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
详解angular2封装material2对话框组件
2017/03/03 Javascript
一个有意思的鼠标点击文字特效jquery代码
2017/09/23 jQuery
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
详解Vue-cli3 项目在安卓低版本系统和IE上白屏问题解决
2019/04/14 Javascript
javascript浅层克隆、深度克隆对比及实例解析
2020/02/09 Javascript
[03:36]2015国际邀请赛第二日现场精彩集锦
2015/08/06 DOTA
详解Python Socket网络编程
2016/01/05 Python
Python多线程爬虫实战_爬取糗事百科段子的实例
2017/12/15 Python
简单了解python 邮件模块的使用方法
2019/07/24 Python
在VS2017中用C#调用python脚本的实现
2019/07/31 Python
python手机号前7位归属地爬虫代码实例
2020/03/31 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
css3给背景图片加颜色遮罩的方法
2019/11/05 HTML / CSS
花园仓库建筑:Garden Buildings Direct
2018/02/16 全球购物
城野医生官方海外旗舰店:风靡亚洲毛孔收敛水
2018/04/26 全球购物
Regatta官网:英国最受欢迎的户外服装和鞋类品牌
2019/05/01 全球购物
职称自我鉴定
2013/10/15 职场文书
学生自我评价范文
2014/02/02 职场文书
导师评语大全
2014/04/26 职场文书
招标承诺书
2014/08/30 职场文书
2016高考寄语集锦
2015/12/04 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
CSS list-style-type属性使用方法
2023/05/21 HTML / CSS