原生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 相关文章推荐
javascript 变量作用域 代码分析
Jun 26 Javascript
javascript之querySelector和querySelectorAll使用介绍
Dec 20 Javascript
jquery无刷新验证邮箱地址实现实例
Feb 19 Javascript
js确认删除对话框效果的示例代码
Feb 20 Javascript
JavaScript控制各种浏览器全屏模式的方法、属性和事件介绍
Apr 03 Javascript
JavaScript获取指定元素位置的方法
Apr 08 Javascript
关于Iframe父页面与子页面之间的相互调用
Nov 22 Javascript
详解Vue.js入门环境搭建
Mar 17 Javascript
ES6字符串模板,剩余参数,默认参数功能与用法示例
Apr 06 Javascript
Vue2 添加数据可视化支持的方法步骤
Jan 02 Javascript
原生javascript实现类似vue的数据绑定功能示例【观察者模式】
Feb 24 Javascript
如何利用JS将手机号中间四位变成*号
Sep 29 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
php给图片加文字水印
2015/07/31 PHP
php文件上传你必须知道的几点
2015/10/20 PHP
php函数mkdir实现递归创建层级目录
2016/10/27 PHP
JS运行耗时操作的延时显示方法
2010/11/19 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
jqueryUI里拖拽排序示例分析
2015/02/26 Javascript
用自定义图片代替原生checkbox实现全选,删除以及提交的方法
2016/10/18 Javascript
JS如何生成一个不重复的ID的函数
2016/12/25 Javascript
Mac系统下Webstorm快捷键整理大全
2017/05/28 Javascript
JavaScript之创意时钟项目(实例讲解)
2017/10/23 Javascript
Node.js log4js日志管理详解
2018/07/31 Javascript
Vue使用Proxy监听所有接口状态的方法实现
2019/06/07 Javascript
bootstrap table实现横向合并与纵向合并
2019/07/18 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
浅谈Vue2.4.0 $attrs与inheritAttrs的具体使用
2020/03/08 Javascript
JS实现公告上线滚动效果
2021/01/10 Javascript
python聊天程序实例代码分享
2013/11/18 Python
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
浅析Python中的序列化存储的方法
2015/04/28 Python
PyCharm配置mongo插件的方法
2018/11/30 Python
Python常用模块之requests模块用法分析
2019/05/15 Python
python使用正则表达式(Regular Expression)方法超详细
2019/12/30 Python
PyTorch中model.zero_grad()和optimizer.zero_grad()用法
2020/06/24 Python
PyCharm+PyQt5+QtDesigner配置详解
2020/08/12 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
jupyter 添加不同内核的操作
2021/02/06 Python
Mytheresa英国官网:拥有160多个奢侈品品牌
2016/10/09 全球购物
Evisu官方网站:日本牛仔品牌,时尚街头设计风格
2016/12/30 全球购物
大学军训感言300字
2014/03/09 职场文书
公司募捐倡议书
2014/05/14 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
迎新年主持词
2015/07/06 职场文书
Nginx 根据URL带的参数转发的实现
2021/04/01 Servers
详解TypeScript中的类型保护
2021/04/29 Javascript
详解MySQL连接挂死的原因
2021/05/18 MySQL
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python