自动轮播图片点击按钮及底部按钮切换图片

效果展示:

要实现一个点击按钮和底部按钮实现图片的轮播及自动轮播效果,我的思路是这样的:

按钮和图片均使用绝对定位进行布局,img全部堆叠在div中心并设置为透明,通过单独设置样式让其不透明来达到img切换效果,给每个img和对应的点设置index来进行绑定,设置定时器对index值进行修改来达到自动轮播。

CSS:


*{
	margin: 0;
	padding: 0;
	list-style: none;
}
/*定义显示框大小,设置相对定位*/
.son{
	margin:0 auto ;
	width: 400px;
	height: 400px;
	position: relative;
}
/*左右切换按钮设置样式*/
.son .left,.son .right{
	opacity: 0;
	transition: 500ms;
	width: 40px;
	height: 80px;
	background-color: black;
	/* opacity: 0.3; */
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: center;
}
.son:hover .left,.son:hover .right{
	opacity: 0.3;
	
}
/*左按钮设置位置*/
.son .left{
	left: 0;

}
/*右按钮设置位置*/
.son .right{
	right: 0;
}

/*左右按钮样式设置*/
.son .left div, .right div{
	width: 30px;
	height: 30px;
	transform: rotate(45deg);
	border-left: 3px solid white;
	border-bottom: 3px solid white;
}
/*右按钮样式设置*/
.son .right div{
	transform: rotate(-135deg);
}
/*图片设置*/
.son img{
	z-index: 1;
	width: 400px;
	height: 400px;
	position: absolute;
	top: 50%;
	left: 50%;
	opacity: 0;
	transform: translate(-50%,-50%);
	transition: 500ms;
}
/*设置选中样式*/
.son .active{
	opacity: 1;
}
/*下面四个点的位置设置*/
.dian{
	position: absolute;
	z-index: 3;
	bottom: 0;
	left: 50%;
	transform: translateX(-50%);
}
.dian ul{
	width: 100px;
	display: flex;
	justify-content: space-around;	
}
/*四个点的样式设置*/
.dian li{
	transition: 500ms;
	border-radius:100% ;
	width: 15px;
	height: 15px;
	background-color: black;
	border: 1px solid white;
	opacity: 0.5;
}
/*点的选中样式*/
.dian .liactive{
	background-color: aqua;
}

HTML:


		<div class="son">
			<!--左按钮-->
			<div class="left" onclick="pre()">
				<div></div>
			</div>
			<!--图片-->
			<img class="active" src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F2bf1b169-d217-44c3-a5b3-dd00813bc20d%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1705749043&t=23330623af515773e0bf2e01fa5b3cc8" alt="" />
			<img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fac5b9977-78f3-4454-bc17-1f0c054d1e9c%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1705749043&t=0da0b741462bac5a6ce97235dcf16acc" alt="" />
			<img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fce0cca1b-6473-456a-8f60-a772fa8881af%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1705749043&t=cd9f56b59bcd749726ff75bb14a66cc4" alt="" />
			<img src="https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2Fd5d1426d-502b-4a6e-a7dd-92e406fc3ab1%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1705749044&t=12e5455d6508c0b5a7dc6a1ee233c601" alt="" />
			<!--右按钮-->
			<div class="right" onclick="next()">
				<div></div>
			</div>
			<!--底部点-->
			<div class="dian">
				<ul>
					<li class="liactive"></li>
					<li></li>
					<li></li>
					<li></li>
				</ul>
			</div>
		</div>

JavaScript:

// 绑定图片和点
	var img = document.querySelector(".son").getElementsByTagName("img")
	var dian = document.querySelector(".dian").getElementsByTagName("li")
	//	设置一个下标
	let index = 0;
	//绑定img和dian的父类
	var son = document.querySelector(".son")
	// 绑定左右按钮
	var left = document.querySelector('.left')
	var right = document.querySelector('.right')
	//	给图片和点设置下标及点击效果
	for(var i = 0; i < dian.length; i++) {
		img[i].dataset.index = i
		dian[i].dataset.index = i
		//		给点设置点击效果
		dian[i].onclick = isclick
	}
	// 点击图片点切换
	function isclick() {
		//		获取当前的下标
		index = this.dataset.index
		//		清除添加的样式
		for(var i = 0; i < img.length; i++) {
			img[i].classList = ''
			dian[i].classList = ''
		}
		//		添加样式
		this.classList = 'liactive'
		img[index].classList = 'active'
	}
	//上一张图片
	function pre() {
		if(index <= 0) {
			index = 3
		} else {
			index--
		}
		qiehuan()
	}
	//下一张图片
	function next() {
		if(index >= 3) {
			index = 0
		} else {
			index++
		}
		qiehuan()
	}
	// 点击切换图片
	function qiehuan() {
		for(var i = 0; i < img.length; i++) {
			img[i].classList = ''
			dian[i].classList = ''
		}
		dian[index].classList = 'liactive'
		img[index].classList = 'active'
	}
	//	设置自动轮播
	var T = setInterval(next, 1500)
	//	当鼠标移入图片移除轮播效果
	son.onmouseover = function() {
		clearInterval(T)
	}
	//当鼠标移入图片添加移除效果
	son.onmouseout = function() {
		T = setInterval(next, 1500)
	}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值