轮播图排版

本文详细介绍如何使用HTML、CSS和JavaScript创建一个自动轮播的图片展示效果,包括图片切换、指示器和导航按钮的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 编写HTML文件

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>美丽的校园</title>	
		<link rel="stylesheet" href="css/carousel.css" />
		<script src="js/carousel.js"></script>
	</head>
	<body>	
		<div class="carousel" id="carousel">
			<!-- 轮播(Carousel)项目,图片容器 -->
			<div class="carousel-inner">
				<div class="item">
					<img src="images/slide1.jpg" alt="美丽的校园风景" />
					<div class="carousel-caption">美丽的校园风景</div>
				</div>
				<div class="item">
					<img src="images/slide2.jpg" alt="美丽的校园风景" />
					<div class="carousel-caption">美丽的校园风景</div>
				</div>
				<div class="item">
					<img src="images/slide3.jpg" alt="美丽的校园风景" />
					<div class="carousel-caption">美丽的校园风景</div>
				</div>				
			</div>
			<!-- 轮播(Carousel)指示器 -->
			<div class="carousel-indicators">
				<li></li>
				<li></li>
				<li></li>				
			</div>
			<!-- 轮播(Carousel)导航,左右控制按钮 -->
			<a class="carousel-control left" href="#carousel">&lsaquo;</a>
			<a class="carousel-control right" href="#carousel">&rsaquo;</a>
		</div>
	</body>
</html>

2 编写CSS样式

.carousel{
	/* 设置轮播容器的相对定位,作为后代元素carousel-indicators和carousel-control的定位祖先元素 */
	position: relative;
	width: 100%;
	height:514px;
	margin: 0 auto;
}
.carousel-inner{
	position: relative;
	width: 100%;
	overflow: hidden;
}
.carousel-inner>.item{
	position: relative;
	display: none;
	transition: all .6s ease-in-out left;
}
.carousel-inner>.active{
	display: block;
	left: 0;
	-webkit-transform: translate3d(0,0,0);
	transform: translate3d(0,0,0);
}
.carousel-inner>.item>img{
	display: block;
	max-width: 100%;
	height: auto;
	line-height: 1;
	vertical-align: middle;
	border: 0;
}
.carousel-caption{
	position: absolute;
	right: 15%;
	left: 15%;
	bottom: 40px;
	z-index: 10;
	padding: 20px 0;
	color: #fff;
	text-align: center;
	text-shadow: 0 1px 2px rgba(0,0,0,.6);
}
.carousel-indicators{
	position: absolute;
	bottom: 10px;
	left: 50%;
	z-index: 15;
	width: 60%;
	padding-left: 0;
	margin-left: -30%;
	text-align: center;
	list-style: none;
}
.carousel-indicators>li{
	display: inline-block;
	width: 10px;
	height: 10px;
	margin: 1px;
	text-indent: -999px;
	cursor: pointer;
	background: rgba(0,0,0,0);
	border: 1px solid #fff;
	border-radius: 10px;
}
.carousel-indicators .active{
	width:12px;
	height: 12px;
	margin: 0;
	background-color: #fff;
}
.carousel-control{
	position: absolute;
	top: 0;
	bottom: 0;
	left: 0;
	width: 15%;
	font-size: 20px;
	color: #fff;
	text-align: center;
	text-shadow: 0 1px 2px rgba(0,0,0,.6);
	background-color: rgba(0,0,0,0);
}
.carousel-control.left{
	/* 定义轮播导航控制链接背景为左到右透明到黑色半透明渐变色 */
	background-image: linear-gradient(to right,rgba(0,0,0,.5) 0,rgba(0,0,0,.0001) 100%);
	background-repeat: repeat-x;
}
.carousel-control.right{
	right: 0;
	left: auto;
	/* 定义轮播导航控制链接背景为左到右透明到黑色半透明渐变色 */
	background-image: linear-gradient(to right,rgba(0,0,0,.0001) 0,rgba(0,0,0,.5) 100%);
	background-repeat: repeat-x;
}
a.carousel-control{
	font-size: 48px;
	line-height: 514px;;
	text-decoration: none;
}

3 编写JS脚本

window.onload=function(){
	/* 获取所有图片项目 */
	var innerItems=document.getElementsByClassName("item");
	/* 获取所有指示器项目 */
	var indicatoursLists=document.getElementsByTagName("li");
	/* 获取左导航 */
	var controlLeft=document.getElementsByClassName("left")[0];
	/* 获取右导航 */
	var controlRight=document.getElementsByClassName("right")[0];
	/* 设置轮播启动时显示的图片/标题和指示器 */
	var current=0;
	innerItems[current].className="item active";
	indicatoursLists[current].className="acitve";
/* 	轮播函数开始 */
	function slide(){
		for(var i=0;i<indicatoursLists.length;i++){
			/* 设置所有图片不可见 */
			innerItems[i].className="item";
			/* 设置所有指示器不高亮 */
			indicatoursLists[i].className="";			
			indicatoursLists[i].index=i;
			/* 给所有指示器添加单击事件 */
			indicatoursLists[i].onclick=function(){
				/* 如果单击的指示器跟当前页相同,则停止执行,返回 */
				if(this.index==current){
					return false;
				}else{
					current=this.index;
					slide();
				}
			}
		}
		innerItems[current].className="item active";
		indicatoursLists[current].className="active";
		console.log(current);
	}
	/* 左导航绑定单击事件,实现后退 */
	controlLeft.onclick=function(){
		current--;
		if(current==-1){
			current=indicatoursLists.length-1;
		}
		slide();
	}
/* 	右导航绑定单击事件,实现前进 */
	controlRight.onclick=function(){
		current++;
		if(current==indicatoursLists.length){
			current=0;
		}
		slide();
	}
	/* 开始自动轮播 */
	var timer=setInterval(controlRight.onclick,5000);
	/* 鼠标移入到导航停止轮播 */
	controlLeft.onmouseover=controlRight.onmousemove=function(){
		clearInterval(timer);
		controlLeft.style.opacity=1;
		controlRight.style.opacity=1;
	}
	/* 鼠标离开导航恢复轮播 */
	controlLeft.onmouseout=controlRight.onmouseout=function(){
		timer=setInterval(controlRight.onclick,5000);
		controlLeft.style.opacity=0;
		controlRight.style.opacity=0;		
	}	
	slide();	
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值