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>
相关推荐
落霞的思绪1 小时前
CSS复习
前端·css
咖啡の猫3 小时前
Shell脚本-for循环应用案例
前端·chrome
百万蹄蹄向前冲5 小时前
Trae分析Phaser.js游戏《洋葱头捡星星》
前端·游戏开发·trae
朝阳5816 小时前
在浏览器端使用 xml2js 遇到的报错及解决方法
前端
GIS之路6 小时前
GeoTools 读取影像元数据
前端
ssshooter6 小时前
VSCode 自带的 TS 版本可能跟项目TS 版本不一样
前端·面试·typescript
你的人类朋友6 小时前
【Node.js】什么是Node.js
javascript·后端·node.js
Jerry7 小时前
Jetpack Compose 中的状态
前端
dae bal8 小时前
关于RSA和AES加密
前端·vue.js
柳杉8 小时前
使用three.js搭建3d隧道监测-2
前端·javascript·数据可视化