用JS实现图片切换、定时器、轮播图

一. 图片切换

实现功能:

  1. 当点击“下一页”时,跳转到下一张图片;
  2. 当点击“上一页”时,跳转到上一张照片;
  3. 显示当前页数/总页数,如:2/6。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>图片切换</title>
		<style type="text/css">
			*{
				margin: 0;
				padding:0;
			}
			#outer{
				width: 500px;
				margin: 50px auto;
				padding: 10px;
				text-align: center;
			}
		</style>
	
		<script type="text/javascript">
			window.onload = function(){
				var prev = document.getElementById('prev');
				var next = document.getElementById('next');
				var img = document.getElementsByTagName("img")[0];
				var imgArr = ["img/01.jpg","img/02.jpg","img/03.jpg","img/04.jpg","img/05.jpg","img/06.jpg"]
				//创建一个变量,来保存当前正在显示的图片的索引
				var index = 0;
				var info = document.getElementById("info");
				info.innerHTML = (index+1)+'/' + imgArr.length;	
				prev.onclick = function(){
					index--;
					if(index < 0){
						index = imgArr.length-1;
					}
					img.src = imgArr[index];
					info.innerHTML = (index+1)+'/' + imgArr.length;
				}
				next.onclick = function(){
					index++;
					if(index > imgArr.length-1){
						index = 0;
					}
					img.src = imgArr[index];
					info.innerHTML = (index+1)+'/' + imgArr.length;
				}
			}
		</script>
	</head>
	
	<body>
		<div id="outer">
			<img src="img/01.jpg" width="500px" alt="太子悦神"/>
			<p id="info"></p>
			<button id="prev">上一张</button>
			<button id="next">下一张</button>
		</div>
	</body>
</html>

效果图:
**在这里插入图片描述**

二. 定时器

实现功能:

  1. 按下“开始”键后,图片自动进行切换;
  2. 按下“停止”键后,图片停止切换,并停留在当前页面。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>定时器</title>
		<script type="text/javascript">
			window.onload = function(){
				var img = document.getElementById("img");
				var imgArr = ["img/01.jpg", "img/02.jpg", "img/03.jpg", "img/04.jpg", "img/05.jpg", "img/06.jpg"];
				var index = 0;
				var timer; 
				var btn1 = document.getElementById("btn1");
				btn1.onclick = function(){
					clearInterval(timer);
					timer = setInterval(function(){
						index ++;
						index = index % imgArr.length;
						img.src = imgArr[index];
					},1000);
				}
				var btn2 = document.getElementById("btn2");
				btn2.onclick = function(){
					clearInterval(timer);
				}
			}
		</script>
	</head>
	
	<body>
		<img src="img/01.jpg" id="img" style="width: 300px;"/><br />
		<button id="btn1">开始</button>
		<button id="btn2">停止</button>	
	</body>
</html>

效果图:
在这里插入图片描述

三. 轮播图

