原生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 相关文章推荐
使用Firebug对js进行断点调试的图文方法
Apr 02 Javascript
JavaScript中匿名、命名函数的性能测试
Sep 04 Javascript
JS使用eval()动态创建变量的方法
Jun 03 Javascript
JavaScript 节流函数 Throttle 详解
Jul 04 Javascript
JavaScript设计模式之单体模式全面解析
Sep 09 Javascript
Node.js检测端口(port)是否被占用的简单示例
Sep 29 Javascript
js倒计时显示实例
Dec 11 Javascript
Bootstrap CSS组件之导航条(navbar)
Dec 17 Javascript
Vue 进阶教程之v-model详解
May 06 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
May 25 Javascript
js实现简单页面全屏
Sep 17 Javascript
解决ant Design Search无法输入内容的问题
Oct 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
关于BIG5-HKSCS的解决方法
2007/03/20 PHP
fleaphp crud操作之findByField函数的使用方法
2011/04/23 PHP
使用php判断浏览器的类型和语言的函数代码
2013/02/28 PHP
Jquery 获取表单text,areatext,radio,checkbox,select值的代码
2009/11/12 Javascript
jqeury eval将字符串转换json的方法
2011/01/20 Javascript
jqeury-easyui-layout问题解决方法
2014/03/24 Javascript
JS辨别访问浏览器判断是android还是ios系统
2014/08/19 Javascript
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
jquery实现的Banner广告收缩效果代码
2015/09/02 Javascript
require.js的用法详解
2015/10/20 Javascript
手机端实现Bootstrap简单图片轮播效果
2016/10/13 Javascript
原生js二级联动效果
2017/06/20 Javascript
layui.js实现的表单验证功能示例
2017/11/15 Javascript
在vue-cli的组件模板里使用font-awesome的两种方法
2018/09/28 Javascript
require.js 加载过程与使用方法介绍
2018/10/30 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
layui layer select 选择被遮挡的解决方法
2019/09/21 Javascript
js实现简易ATM功能
2020/10/27 Javascript
antd多选下拉框一行展示的实现方式
2020/10/31 Javascript
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
python实现比较文件内容异同
2018/06/22 Python
使用python动态生成波形曲线的实现
2019/12/04 Python
Python使用pyyaml模块处理yaml数据
2020/04/14 Python
关于Python解包知识点总结
2020/05/05 Python
Cpython解释器中的GIL全局解释器锁
2020/11/09 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
ASOS英国官网:英国在线时装和化妆品零售商
2017/05/19 全球购物
工作中的自我评价如何写好
2013/10/28 职场文书
校友会欢迎辞
2014/01/13 职场文书
汽车专业学生自我评价
2014/01/19 职场文书
客服部班长工作责任制
2014/02/25 职场文书
2014年幼儿园教师工作总结
2014/11/08 职场文书
高三语文复习计划
2015/01/19 职场文书
企业安全生产规章制度
2015/08/06 职场文书
Python趣味挑战之用pygame实现简单的金币旋转效果
2021/05/31 Python