前端基础功能,原⽣js实现轮播图实例教程
轮播图是前端最基本、最常见的功能,不论web端还是移动端,⼤平台还是⼩⽹站,⼤多在⾸页都会放⼀个轮播图效果。本教程讲解怎么实现⼀个简单的轮播图效果。学习本教程之前,读者需要具备html和css技能,同时需要有简单的javascript基础。
本实例效果如下图所⽰:
根据实例效果,需要的元素有图⽚、中间圆点按钮、左右箭头按钮等。实际html代码如下所⽰:
<div class="banner_container" id="bannerContainer">
<div class="img_box"><!--图⽚元素-->
<div><img src="img/1.jpg" alt=""></div>
<div><img src="img/2.jpg" alt=""></div>
<div><img src="img/3.jpg" alt=""></div>
<div><img src="img/4.jpg" alt=""></div>
<div><img src="img/5.jpg" alt=""></div>
</div>
<ul class="sel_box"><!--选择按钮-->
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>
<div class="left_btn btn"></div><!--左切换按钮-->
<div class="right_btn btn"></div><!--右切换按钮-->
</div>
读者可以根据实际效果⾃⾏编写样式。
接下来完成javascript部分的代码,先分析⼀下轮播图的效果所需要的步骤。
1. 获取轮播图各个html元素及声明相关变量。如下所⽰:
//获取外包容器
var eContainer = ElementById('bannerContainer');
//获取图⽚总容器
var eImgBox = ElementsByClassName('img_box')[0];
//获取图⽚容器列表
var aImgList = ElementsByTagName('div');
//获取选择按钮容器
var eSelBox = ElementsByClassName('sel_box')[0];
//获取选择按钮
var aSelList = ElementsByTagName('li');
//获取左按钮
var eLeftBtn = ElementsByClassName('left_btn')[0];
/
/获取右按钮
var eRightBtn = ElementsByClassName('right_btn')[0];
//当前图⽚索引
var nIndex = 0;
//轮播图⾃动切换定时器
var timer = null;
2. 设置图⽚容器⼤⼩及位置
⼀般轮播图的数量不是固定的,可能是3个,也可能是5个,所以 “图⽚容器的宽度=外包容器宽度 * 轮播图数量”,代码如下:
//获取外包容器宽度
var nContainerW = eContainer.offsetWidth;
//设置图⽚总容器宽度
eImgBox.style.width = nContainerW * aImgList.length + 'px';
3. 设置默认显⽰图⽚及选择按钮,本实例第⼀张图为默认图⽚,代码如下:
//默认显⽰第⼀张图⽚
eImgBox.style.left = '0px';
//默认第⼀个选择按钮设为当前选择按钮
aSelList[0].className = 'cur';
4. 给选择按钮绑定轮播图切换事件,在这⾥把点击事件委托给选择按钮容器,如下所⽰:
eSelBox.addEventListener('click',function(event){
//获取当前点击元素
var eTarget = event.target;
//判断点击的是li元素,且不是当前选择按钮
LowerCase() == 'li' && eTarget.className != 'cur'){
//设置当前图⽚索引
nIndex = eTarget.innerHTML-1
//修改轮播图容器位置,⽤于切换图⽚
eImgBox.style.left = -nIndex * nContainerW + 'px';
//删除所有选择按钮上的className
for(let i=0;i<aSelList.length;i++){
aSelList[i].className = '';
js控制css3动画触发}
//修改当前选择按钮的className,设为当前选择按钮
eTarget.className = 'cur';
}
});
轮播图切换属于本实例核⼼功能,在选择数字按钮时会切换;点击左、右两个按钮时也会切换;图⽚还会⾃动切换。所以可以把切换图⽚的功能封装成⼀个函数,如下所⽰:
//轮播图切换
function fnSwitchImg(){
//修改轮播图容器位置,⽤于切换图⽚
eImgBox.style.left = -nIndex * nContainerW + 'px';
//删除所有选择按钮上的className
for(let i=0;i<aSelList.length;i++){
aSelList[i].className = '';
}
//修改当前选择按钮的className,设为当前选择按钮
aSelList[nIndex].className = 'cur';
}
那么第 4 步的代码修改如下:
//选择按钮绑定事件
eSelBox.addEventListener('click',function(event){
//获取当前点击元素
var eTarget = event.target;
//判断点击的是li元素,且不是当前选择按钮
LowerCase() == 'li' && eTarget.className != 'cur'){
//设置当前图⽚索引
nIndex = eTarget.innerHTML-1
fnSwitchImg();
}
});
5. 点击左、右两个按钮也是可以切换图⽚的,分别添加事件,代码如下:
if(nIndex<=0){
return; //如果当前是第⼀张图⽚,阻⽌后续代码执⾏
}
//往左切换图⽚
nIndex --;
fnSwitchImg();
}
if(nIndex>=aSelList.length-1){
return; //如果当前是最后⼀张图⽚,阻⽌后续代码执⾏
}
//往右切换图⽚
nIndex ++;
fnSwitchImg();
}
6. 给轮播图添加⾃动切换功能
完成这些步骤之后,轮播图已能正常运⾏,不过⼤部分轮播图都是可以⾃动切换的。所以还需要加上⼀个定时器功能,设置轮播图⾃动切换;当⿏标移⼊轮播图的时候,需要移除定时器;⿏标移出时再次启动定时器。如下所⽰:
//轮播图⾃动切换
timer = setInterval(function(){
//向右切换图⽚
nIndex ++;
//已切换到最后⼀张图⽚时,跳回第⼀张图⽚
if(nIndex>=5){
nIndex = 0;
}
fnSwitchImg();
},3000);
//⿏标滑⼊轮播图停⽌⾃动切换
clearInterval(timer);
}
//⿏标移出轮播图开始⾃动切换
//轮播图⾃动切换
timer = setInterval(function(){
//向右切换图⽚
nIndex ++;
/
/已切换到最后⼀张图⽚时,跳回第⼀张图⽚
if(nIndex>=5){
nIndex = 0;
}
fnSwitchImg();
},3000);
}
本实例图⽚切换的动画效果使⽤的是css3的过渡动画,所以需要给相关元素添加transition样式属性。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。