原生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 相关文章推荐
双击滚屏-常用推荐
Nov 29 Javascript
jQuery ajax在GBK编码下表单提交终极解决方案(非二次编码方法)
Oct 20 Javascript
ajax请求get与post的区别总结
Nov 04 Javascript
JavaScript中for..in循环陷阱介绍
Nov 12 Javascript
Jquery组件easyUi实现表单验证示例
Aug 23 Javascript
w3c编程挑战_初级脚本算法实战篇
Jun 23 Javascript
JS鼠标滚动分页效果示例
Jul 05 Javascript
Vue中div contenteditable 的光标定位方法
Aug 25 Javascript
浅析js中mvvm模式实现的原理
Oct 06 Javascript
详解webpack打包后如何调试的方法步骤
Nov 07 Javascript
js类的继承定义与用法分析
Jun 21 Javascript
详细分析JavaScript中的深浅拷贝
Sep 17 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的array_multisort()使用方法介绍
2012/05/16 PHP
mysql,mysqli,PDO的各自不同介绍
2012/09/19 PHP
基于php实现长连接的方法与注意事项的问题
2013/05/10 PHP
php中使用gd库实现远程图片下载实例
2015/05/12 PHP
php搜索文件程序分享
2015/10/30 PHP
php微信开发之图片回复功能
2018/06/14 PHP
javascript 模式设计之工厂模式学习心得
2010/04/27 Javascript
刷新页面的几种方法小结(JS,ASP.NET)
2014/01/07 Javascript
JavaScript中调用函数的4种方式代码实例
2015/07/08 Javascript
一分钟理解js闭包
2016/05/04 Javascript
基于JavaScript实现点击页面任何位置返回
2016/08/31 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
canvas知识总结
2017/01/25 Javascript
基于JS实现移动端左滑删除功能
2017/07/28 Javascript
jQuery选择器之子元素选择器详解
2017/09/18 jQuery
vue2.0 父组件给子组件传递数据的方法
2018/01/15 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
vue2.0 elementUI制作面包屑导航栏
2018/02/22 Javascript
Vue.js项目中管理每个页面的头部标签的两种方法
2018/06/25 Javascript
Vue之mixin全局的用法详解
2018/08/22 Javascript
elementUI 设置input的只读或禁用的方法
2018/10/30 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
python实现文本界面网络聊天室
2018/12/12 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
Python File(文件) 方法整理
2019/02/18 Python
Python 网络编程之TCP客户端/服务端功能示例【基于socket套接字】
2019/10/12 Python
Python如何把Spark数据写入ElasticSearch
2020/04/18 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
Python用Jira库来操作Jira
2020/12/28 Python
静态变量和实例变量的区别
2015/07/07 面试题
九年级科学教学反思
2014/01/29 职场文书
论群众路线学习心得体会
2014/10/31 职场文书
大学生考试作弊被抓检讨书
2014/12/27 职场文书
高三毕业评语
2014/12/31 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
浅谈MySQL next-key lock 加锁范围
2021/06/07 MySQL