原生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 showModalDialog模态对话框使用说明
Dec 31 Javascript
基于jsTree的无限级树JSON数据的转换代码
Jul 27 Javascript
微信小程序登录态控制深入分析
Apr 12 Javascript
JavaScript 保护变量不被随意修改的实现代码
Sep 27 Javascript
Vue.js组件通信的几种姿势
Oct 23 Javascript
微信小程序实现长按删除图片的示例
May 18 Javascript
搭建vue开发环境
Jul 19 Javascript
angular2 ng2-file-upload上传示例代码
Aug 23 Javascript
百度小程序自定义通用toast组件
Jul 17 Javascript
原生JS 实现的input输入时表格过滤操作示例
Aug 03 Javascript
Vue登录主页动态背景短视频制作
Sep 21 Javascript
如何优雅地取消 JavaScript 异步任务
Mar 22 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
第十一节 重载 [11]
2006/10/09 PHP
php和jquery实现地图区域数据统计展示数据示例
2014/02/12 PHP
php中使用sftp教程
2015/03/30 PHP
关于PHP 如何用 curl 读取 HTTP chunked 数据
2016/02/26 PHP
php 浮点数比较方法详解
2017/05/05 PHP
使用JQuery进行跨域请求
2010/01/25 Javascript
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
JSON字符串和对象之间的转换详解
2015/05/26 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
基于touch.js手势库+zepto.js插件开发图片查看器(滑动、缩放、双击缩放)
2016/11/17 Javascript
浅谈Vuex@2.3.0 中的 state 支持函数申明
2017/11/22 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
create-react-app使用antd按需加载的样式无效问题的解决
2019/02/26 Javascript
JavaScript键盘事件响应顺序详解
2019/09/30 Javascript
微信小程序入门之指南针
2020/10/22 Javascript
解决ant Design Search无法输入内容的问题
2020/10/29 Javascript
跟老齐学Python之编写类之四再论继承
2014/10/11 Python
Python设计模式之抽象工厂模式
2016/08/25 Python
python多进程中的内存复制(实例讲解)
2018/01/05 Python
Python 3.7新功能之dataclass装饰器详解
2018/04/21 Python
python版百度语音识别功能
2019/07/09 Python
Python的历史与优缺点整理
2020/05/26 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
css3学习之2D转换功能详解
2016/12/23 HTML / CSS
举例详解HTML5中使用JSON格式提交表单
2015/06/16 HTML / CSS
白宫黑市官网:White House Black Market
2016/11/17 全球购物
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
Linux文件系统类型
2012/02/15 面试题
大学生实习思想汇报
2014/01/12 职场文书
物业管理工作方案
2014/05/10 职场文书
拓展训练激励口号
2014/06/17 职场文书
个园导游词
2015/02/04 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
php TP5框架生成二维码链接
2021/04/01 PHP
Mysql开启外网访问
2022/05/15 MySQL