原生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 相关文章推荐
js 限制数字 js限制输入实现代码
Dec 04 Javascript
javascript从作用域链谈闭包
Jul 29 Javascript
javascript中FOREACH数组方法使用示例
Mar 01 Javascript
微信小程序 Video API实例详解
Oct 02 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
Nov 16 Javascript
vue生成随机验证码的示例代码
Sep 29 Javascript
vue+axios+element ui 实现全局loading加载示例
Sep 11 Javascript
React中阻止事件冒泡的问题详析
Apr 12 Javascript
基于Fixed定位的框选功能的实现代码
May 13 Javascript
vue中上传视频或图片或图片和文字一起到后端的解决方法
Dec 01 Javascript
小程序自定义模板实现吸顶功能
Jan 08 Javascript
JavaScript实现鼠标移入随机变换颜色
Nov 24 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制作简单的内容采集器的代码
2007/11/28 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
PHP使用Pear发送邮件(Windows环境)
2016/01/05 PHP
利用PHP访问带有密码的Redis方法示例
2017/02/09 PHP
php探针使用原理和技巧讲解
2019/09/17 PHP
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
js 获取、清空input type=&quot;file&quot;的值示例代码
2014/02/19 Javascript
js实现文字跟随鼠标移动而移动的方法
2015/02/28 Javascript
Javascript编写俄罗斯方块思路及实例
2015/07/07 Javascript
老生常谈JavaScript 正则表达式语法
2016/08/20 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
简单理解vue中Props属性
2016/10/27 Javascript
JavaScript 控制字体大小设置的方法
2016/11/23 Javascript
Bootstrap和Java分页实例第二篇
2016/12/23 Javascript
详解webpack 多页面/入口支持&amp;公共组件单独打包
2017/06/29 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
Cordova(ionic)项目实现双击返回键退出应用
2019/09/17 Javascript
深入理解 TypeScript Reflect Metadata
2019/12/12 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
js+canvas实现简单扫雷小游戏
2021/01/22 Javascript
解决vue-pdf查看pdf文件及打印乱码的问题
2020/11/04 Javascript
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
python框架django基础指南
2016/09/08 Python
利用python实现命令行有道词典的方法示例
2017/01/31 Python
实践Vim配置python开发环境
2018/07/02 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
Tensorflow 1.0之后模型文件、权重数值的读取方式
2020/02/12 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
Python批量修改xml的坐标值全部转为整数的实例代码
2020/11/26 Python
Sunglasses Shop瑞典:欧洲领先的太阳镜网上商店
2018/04/22 全球购物
测试驱动开发的主要步骤是什么
2014/12/10 面试题
请用Java实现列出某个目录下的所有文件
2013/09/23 面试题
喝酒驾驶检讨书
2014/10/01 职场文书
《分一些蚊子进来》读后感3篇
2020/01/09 职场文书
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android