JS代码实现页面切换效果(上一页+具体页+下一页)

HTML+CSS部分
添加所有页面,和上一页、具体页、下一页的按钮,
设置div样式,默认第一页显示,其他页隐藏。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style>
			.item {
				display: none;
				width: 300px;
				height: 400px;
				overflow: hidden;
				position: relative;
			}			
			.item>img {
				width: 100%;
				height: auto;
				position: absolute;
				top: 0;
				left: 0;
				right: 0;
				bottom: 0;
				margin: auto;
			}	
			.item.active {
				display: block;
			}
		</style>
	</head>
	<body>
		<div>
			<button class="prev" >上一页</button>
			<button class="btn">1</button>
			<button class="btn">2</button>
			<button class="btn">3</button>
			<button class="btn">4</button>
			<button class="next" >下一页</button>
		</div>
		<div>
			<div class="item active"><img src="img/1.png" height="1191" width="820" /></div>
			<div class="item"><img src="img/2.png" height="1191" width="820" /></div>
			<div class="item"><img src="img/3.png" height="1191" width="820" /></div>
			<div class="item"><img src="img/4.png" height="1191" width="820" /></div>
		</div>
 </body>
</html>

js部分
通过按键来实现页面的功能

<script type="text/javascript">
			//封装函数、图片显示的部分、传入获取到的div,和被点击的序号
			function toggle(eles, active) {
				for(var i = eles.length; i--;) {
					eles[i].className = "item"; //先让所有div隐藏
				}
				eles[active].className = "item active";//再让被点击的序号对应的div 显示
			}
			//获取按键和div
			var aBtn = document.getElementsByClassName("btn");
			var aIem = document.getElementsByClassName("item");
			var prev = document.getElementsByClassName("prev");
			var next =  document.getElementsByClassName("next");
			var nowPage = 0; //定义当前页,默认值为0;
			    
			for(var i = aBtn.length; i--;) {
					aBtn[i].tab = i;
					aBtn[i].onclick=function(){
						toggle(aIem,this.tab);
						nowPage=this.tab; //被点击后,保存当前页的序号
					}
			}
		   //下一页
			next[0].onclick = function () {			
					nowPage++;					
					nowPage %= aBtn.length;
					toggle(aIem,nowPage);
			}
			//上一页
			prev[0].onclick=function(){
				nowPage--;
				if(nowPage ==-1){
					nowPage = aBtn.length-1;
				}
				toggle(aIem,nowPage);				
			}
		</script>
您可以使用JavaScript中的move()函数来实现页面左右切换。这个函数可以接受两个参数,第一个参数是要移动的元素的DOM对象,第二个参数是要移动的距离。 以下是一个示例代码实现当点击左右箭头时,页面向左或向右移动: HTML代码: ``` <div class="container"> <div class="page">Page 1</div> <div class="page">Page 2</div> <div class="page">Page 3</div> </div> <button id="prevBtn">上一页</button> <button id="nextBtn">下一页</button> ``` CSS代码: ``` .container { width: 300px; overflow: hidden; white-space: nowrap; } .page { display: inline-block; width: 300px; height: 200px; } #prevBtn, #nextBtn { display: inline-block; margin-top: 20px; } ``` JavaScript代码: ``` var container = document.querySelector('.container'); var pages = document.querySelectorAll('.page'); var prevBtn = document.getElementById('prevBtn'); var nextBtn = document.getElementById('nextBtn'); var pageIndex = 0; var pageWidth = pages[0].offsetWidth; prevBtn.addEventListener('click', function() { pageIndex--; if (pageIndex < 0) { pageIndex = 0; } move(container, -pageIndex * pageWidth); }); nextBtn.addEventListener('click', function() { pageIndex++; if (pageIndex > pages.length - 1) { pageIndex = pages.length - 1; } move(container, -pageIndex * pageWidth); }); function move(element, distance) { var duration = 500; // 移动持续时间 var interval = 10; // 移动时间间隔 var frames = duration / interval; // 移动帧数 var speed = distance / frames; // 移动速度 var left = element.offsetLeft; // 当前距离左侧的距离 var to = left + distance; // 移动到的目标位置 function animate() { if ((distance > 0 && left < to) || (distance < 0 && left > to)) { left += speed; element.style.left = left + 'px'; setTimeout(animate, interval); } else { element.style.left = to + 'px'; } } animate(); } ``` 在这个示例中,我们首先获取了容器元素和页面元素,然后为左右箭头绑定了点击事件。当点击左箭头时,pageIndex减1,当点击右箭头时,pageIndex加1。然后调用move()函数,将容器元素向左或向右移动到对应的页面位置。 在move()函数中,我们计算了移动的速度和距离,然后使用递归函数实现了动画效果。在每一帧中,我们都将容器元素的left值加上移动速度,从而实现了平滑的移动效果
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值