ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

JavaScript实现轮播图效果

JavaScript实现轮播图效果

演示

在这里插入图片描述

思路

  1. 准备轮播数据
  2. 获取需要改变的元素对象
    • 图片
    • 文本
    • 版面颜色
    • 圆点
    • 按钮
  3. 构造函数
    • index表示当前下标,左移index–,右移index++,注意边界处理。
    • 完成index更改处理后通过轮播数据更改元素

一、HTML搭建

创建基本的HTML结构,包含轮播图容器、图片展示区,控制按钮,显示圆点:

<div class="slider"><img src="image/1.jpg" alt=""><div class="board"><p>Image 1</p><!--控制按钮--><div class="btn"><button class="left"><</button><button class="right">></button></div><!--圆点--><div class="dots"><span class="dot active"></span><span class="dot"></span><span class="dot"></span><span class="dot"></span><span class="dot"></span></div></div></div>

二、CSS样式设计

添加基本样式,可以自定义修改

        * {margin: 0;padding: 0;}.slider {position: relative;;height: 300px;width: 500px;background-color: aqua;}img {height: 100%;width: 100%;}.board {position: absolute;height: 50px;width: 100%;background-color: gray;bottom: 0px;}.btn {position: absolute;right: 20px;top: 0;}.left,.right{cursor:pointer}.dot{height: 5px;width: 5px;background-color: transparent;border-radius: 50%;border: 2px solid white;display: inline-block;margin: 5px;}.active{background-color: white;}

三、JavaScript编辑

1. 准备轮播数据(数组呈现)

const sliderinfor=[{img:'image/1.jpg',text:'Image 1',color:'aqua'},{img:'image/2.jpg',text:'Image 2',color:'red'},{img:'image/3.jpg',text:'Image 3',color:'green'},{img:'image/4.jpg',text:'Image 4',color:'blue'},{img:'image/5.jpg',text:'Image 5',color:'yellow'},]

2. 获取DOM元素

		const img=document.querySelector('img');const text=document.querySelector('.board p');const color=document.querySelector('.board');const dots = document.querySelectorAll('.dot');

3. 实现左右切换函数

		let index = 0;function fl(){dots[index].classList.remove('active');if(index==0){index=sliderinfor.length-1;}else{index--;}img.src=sliderinfor[index].img;text.innerHTML=sliderinfor[index].text;color.style.backgroundColor=sliderinfor[index].color;dots[index].classList.add('active');}function fr(){dots[index].classList.remove('active');if(index==sliderinfor.length-1){index=0;}else{index++;}img.src=sliderinfor[index].img;text.innerHTML=sliderinfor[index].text;color.style.backgroundColor=sliderinfor[index].color;dots[index].classList.add('active');}

4. 添加事件监听

		//获取事件源const leftBtn = document.querySelector('.left');const rightBtn = document.querySelector('.right');//添加事件监听leftBtn.addEventListener('click',fl)rightBtn.addEventListener('click',fr)

四、完整代码

代码:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>* {margin: 0;padding: 0;}.slider {position: relative;;height: 300px;width: 500px;background-color: aqua;}img {height: 100%;width: 100%;}.board {position: absolute;height: 50px;width: 100%;background-color: gray;bottom: 0px;}.btn {position: absolute;right: 20px;top: 0;}.left,.right{cursor:pointer}.dot{height: 5px;width: 5px;background-color: transparent;border-radius: 50%;border: 2px solid white;display: inline-block;margin: 5px;}.active{background-color: white;}</style>
</head><body><div class="slider"><img src="image/1.jpg" alt=""><div class="board"><p>Image 1</p><div class="btn"><button class="left"><</button><button class="right">></button></div><div class="indicators"><span class="dot active"></span><span class="dot"></span><span class="dot"></span><span class="dot"></span><span class="dot"></span></div></div></div><script>const sliderinfor=[{img:'image/1.jpg',text:'Image 1',color:'aqua'},{img:'image/2.jpg',text:'Image 2',color:'red'},{img:'image/3.jpg',text:'Image 3',color:'green'},{img:'image/4.jpg',text:'Image 4',color:'blue'},{img:'image/5.jpg',text:'Image 5',color:'yellow'},]const img=document.querySelector('img');const text=document.querySelector('.board p');const color=document.querySelector('.board');const dots = document.querySelectorAll('.dot');let index = 0;function fl(){dots[index].classList.remove('active');if(index==0){index=sliderinfor.length-1;}else{index--;}img.src=sliderinfor[index].img;text.innerHTML=sliderinfor[index].text;color.style.backgroundColor=sliderinfor[index].color;dots[index].classList.add('active');}function fr(){dots[index].classList.remove('active');if(index==sliderinfor.length-1){index=0;}else{index++;}img.src=sliderinfor[index].img;text.innerHTML=sliderinfor[index].text;color.style.backgroundColor=sliderinfor[index].color;dots[index].classList.add('active');}const leftBtn = document.querySelector('.left');const rightBtn = document.querySelector('.right');leftBtn.addEventListener('click',fl)rightBtn.addEventListener('click',fr)</script>
</body></html>

!尤其要注意边界处理

返回列表