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>
相关推荐
摸鱼的春哥3 分钟前
Agent教程14:记忆才是Agent开发的核心
前端·javascript·后端
明月_清风5 分钟前
Clipboard API 深度实战:如何同时存入“纯文本”和“富文本”两种格式?
前端·javascript
明月_清风10 分钟前
权限陷阱:为什么你的“点击复制”在某些浏览器或 iframe 里会失效?
前端·javascript
掘金安东尼10 小时前
让 JavaScript 更容易「善后」的新能力
前端·javascript·面试
掘金安东尼10 小时前
用 HTMX 为 React Data Grid 加速实时更新
前端·javascript·面试
灵感__idea12 小时前
Hello 算法:众里寻她千“百度”
前端·javascript·算法
yinuo12 小时前
轻松接入大语言模型API -04
前端
袋鼠云数栈UED团队13 小时前
基于 Lexical 实现变量输入编辑器
前端·javascript·架构
cipher13 小时前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
UrbanJazzerati13 小时前
非常友好的Vue 3 生命周期详解
前端·面试