2021年1月21日星期四

前端基础功能,原生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 = document.getElementById('bannerContainer'); //获取图片总容器 var eImgBox = eContainer.getElementsByClassName('img_box')[0]; //获取图片容器列表 var aImgList = eImgBox.getElementsByTagName('div'); //获取选择按钮容器 var eSelBox = eContainer.getElementsByClassName('sel_box')[0]; //获取选择按钮 var aSelList = eSelBox.getElementsByTagName('li'); //获取左按钮 var eLeftBtn = eContainer.getElementsByClassName('left_btn')[0]; //获取右按钮 var eRightBtn = eContainer.getElementsByClassName('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元素,且不是当前选择按钮 if(eTarget.nodeName.toLowerCase() == '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 = '';  }  //修改当前选择按钮的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元素,且不是当前选择按钮 if(eTarget.nodeName.toLowerCase() == 'li' && eTarget.className != 'cur'){  //设置当前图片索引  nIndex = eTarget.innerHTML-1  fnSwitchImg(); } });

 

5. 点击左、右两个按钮也是可以切换图片的,分别添加事件,代码如下:

 eLeftBtn.onclick = function(){ if(nIndex<=0){  return; //如果当前是第一张图片,阻止后续代码执行 } //往左切换图片 nIndex --; fnSwitchImg(); } eRightBtn.onclick = function(){ if(nIndex>=aSelList.length-1){  return; //如果当前是最后一张图片,阻止后续代码执行 } //往右切换图片 nIndex ++; fnSwitchImg(); }

 

6. 给轮播图添加自动切换功能
完成这些步骤之后,轮播图已能正常运行,不过大部分轮播图都是可以自动切换的。所以还需要加上一个定时器功能,设置轮播图自动切换;当鼠标移入轮播图的时候,需要移除定时器;鼠标移出时再次启动定时器。如下所示:

 //轮播图自动切换 timer = setInterval(function(){ //向右切换图片 nIndex ++; //已切换到最后一张图片时,跳回第一张图片 if(nIndex>=5){  nIndex = 0; } fnSwitchImg(); },3000); //鼠标滑入轮播图停止自动切换 eContainer.onmouseenter = function(){ clearInterval(timer); } //鼠标移出轮播图开始自动切换 eContainer.onmouseleave = function(){ //轮播图自动切换 timer = setInterval(function(){  //向右切换图片  nIndex ++;  //已切换到最后一张图片时,跳回第一张图片  if(nIndex>=5){  nIndex = 0;  }  fnSwitchImg(); },3000); }

 

本实例图片切换的动画效果使用的是css3的过渡动画,所以需要给相关元素添加transition样式属性。

 









原文转载:http://www.shaoqun.com/a/512513.html

跨境电商:https://www.ikjzd.com/

拍拍购物:https://www.ikjzd.com/w/2205

lastpass:https://www.ikjzd.com/w/846


轮播图是前端最基本、最常见的功能,不论web端还是移动端,大平台还是小网站,大多在首页都会放一个轮播图效果。本教程讲解怎么实现一个简单的轮播图效果。学习本教程之前,读者需要具备html和css技能,同时需要有简单的javascript基础。本实例效果如下图所示:根据实例效果,需要的元素有图片、中间圆点按钮、左右箭头按钮等。实际html代码如下所示:<divclass="banner
zen cart:zen cart
dmm杂志:dmm杂志
深圳到珠海有什么好玩?:深圳到珠海有什么好玩?
最强澳门攻略:不花一分钱,0元让你免费游澳门:最强澳门攻略:不花一分钱,0元让你免费游澳门
新马泰的地理位置 新马泰在哪里:新马泰的地理位置 新马泰在哪里

没有评论:

发表评论

跨境电商资讯:外贸宣传平台有哪些(出口的

现在很多做外贸的人都非常关注 外贸企业怎么推广 ,而现在推广的途径和平台有很多,企业如果都做,成本和时间精力是一个问题,而且并不是所有的推广渠道都是有用的。今天云程网络就来为大家盘点几个有效的外贸推广渠道。 一、海外社交媒体营销 Facebook,领英等海外社交媒体营销在近几年得...