原生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 相关文章推荐
jQuery 1.2.x 升? 1.3.x 注意事项
May 06 Javascript
js实时监听文本框状态的方法
Apr 26 Javascript
仅img元素创建后不添加到文档中会执行onload事件的解决方法
Jul 31 Javascript
EasyUI中的tree用法介绍
Nov 01 Javascript
ExtJS中设置下拉列表框不可编辑的方法
May 07 Javascript
PageSwitch插件实现100种不同图片切换效果
Jul 28 Javascript
使用jQuery判断浏览器滚动条位置的方法
May 30 Javascript
jQuery实现判断控件是否显示的方法
Jan 11 Javascript
Vue.js学习教程之列表渲染详解
May 17 Javascript
微信小程序开发教程之增加mixin扩展
Aug 09 Javascript
元素全屏的设置与监听实例
Nov 28 Javascript
javascript数组元素删除方法delete和splice解析
Dec 09 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的面向对象编程
2006/10/09 PHP
php示例详解Constructor Prototype Pattern 原型模式
2015/10/15 PHP
分享别人写的一个小型js框架
2007/08/13 Javascript
ExtJS 工具栏 分页事件参数
2010/03/05 Javascript
js实现图片轮换效果代码
2013/04/16 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
深入理解JavaScript系列(30):设计模式之外观模式详解
2015/03/03 Javascript
简单谈谈javascript中的变量、作用域和内存问题
2015/08/30 Javascript
JS利用cookie记忆当前位置的防刷新导航效果
2015/10/15 Javascript
浅谈javascript中replace()方法
2015/11/10 Javascript
jquery mobile开发常见问题分析
2016/01/21 Javascript
JavaScript数组的栈方法与队列方法详解
2016/05/26 Javascript
Webpack中css-loader和less-loader的使用教程
2017/04/27 Javascript
js实现倒计时关键代码
2017/05/05 Javascript
jquery+css实现侧边导航栏效果
2017/06/12 jQuery
探索webpack模块及webpack3新特性
2017/09/18 Javascript
webpack 插件html-webpack-plugin的具体使用
2018/04/09 Javascript
vue19 组建 Vue.extend component、组件模版、动态组件 的实例代码
2019/04/04 Javascript
Vue+Element ui 根据后台返回数据设置动态表头操作
2020/09/21 Javascript
python时间整形转标准格式的示例分享
2014/02/14 Python
详解Python中的序列化与反序列化的使用
2015/06/30 Python
Python 爬虫的原理
2020/07/30 Python
Pytest单元测试框架如何实现参数化
2020/09/05 Python
微信浏览器左上角返回按钮拦截功能
2017/11/21 HTML / CSS
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
后勤人员自我鉴定
2013/10/20 职场文书
应届毕业生专业个人求职自荐信格式
2013/11/20 职场文书
研究生求职推荐信范文
2013/11/30 职场文书
上课迟到检讨书100字
2014/01/11 职场文书
读书月活动方案
2014/05/22 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
党员个人剖析材料
2014/09/30 职场文书
六查六看心得体会
2014/10/14 职场文书
爱心捐款倡议书:点燃希望,传递温暖
2019/11/04 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers