js——点击切换图片,未实现无缝连接(定时器)

上下切换:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<style type="text/css">
		*{
			padding: 0px;
			margin: 0px;
		}
		li{
			list-style: none;
		}
		.box{
			width: 500px;
			height: 400px;
			margin: 0px auto;
			position: relative;
			border: 5px solid #000000;
			overflow: hidden;
		}
		.list{
			width: 500px;
			height: 400%;
			position: absolute;
			top:0px;
			left:0px;
			transition: 1s;
		}
		img{
			width: 500px;
			height:400px;
			vertical-align: top;
		}
		.btn{
			position: relative;
			top:-100px;
			left: 10%;
		}
		.ospan{
			width:100px;
			height: 20px;
			position: absolute;
			top: 370px;
			left:46%;
		}
		.ospan span{
			width:20px;
			height: 20px;
			float: left;
			border-radius: 50%;
			background: white;
			margin-right: 5px;
		}
		.ospan .active{
			background:red;
		}
	</style>
</head>
<body>
	<div class="box">
		<ul class="list">
			<li><a href=""><img src="img/1.png" alt=""></a></li>
			<li><a href=""><img src="img/2.png" alt=""></a></li>
			<li><a href=""><img src="img/3.png" alt=""></a></li>
			<li><a href=""><img src="img/4.png" alt=""></a></li>
		</ul>
	</div>
	<div class="btn">
		<button type="button">上一张</button>
		<button type="button">下一张</button>
	</div>
	<div class="ospan">
		<span class="active"></span>
		<span></span>
		<span></span>
		<span></span>
	</div>
	<script type="text/javascript">
		//获取ul,整体移动
		var lists=document.querySelector('.list');
		//按钮
		var btns=document.querySelectorAll('.btn button');
		//可以图片数量
		var imgs=lists.querySelectorAll('li');
		var ospans=document.querySelectorAll('.ospan span');
		var num=0;
		var height=400;
		//上一张
		btns[0].onclick=function(){
			num++;
			num==1?num=-(imgs.length-1):num;
			lists.style.top=(num*height)+'px';
			//设置span样式
			for(var i=0;i<ospans.length;i++){
				ospans[i].className='';
			}
			ospans[-num].className='active';
		}
		//下一张
		btns[1].onclick=function(){
			num--;
			-num>(imgs.length-1)?num=0:num;
			lists.style.top=(num*height)+'px';
			//设置span样式
			for(var i=0;i<ospans.length;i++){
				ospans[i].className='';
			}
			ospans[-num].className='active';
		}
		//给span设置事件
		for(var i=0;i<ospans.length;i++){
			ospans[i].index=i;
			ospans[i].onmouseenter=function(){
				for(var i=0;i<ospans.length;i++){
					ospans[i].className='';
				}
				this.className='active';
				num=-(this.index);
				lists.style.top=(num*height)+'px';
			}
		}
	</script>
</body>
</html>

左右切换:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title></title>
	<style type="text/css">
		*{
			margin: 0;
			padding: 0;
		}
		.box{
			width:400px;
			height: 400px;
			margin: 0px auto;
			border: 1px solid #000000;
			position: relative;
			overflow: hidden;
		}
		.list{
			width: 1600px;
			height: 400px;
			position:absolute;
			transition: 1s;
			left: 0;
			top:0;
		}
		.box .list li{
			list-style: none;
			float: left;
		}
		img{
			width: 400px;
			height: 400px;
			vertical-align: top;
		}
		.ospan{
			width:100px;
			height: 20px;
			position: absolute;
			top: 370px;
			left:47%;
		}
		.ospan span{
			width:20px;
			height: 20px;
			float: left;
			border-radius: 50%;
			background: white;
			margin-right: 5px;
		}
		.ospan .active{
			background:red;
		}
	</style>
