JS实现图片轮播效果


看了教程后,又写了一个图片轮播页面。

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>JS图片轮播作业</title>
</head>
<style>
	*{
		margin:0;
		padding:0;
	}
	.wrap{
		width:500px;
		height:500px;
		margin:70px auto;
		border:solid 15px gray;
		position:relative;
	}
	.img{
		width:500px;
		height:500px;
		clear:both;

	}
	.div_btn{
		margin:30px auto;
		width:250px;
		height:50px;
		
	}
	.btn1,.btn2{
		width:100px;
		height:30px;
		text-align:center;
		line-height:25px;/*这里用30px为什么不能垂直居中呢??*/
		font-size: 20px;
		color:white;
		background:#b2e281;
	}
	.left{
		float:left;
		clear:both;
	}
	.right{
		float:right;

	}
	.prev,.next  {
		width:40px;
		height:40px;
		margin-top:250px;
		border:solid 1px gray;
		font-size: 25px;
		position:absolute;
		top:0px;
		text-decoration:none;
		color:gray;
		text-align:center;
		line-height:40px;
		background: white;
		filter:alpha(opacity=80%);
		opacity:0.8;
	}
	a:hover{
		filter:alpha(opacity=30%);
		opacity:0.3;
	}
	
	.prev{
		left:10px;
	}
	.next{
		right:10px;
	}
	.p_top,.p_bottom{
		width: 500px;
		height:30px;
		background: black;
		filter:alpha(opacity=60%);
		opacity:0.6;
		position:absolute;
		color:white;
		text-align:center;
		line-height: 30px;
	}
	.p_top{
		position:absolute;
		top:0;
		left:0;
	}
	.p_bottom{
		
		bottom:0;
		left:0;
	}
	#span1{
		position: absolute;
		top:-70px;
		text-align:center;
		line-height:30px;
		width:400px;
		height:30px;
		left:50px;
	}
</style>
<script>
	window.onload = function(){
		var oPrev = document.getElementById('prev');//前一张图片按钮声明
		var oNext = document.getElementById('next');//后一张图片按钮声明
		var oP_top = document.getElementById('p_top');//顶部显示的图片张数声明
		var oP_bottom = document.getElementById('p_bottom');//底部显示的图片信息声明
		var oImg = document.getElementById('img');//插入图片变量声明
		var oBtn1 = document.getElementById('btn1');//循环播放按钮
		var oBtn2 = document.getElementById('btn2');//顺序播放按钮
		var oSpan = document.getElementById('span1');//初始化时候提示文字

		var arrUrl = ['http://t-1.tuzhan.com/71af8ce29e83/c-2/l/2014/01/19/01/dea700465eb94b01b6e68407182e3a99.jpg','http://gb.cri.cn/mmsource/images/2015/03/28/74/14921801016817831234.jpg','http://attachments.gfan.com/attachments2/day_110315/110315113890464bfbd7af0262.jpg','http://img8.zol.com.cn/bbs/upload/24289/24288117_0800.jpg'];
		var arrText = ['清纯AK美女','迷人眼神','暴力美学','狙击步'];
		var num = 0;//声明一个初始值
		var onOff = true;
		function fnTab(){
			oP_top.innerHTML = num + 1 + '/' + arrUrl.length;
			oP_bottom.innerHTML = arrText[num];
			oImg.src = arrUrl[num];
		}//将要经常执行的几个步骤写在一个函数里,便于以后调用
		fnTab();//初始化,先执行一次函数,以显示图片张数和信息
		oBtn1.onclick = function(){
			oSpan.innerHTML = '图片可以循环播放';
			onOff = true;//利用布尔值,来对循环方式进行判别执行,此时为不循环

		};
		oBtn2.onclick = function(){
			oSpan.innerHTML = '图片不可以循环播放';
			onOff = false;//此时布尔值决定按照顺序播放
		};
		
		
		oPrev.onclick = function(){
			num --;
			if(num == -1){
				if(onOff){
					num = arrUrl.length - 1;
				}
				else{
					alert('这已经是第一张图片了,不能再往前了。。');
					num = 0;//这里要指定num值,否则num会一直减小
				}
				
			}
			fnTab();
		};//每次匿名函数后边这个分号要记得写

		oNext.onclick = function(){
			num ++;
			if(num == 4){
				if(onOff){
					num = 0;
				}
				else{
				alert('这已经是最后一张图片啦');
				num = 3;//这里注意还要再次指定num值,否则num会一直增加

			}
			}
			
			fnTab();
		};

	}