实现功能:

  1. 自动切换图片;
  2. 点击某一张图片时,可跳转到该图片。
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>轮播图</title>
		<style type="text/css">
			*{
				margin: 0px;
				padding: 0px;
			}
			
			#outer{
				width: 520px;
				height: 350px;
				margin: 0 auto;
				/*background-color: #bfa;*/
				padding: 10px 0;
				position: relative;
				overflow: hidden;
			}
			
			#imgList{
				list-style: none;
				position: absolute; 
			}
			
			#imgList li{
				float: left;
				margin: 0 10px;
			}
			
			#navDiv{
				position: absolute;
				bottom: 15px;
			}
			#navDiv a{
				float: left;
				width: 15px;
				height: 15px;
				background-color: red;
				margin: 0 5px;
				opacity: 0.5;
				filter: alpha(opacity=50); 
			}

			#navDiv a:hover{
				background-color: black;
			}
		</style>
		
		<script type="text/javascript">
			window.onload = function(){
				var imgList = document.getElementById("imgList");
				var imgArr = document.getElementsByTagName("img");
				imgList.style.width = 520*imgArr.length + "px";
				var navDiv = document.getElementById("navDiv");
				var outer =document.getElementById("outer");
				navDiv.style.left = (outer.offsetWidth - navDiv.offsetWidth)/2 + "px";
				var index = 0;
				var allA = document.getElementsByTagName("a");
				allA[index].style.backgroundColor = "black";
		
		/* 功能:点击超链接,切换到指定的图片*/
				function move(divobj, attr, target, speed, callback){
					var current = parseInt(getStyle(divobj,attr));
					if(current > target){
						speed = -speed;
					}		
					clearInterval(divobj.timer);	
					divobj.timer =  setInterval(function(){
						var oldValue = parseInt(getStyle(divobj,attr)) ;	
						var newValue = oldValue + speed;		
						if(speed<0 && newValue < target || speed>0 && newValue >target){
							newValue = target;
						}						
						divobj.style[attr] = newValue +"px";
						if(newValue == target){
							clearInterval(divobj.timer);
							callback && callback();
						}
					},30);					
				};
				
				function getStyle(obj,name){
					if(window.getComputedStyle){
						return getComputedStyle(obj,null)[name];						
					}else{
						return obj.currentStyle[name];						
					}
				}
			
				for(var i=0; i<allA.length; i++){				
					allA[i].num = i;		
					allA[i].onclick = function(){			
						clearInterval(timer);
						index = this.num;
						setA();	
						move(imgList, "left", -520*index , 20 , function(){
							autoChange();					
						});	
					}
				}	
				autoChange();
				
				function setA(){	
					if(index >= imgArr.length - 1){
						index = 0;   //则将index设置为0
						imgList.style.left = 0;
					}
					for(var i=0; i<allA.length; i++){
						allA[i].style.backgroundColor = "";
					}
					allA[index].style.backgroundColor = "black";
				}
				var timer;
				
			//创建一个函数,用来定时去切换图片			
				function autoChange(){	
					timer = setInterval(function(){
						index++;
						index %= imgArr.length;		
						move(imgList, "left", -520*index , 20 , function(){
							setA();
						})
					},2000);
				}	
			}
		</script>
	</head>
	
	<body>
		<div id="outer">
			<ul id="imgList">
				<li><img src="img/01.jpg"/></li>
				<li><img src="img/02.jpg"/></li>
				<li><img src="img/03.jpg"/></li>
				<li><img src="img/04.jpg"/></li>
				<li><img src="img/05.jpg"/></li>
				<li><img src="img/06.jpg"/></li>
				<li><img src="img/01.jpg"/></li>
			</ul>

			<div id="navDiv">
				<a href="javascript:;"></a>
				<a href="javascript:;"></a>
				<a href="javascript:;"></a>
				<a href="javascript:;"></a>
				<a href="javascript:;"></a>
				<a href="javascript:;"></a>
			</div>
		</div>	
	</body>
</html>

效果图:
在这里插入图片描述

  • 26
    点赞
  • 147
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个使用 JavaScript 实现循环定时器五张不同图片的示例代码: HTML 代码: ```html <div class="slideshow-container"> <div class="slideshow-images"> <img src="img/image1.jpg" alt="Image 1"> <img src="img/image2.jpg" alt="Image 2"> <img src="img/image3.jpg" alt="Image 3"> <img src="img/image4.jpg" alt="Image 4"> <img src="img/image5.jpg" alt="Image 5"> </div> <a class="prev">❮</a> <a class="next">❯</a> </div> ``` CSS 代码: ```css .slideshow-container { position: relative; margin: auto; width: 80%; height: 400px; } .slideshow-images { display: flex; position: absolute; top: 0; left: 0; width: 100%; height: 100%; } .slideshow-images img { width: 100%; height: 100%; object-fit: cover; } .prev, .next { position: absolute; top: 50%; transform: translateY(-50%); font-size: 30px; font-weight: bold; padding: 10px; color: white; background-color: rgba(0, 0, 0, 0.5); cursor: pointer; user-select: none; } .prev { left: 0; } .next { right: 0; } ``` JavaScript 代码: ```js const images = document.querySelectorAll('.slideshow-images img'); const prevBtn = document.querySelector('.prev'); const nextBtn = document.querySelector('.next'); let currentIndex = 0; // 定义切换图片的函数 function showImage(index) { images.forEach(image => { image.style.display = 'none'; }); images[index].style.display = 'block'; currentIndex = index; } // 切换到下一张图片 function nextImage() { currentIndex++; if (currentIndex >= images.length) { currentIndex = 0; } showImage(currentIndex); } // 切换到上一张图片 function prevImage() { currentIndex--; if (currentIndex < 0) { currentIndex = images.length - 1; } showImage(currentIndex); } // 定义定时器,每隔 3 秒切换一次图片 let timer = setInterval(nextImage, 3000); // 当用户鼠标悬停在图片上时,暂停定时器 images.forEach(image => { image.addEventListener('mouseover', () => { clearInterval(timer); }); }); // 当用户鼠标移开图片时,重新启动定时器 images.forEach(image => { image.addEventListener('mouseout', () => { timer = setInterval(nextImage, 3000); }); }); // 当用户点击左右箭头时,切换到上一张或下一张图片 prevBtn.addEventListener('click', prevImage); nextBtn.addEventListener('click', nextImage); ``` 需要注意的是,上述代码中的图片路径和容器宽度、高度等样式需要根据实际情况进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值