jQuery实现图片轮播效果

实现图片轮播效果,打开页面,每隔3秒切换至下一张图片;光标移入数字时,播放相应图片。

思路:

(1)获取需要轮播的图片和展示的div。

(2)使用animate设置left值,每次移动宽度为展示div的宽度。

(3)播放图片时,对应数字应用红色背景样式,其他数字移除该样式。

效果:

代码:

html 复制代码
<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>Document</title>
		<style>
			* {
				margin: 0;
				padding: 0;
			}

			img {
				width: 800px;
				height: 400px;
			}

			.banner {
				width: 800px;
				height: 400px;
				border: 1px solid black;
				margin: 50px auto;
				overflow: hidden;
				cursor: pointer;
				position: relative;
			}

			.banner .slide {
				width: 4800px;
				height: 400px;
				position: absolute;
				left: -600px;
			}

			.banner .slide .pic {
				width: 800px;
				height: 400px;
				line-height: 400px;
				text-align: center;
				float: left;
				font-size: 72px;
				color: white;
			}

			.banner .numbers {
				width: 150px;
				height: 30px;
				position: absolute;
				bottom: 1%;
				left: 85%;
				margin-left: -50px;
				z-index: 2;
			}

			.banner .numbers .number {
				width: 20px;
				height: 20px;
				float: left;
				margin: 5px 6px;
				cursor: pointer;
				background-color: white;
				color: black;
				text-align: center;
				border: 1px solid red;
			}

			.banner .numbers .on {
				background-color: red;
				color: #fff;
				font-weight: bolder;
			}
		</style>
	</head>
	<body>
		<div class="banner">
			<div class="slide">
				<div class="pic"><img src="./4.png"></div>
				<div class="pic"><img src="./1.png"></div>
				<div class="pic"><img src="./2.png"></div>
				<div class="pic"><img src="./3.png"></div>
				<div class="pic"><img src="./4.png"></div>
				<div class="pic"><img src="./1.png"></div>
			</div>

			<div class="numbers">
				<span class="number on">1</span>
				<span class="number">2</span>
				<span class="number">3</span>
				<span class="number">4</span>
			</div>

		</div>
		<script src="jquery-1.12.4.js" type="text/javascript" charset="utf-8"></script>
		<script type="text/javascript">
			var index = 1; 
			var timer = null;
			var size = $('.slide').children().size();
			var picWidth = $('.pic').width();
			$('.banner').mouseover(function() {
				clearInterval(timer);
			});
			$('.banner').mouseleave(function() {
				autoSlide();
			});
			$('.slide').mouseleave();
			function autoSlide() {
				timer = setInterval(function() {
					index++; 
					changeImg();
					changeNums();
				}, 3000); 
			};
			function changeImg() {
				var slideWidth = -1 * picWidth * index; 
				$('.slide').animate({
					'left': slideWidth + 'px'
				}, 500);
				if (index >= size - 1) {
					$('.slide').animate({
						'left': -picWidth + 'px'
					}, 0);
					index = 1;
				}
				if (index < 1) {
					$('.slide').animate({
						'left': -(size - 2) * picWidth + 'px'
					}, 0);
					index = size - 2;
				}
			}
			function changeNums() {
				$('.number').eq(index - 1).addClass('on').siblings().removeClass('on');
			}
			$('.number').mouseover(function(event) {
				var target = event.target;
				index = $(target).index() + 1;
				changeImg();
				changeNums();
			});
		</script>
	</body>
</html>
相关推荐
treasure14013 小时前
【复古】浅尝Django前后端不分离
前端·css·python·django·bootstrap·html·web
jay神14 小时前
基于 YOLOv8 的手势识别系统(Web 版)
前端·人工智能·python·深度学习·yolo·计算机视觉·计算机毕业设计
屏什么录14 小时前
长时间录屏中途崩溃:MP4 打不开的 6 种救回方案与参数设置
前端·音视频开发
code_Bo14 小时前
不只命令行:我把跨 Agent 会话同步做成了桌面应用
前端·javascript·后端
kyriewen14 小时前
AI 能把页面写出来,为什么改个需求就开始崩?
前端·javascript·人工智能
OpsEye14 小时前
同一套用例跑两个大模型接口,差异到底出在哪
javascript·ai编程
X1A0RAN15 小时前
PPT 图片批量处理教程:导出全部幻灯片 · 提取全部素材
开发语言·javascript·powerpoint
涛涛ing15 小时前
2026年最值得关注的前端变化,藏在“默认值”里
前端
量化分析码农16 小时前
股票历史数据的复权参数对照:多级别返回的字段与数值差异
java·javascript·后端
亿元程序员17 小时前
太牛了!这AI做出来的游戏,居然还能变现!
前端