</script>
<body>
	<div class="div_btn">
		<input type="button" value="循环播放" id="btn1" class="btn1 left" />
		<input type="button" name="" value="顺序播放" id="btn2" class="btn2 right"/>
		
	</div>
	<div id="wrap" class="wrap">
		<span id="span1">图片轮播有两种方式,一种循环,一种不循环</span>
		<a href="javascript:;" id="prev" class="prev"><</a>
		<a href="javascript:;" id="next" class="next">></a>
		<p class="p_top" id="p_top">图片张数</p>
		<p class="p_bottom" id="p_bottom">文字</p>
		<img src="img/1.jpg" alt="图片" class="img" id="img">
	</div>
</body>
</html>
这次注意写了很多注释,确实任重而道远。写的过程中,第一次深刻理解了利用布尔值的重要性,通过布尔值的选取,来决定轮播的方式。

效果图:




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,可以使用以下代码实现图片轮播效果: HTML代码: ``` <div class="slider"> <img src="image1.jpg" alt="Image 1"> <img src="image2.jpg" alt="Image 2"> <img src="image3.jpg" alt="Image 3"> </div> ``` CSS代码: ``` .slider { position: relative; width: 100%; height: 400px; overflow: hidden; } .slider img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; opacity: 0; transition: opacity 1s ease-in-out; } .slider img.active { opacity: 1; } ``` JavaScript代码: ``` var images = document.querySelectorAll('.slider img'); var currentImage = 0; function changeImage() { images[currentImage].classList.remove('active'); currentImage = (currentImage + 1) % images.length; images[currentImage].classList.add('active'); } setInterval(changeImage, 3000); ``` 这段代码会每隔3秒钟切换一张图片,实现轮播效果。 ### 回答2: 要使用JavaScript实现图片轮播效果,可以按照以下步骤进行操作: 1.HTML结构:创建一个包含图片的容器,通常使用div元素,并为其添加一个特定的ID,以便在JavaScript中进行访问。在容器内部创建一个图片列表,每个图片使用img标签来表示。 2.CSS样式:使用CSS对容器进行样式设置,指定容器的宽度和高度,并隐藏超出容器范围的图片。为了实现图片的切换效果,可以使用CSS3的过渡效果或者动画效果。 3.JavaScript代码:使用JavaScript来控制图片的切换。首先,获取容器和图片列表的引用。然后,创建一个变量来记录当前显示的图片索引。使用定时器函数setInterval来循环切换图片。在定时器回调函数中,根据当前显示的图片索引,修改图片列表的偏移量,使下一张图片显示出来。同时,更新当前显示的图片索引。 4.添加事件监听器:可以为图片列表添加鼠标移入和移出的事件监听器,当鼠标移入时,停止图片切换;当鼠标移出时,重新开始切换。 5.其他功能:根据需求,还可以添加其他功能,例如添加导航按钮,点击按钮可以切换到特定的图片;添加图片指示器,显示当前显示图片的信息等。 总之,使用JavaScript实现图片轮播效果的关键是通过控制图片列表的偏移量来切换图片,并使用定时器来循环切换。同时,可以通过CSS样式和JavaScript事件监听器来增强用户体验和功能。 ### 回答3: 实现图片轮播效果可以使用JavaScript编写代码,以下是一个基本的实现方法: 1. 首先,HTML中需要一个图片展示的区域,可以使用`<div>`标签或者`<img>`标签来实现。 2. 使用JavaScript获取到需要进行轮播的图片列表,可以使用数组来存储,每个元素存储图片的路径。 3. 设置一个计数器,初始值为0,用于记录当前显示的图片索引。 4. 创建一个函数,用于切换图片,可以命名为`changeImage`。 5. 在`changeImage`函数中,通过获取图片展示区域的元素,然后设置其`src`属性为当前图片索引所对应的图片路径。 6. 在`changeImage`函数中,将计数器加1,然后判断是否超出了图片列表的长度,如果超出了,则将计数器重置为0,从头开始循环轮播。 7. 为了实现轮播效果,可以使用`setInterval`函数来设置一个定时器,每隔一定的时间间隔调用一次`changeImage`函数。 下面是一个示例代码: ```html <body> <div id="imageArea"> <img id="image" src=""> </div> <script> var imageList = ["image1.jpg", "image2.jpg", "image3.jpg"]; // 图片列表 var currentIndex = 0; // 当前显示的图片索引 function changeImage() { var imageArea = document.getElementById("imageArea"); var image = document.getElementById("image"); image.src = imageList[currentIndex]; currentIndex++; if (currentIndex >= imageList.length) { currentIndex = 0; // 重置索引,从头开始循环轮播 } } setInterval(changeImage, 2000); // 每隔2秒切换一次图片 </script> </body> ``` 通过以上的代码,每隔2秒钟,图片会自动切换一次,实现了简单的图片轮播效果。可以根据实际需求修改代码,适配自己的图片列表和时间间隔。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值