首页 前端知识 jQuery学习:点击进行翻页

jQuery学习:点击进行翻页

2024-04-29 11:04:14 前端知识 前端哥 303 944 我要收藏

加上 一个翻页为数值的判断 获取点击的是哪个元素

				//点击进行切换到对应的页面
				$a.click(function() {
					//目标页面的下标
					var targetInex = $(this).index();
					//只有当点击的不是当前页面才可以进行翻页
					if (targetInex != index) {
						nextPage(targetInex);
					}


				})

 

 

<!DOCTYPE html>
<html lang="en">

	<head>
		<meta charset="UTF-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge">
		<meta name="viewport" content="width=device-width, initial-scale=1.0">
		<title>Document</title>
		<style>
			* {
				margin: 0;
				padding: 0;
			}

			#outer {
				width: 420px;
				height: 300px;
				background-color: #bfa;
				margin: 50px auto;
				padding: 10px 0;
				position: relative;
				overflow: hidden;

			}

			#imgList {
				list-style-type: none;
				/* 开启定位移动 */
				position: absolute;
				/* 	每次显示到下一张图片 420px */
				/* 这是真正的第一张图片 */
				left: -420px;

			}

			#imgList li {
				float: left;
				margin: 0 10px;

			}

			#imgList img {
				width: 400px;
				height: 300px;

			}

			#navDiv {
				position: absolute;
				bottom: 15px;
				/* 
			outer:宽度420
			navDiv:(宽度 :超链接宽度+margin*2)*6个=15+10=25*6=150
			420-150=270
			270/2=135_不能写死
			 */
				/* left: 135px; */
			}

			#navDiv a {
				float: left;
				width: 15px;
				height: 15px;
				background-color: red;
				margin: 0 5px;
				opacity: 0.5;
				/* 	兼容IE8的半透明 */
				filter: alpha(opacity=50);
			}

			#navDiv .on {
				background: black;
			}

			#navDiv a:hover {
				background-color: black;
			}

			#prev {
				position: absolute;
				bottom: 150px;
				font-size: 12px;
				text-align: center;
				line-height: 15px;
				text-decoration: none;
				width: 15px;
				height: 15px;
				background: yellow;
				float: left;

			}

			#prev:hover {
				background: aqua;
				color: red;
			}

			#next {
				bottom: 150px;
				position: absolute;
				font-size: 12px;
				text-align: center;
				line-height: 15px;
				text-decoration: none;
				width: 15px;
				height: 15px;
				background: yellow;
				left: 400px;

			}

			#next:hover {
				background: aqua;
				color: red;
			}
		</style>
		<script src="js/jquery-3.6.1.js"></script>
		<script src="../javascript/tool动画.js"></script>
		<script>
			$(function() {
				var $outer = $('#outer');
				var $imgList = $('#imgList');
				var $a = $('#navDiv>a');
				var $next = $('#next');
				var $prev = $('#prev');
				var pageWidth = 420; //移动一页的宽度
				var TIME = 400; //翻页持续时间
				var ItemTime = 20; //单元移动的间隔时间 
				var imgCount = $a.length; //需要显示图片的总数量
				var index = 0; //当前图片的下标 为了让链接与图片对上
				var $navDiv = $('#navDiv');
				$navDiv.css('left', ($outer.width() - $navDiv.width()) / 2);

				//设置图片容器的宽度
				$imgList.css('width', pageWidth * $imgList.children().length);
				//点击向左向右的图标进行平滑翻页
				$prev.click(function() {
					nextPage(false); //是否翻到下一页

				});
				$next.click(function() {
					nextPage(true); //是否翻到下一页 是上页
				}); /*  */
				//每隔3s自动播放
				var num1 = setInterval(function() {
					nextPage(true);
				}, 1000);
				//当初鼠标移入 移除 对定时器进行操作
				$outer.hover(function() {
					//清除定时器
					clearInterval(num1);
				}, function() { //移出的时候启动定时器
					num1 = setInterval(function() {
						nextPage(true);
					}, 1000);

				})
				//点击进行切换到对应的页面
				$a.click(function() {
					//目标页面的下标
					var targetInex = $(this).index();
					//只有当点击的不是当前页面才可以进行翻页
					if (targetInex != index) {
						nextPage(targetInex);
					}


				})
				//next 值为bul 指定下标页面
				function nextPage(next) {
					//得到当前的图片位置 然后进行偏移
					//相对父元素左上角的坐标
					var curLeft = $imgList.position().left;
					//总偏移量 offest
					var offest = 0;
					if (typeof next === 'boolean') {
						offest = next ? -pageWidth : pageWidth;
					} else {
						offest = -(next - index) * pageWidth; //大于向后翻页 小于向左翻页
					}

					//目标位置偏移量
					var targetLeft = curLeft + offest;
					//总时间 TIME
					//单元移动的间隔时间 ItemTime=20
					//单元移动偏移量
					var itemOffest = offest / (TIME / ItemTime);
					//使用循环定时器--到达目标停止定时器

					var num1 = setInterval(function() {
						//计算最新的left
						curLeft += itemOffest; //先增加 再判断
						if (curLeft === targetLeft) { //到达目标位置

							//如果到最右边 要跳转到左边第一张 实际上是同一
							if (curLeft === (imgCount + 1) * -pageWidth) {
								curLeft = -pageWidth; //-420
							} else if (curLeft === 0) {
								//如果到最左边 要跳转到右边第一张 实际上是 同一 张
								curLeft = -imgCount * pageWidth;
							}
							clearInterval(num1);

						}
						//设置偏移
						$imgList.css("left", curLeft);

					}, ItemTime);
					//更新链接
					upadteA(next); //决定显示上一个点还是下一个点
				};

				function upadteA(next) {
					//计算出目标点的下标
					var targeIndex = 0;
					//0-5
					if (typeof next === 'boolean') {
						if (next) {
							targeIndex = index + 1;

							if (targeIndex === imgCount) { //6 实际上需要去第一张
								targeIndex = 0;
							}
						} else {
							targeIndex = index - 1;
							if (targeIndex === -1) { //实际上需要去第6张
								targeIndex = imgCount - 1;
							}
						}
					}else{
						targeIndex=next;
					}

					//将当前位置的index对应的样式进行清除
					//$a.eq(index).removeClass('on');
					//或者
					$a[index].className = '';
					$a[targeIndex].className = 'on';
					//并添加样式
					//$a.eq(targeIndex).addClass('on');

					//将index更新为目标的下标
					index = targeIndex;
				};
			})
		</script>
	</head>

	<body>
		<div id="outer">
			<ul id="imgList">
				<li>
					<img src="../img/a5.png" alt="图片">
				</li>
				<li>
					<img src="../img/a0.png" alt="图片">
				</li>
				<li>
					<img src="../img/a1.png" alt="图片">
				</li>
				<li>
					<img src="../img/a2.png" alt="图片">
				</li>
				<li>
					<img src="../img/a3.png" alt="图片">
				</li>
				<li>
					<img src="../img/a4.png" alt="图片">
				</li>
				<li>
					<img src="../img/a5.png" alt="图片">
				</li>
				<li>
					<img src="../img/a0.png" alt="图片">
				</li>

			</ul>
			<div id="navDiv">
				<a href="javascript:;" class="on"></a>
				<a href="javascript:;" class=""></a>
				<a href="javascript:;" class=""></a>
				<a href="javascript:;" class=""></a>
				<a href="javascript:;" class=""></a>
				<a href="javascript:;" class=""></a>
			</div>
			<a href="javascript:;" id="prev">
				< </a>
					<a href="javascript:;" id="next"> > </a>
		</div>


	</body>

</html>

转载请注明出处或者链接地址:https://www.qianduange.cn//article/6265.html
标签
评论
发布的文章

@JsonCreator和@JsonValue

2024-05-05 22:05:05

Python 字符串转换为 JSON

2024-05-05 22:05:00

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!