</head>
<body>
	<div class="box">
		<ul class="list">
			<li>
				<a href="">
					<img src="img/1.png" alt="">
				</a>
			</li>
			<li>
				<a href="">
					<img src="img/2.png" alt="">
				</a>
			</li>
			<li>
				<a href="">
					<img src="img/3.png" alt="">
				</a>
			</li>
			<li>
				<a href="">
					<img src="img/4.png" alt="">
				</a>
			</li>
		</ul>
	</div>
	<div class="ospan">
		<span class="active"></span>
		<span></span>
		<span></span>
		<span></span>
	</div>
	<div class="item" style="width:400px;line-height:50px;margin: 0px auto;text-align: center;background: pink;border: 1px solid #000000;">
		<button type="button">上一张</button>
		<button type="button">下一张</button>
	</div>
	
	<script type="text/javascript">
		var btn=document.querySelectorAll('button');
		var lists=document.querySelector('.list');
		var imgs=lists.querySelectorAll('li');
		var num=0;//定义一个变量num和每次移动的倍数建立联系
		//定义一个变量width和每次移动的定宽建立联系
		var width=400;
		//获取点点的标签
		var ospans=document.querySelectorAll('.ospan span');
		//上一张
		btn[0].onclick=function(){
			//图片向右移,left为正
			num++;
			//当num等于1时回到最后一张图片的倍数,限制num数值
			if(num==1){//==
				num=-(imgs.length-1);
				//0,-1,-2,-3
			}//可以用三目运算判断
			lists.style.left=(num*width)+'px';
			
			//设置span样式
			// var index=-num;
			for(var i=0;i<ospans.length;i++){
				ospans[i].className='';
			}
			ospans[-num].className='active';
		}
		//下一张
		btn[1].onclick=function(){
			//图片向右移,left为负
			num--;
			//当为超出图片的数量时无显示,所以当-num大于图片数量减一;给num赋值为初值
			if(-num>imgs.length-1){
				num=0;
			}
			lists.style.left=(num*width)+'px';
			//-num下标
			for(var i=0;i<ospans.length;i++){
				ospans[i].className='';
			}
			ospans[-num].className='active';
		}
		//设置span样式,事件
		for(var i=0;i<ospans.length;i++){
			//定义一个自定义变量
			ospans[i].index=i;
			//给span添加事件
			ospans[i].onmouseenter=function(){
				//遍历添加清除样式
				for(var i=0;i<ospans.length;i++){
					// ospans[i].style.background='white';
					ospans[i].className='';
				}
				//num和下标建立联系,移动,left为负变的加符号
				num=-(this.index);
				// this.style.background='red';
				this.className='active';
				//点击span切换图片
				lists.style.left=(num*width)+'px';
				
			}
		}
	</script>
</body>
</html>

包装了一小块函数:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title></title>
	<style type="text/css">
		*{
			margin: 0;
			padding: 0;
		}
		.box{
			width:400px;
			height: 400px;
			margin: 0px auto;
			border: 1px solid #000000;
			position: relative;
			overflow: hidden;
		}
		.list{
			width: 1600px;
			height: 400px;
			position:absolute;
			transition: 1s;
			left: 0;
			top:0;
		}
		.box .list li{
			list-style: none;
			float: left;
		}
		img{
			width: 400px;
			height: 400px;
			vertical-align: top;
		}
		.ospan{
			width:100px;
			height: 20px;
			position: absolute;
			top: 370px;
			left:47%;
		}
		.ospan span{
			width:20px;
			height: 20px;
			float: left;
			border-radius: 50%;
			background: white;
			margin-right: 5px;
		}
		.ospan .active{
			background:red;
		}
	</style>
</head>
<body>
	<!--
	var box=function(){
		console.log(1)
	}
	function fn(){
		console.log(2)
	}
	fn();
	-->
	<div class="box">
		<ul class="list">
			<li>
				<a href="">
					<img src="img/1.png" alt="">
				</a>
			</li>
			<li>
				<a href="">
					<img src="img/2.png" alt="">
				</a>
			</li>
			<li>
				<a href="">
					<img src="img/3.png" alt="">
				</a>
			</li>
			<li>
				<a href="">
					<img src="img/4.png" alt="">
				</a>
			</li>
		</ul>
	</div>
	<div class="ospan">
		<span class="active"></span>
		<span></span>
		<span></span>
		<span></span>
	</div>
	<div class="item" style="width:400px;line-height:50px;margin: 0px auto;text-align: center;background: pink;border: 1px solid #000000;">
		<button type="button">上一张</button>
		<button type="button">下一张</button>
	</div>
	
	<script type="text/javascript">
		var btn=document.querySelectorAll('button');
		var lists=document.querySelector('.list');
		var imgs=lists.querySelectorAll('li');
		var num=0;//定义一个变量num和每次移动的倍数建立联系
		//定义一个变量width和每次移动的定宽建立联系
		var width=400;
		//获取点点的标签
		var ospans=document.querySelectorAll('.ospan span');
		//上一张
		btn[0].onclick=function(){
			//图片向右移,left为正
			num++;
			//当num等于1时回到最后一张图片的倍数,限制num数值
			if(num==1){//==
				num=-(imgs.length-1);
				//0,-1,-2,-3
			}//可以用三目运算判断
			lists.style.left=(num*width)+'px';
			
			//设置span样式
			// var index=-num;
			clearspan();
		}
		//下一张
		btn[1].onclick=function(){
			//图片向右移,left为负
			num--;
			//当为超出图片的数量时无显示,所以当-num大于图片数量减一;给num赋值为初值
			if(-num>imgs.length-1){
				num=0;
			}
			lists.style.left=(num*width)+'px';
			//-num下标
			clearspan();
		}
		//设置span样式,事件
		for(var i=0;i<ospans.length;i++){
			//定义一个自定义变量
			ospans[i].index=i;
			//给span添加事件
			ospans[i].onmouseenter=function(){
				//遍历添加清除样式
				for(var i=0;i<ospans.length;i++){
					// ospans[i].style.background='white';
					ospans[i].className='';
				}
				//num和下标建立联系,移动,left为负变的加符号
				num=-(this.index);
				// this.style.background='red';
				this.className='active';
				//点击span切换图片
				lists.style.left=(num*width)+'px';
				
			}
		}
		function clearspan(){
			for(var i=0;i<ospans.length;i++){
				ospans[i].className='';
			}
			ospans[-num].className='active';
		}
	</script>
</body>
</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

资本理念

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值