只用CSS的轮播图?快来看一看!

设计

在这里插入图片描述

  • 一个主容器+一个图形链;
  • 图像加分步动画实现轮播;
  • 鼠标移上去可暂停;
  • 显示当前图片页码;

写出html基本结构

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>css轮播</title>
</head>
<body>
	<!--轮播-->
	<div class="scroll-photo">
		<!--图片组-->
		<div class="photos">
			<img src="./photo/1.jpg" alt="">
			<img src="./photo/2.jpg" alt="">
			<img src="./photo/3.jpg" alt="">
			<img src="./photo/4.jpg" alt="">
		</div>
		<!--页码-->
		<div class="index">
			<ul>
				<li>1</li>
				<li>2</li>
				<li>3</li>
				<li>4</li>
			</ul>
		</div>
	</div>
</body>
</html>

加一些基本样式

<style type="text/css">
	*{padding: 0;margin: 0;}
	body{
		width: 100vw;
		height: 100vh;
		background: #82ccdd;
		display: flex;
		justify-content: center;
		align-items: center;
	}

	div.scroll-photo{
		position: absolute;
		width: 400px;
		height: 300px;
		overflow: hidden;
	}

	div.photos{
		position: absolute;
		width: 1600px;
		height: 300px;
		z-index: -1;
	}

	div.photos img{
		position: relative;
		width: 400px;
		height: 300px;
		float: left;
	}

	div.index ul{
		position: absolute;
		display: grid;
		bottom: 20px;
		left: 50%;
		transform: translateX(-50%);
		list-style: none;
		width: 200px;
		grid-template: 1fr/repeat(4,1fr);
		justify-items: center;
	}

	div.index ul::after{
		content: '';
		position: absolute;
		top: 0;
		left: 12.5px;
		width: 25px;
		height: 25px;
		border-radius: 50%;
		z-index: -1;
		background: #d63031;
	}

	div.index ul li{
		position: relative;
		width: 25px;
		height: 25px;
		border-radius: 50%;
		color: #FFF;
		background: rgba(0,0,0,.5);
		display: grid;
		justify-content: center;
		align-items: center;
	}
</style>

现在的效果
在这里插入图片描述

让他们动起来

/**
 * 	滚动
 */
div.photos{
	animation:scroll 8s steps(4,end);
	animation-iteration-count: infinite;
}

div.index ul::after{
	animation:index-scroll 8s steps(4,end);
	animation-iteration-count: infinite;
}

@keyframes scroll{
	to{
		transform: translateX(-1600px);
	}
}

@keyframes index-scroll{
	to{
		transform: translateX(200px);
	}
}

现在的效果
在这里插入图片描述

鼠标悬停停止

/**
 * 鼠标悬停效果
 */
div.scroll-photo:hover div.photos,
div.scroll-photo:hover div.index ul::after{
	animation-play-state: paused;
}

成品代码和效果

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>css轮播</title>
	<style type="text/css">
		/**
		 *	基本样式
		 */
		*{padding: 0;margin: 0;}
		body{
			width: 100vw;
			height: 100vh;
			background: #82ccdd;
			display: flex;
			justify-content: center;
			align-items: center;
		}

		div.scroll-photo{
			position: absolute;
			width: 400px;
			height: 300px;
			overflow: hidden;
			cursor: pointer;
		}

		div.photos{
			position: absolute;
			width: 1600px;
			height: 300px;
			z-index: -1;
		}

		div.photos img{
			position: relative;
			width: 400px;
			height: 300px;
			float: left;
		}

		div.index ul{
			position: absolute;
			display: grid;
			bottom: 20px;
			left: 50%;
			transform: translateX(-50%);
			list-style: none;
			width: 200px;
			grid-template: 1fr/repeat(4,1fr);
			justify-items: center;
		}

		div.index ul::after{
			content: '';
			position: absolute;
			top: 0;
			left: 12.5px;
			width: 25px;
			height: 25px;
			border-radius: 50%;
			z-index: -1;
			background: #d63031;
		}

		div.index ul li{
			position: relative;
			width: 25px;
			height: 25px;
			border-radius: 50%;
			color: #FFF;
			background: rgba(0,0,0,.5);
			display: grid;
			justify-content: center;
			align-items: center;
		}

		/**
		 * 	滚动
		 */
		div.photos{
			animation:scroll 8s steps(4,end);
			animation-iteration-count: infinite;
		}

		div.index ul::after{
			animation:index-scroll 8s steps(4,end);
			animation-iteration-count: infinite;
		}

		@keyframes scroll{
			to{
				transform: translateX(-1600px);
			}
		}

		@keyframes index-scroll{
			to{
				transform: translateX(200px);
			}
		}

		/**
		 * 鼠标悬停效果
		 */
		div.scroll-photo:hover div.photos,
		div.scroll-photo:hover div.index ul::after{
			animation-play-state: paused;
		}
	</style>
</head>
<body>
	<!--轮播-->
	<div class="scroll-photo">
		<!--图片组-->
		<div class="photos">
			<img src="./photo/1.jpg" alt="">
			<img src="./photo/2.jpg" alt="">
			<img src="./photo/3.jpg" alt="">
			<img src="./photo/4.jpg" alt="">
		</div>
		<!--页码-->
		<div class="index">
			<ul>
				<li>1</li>
				<li>2</li>
				<li>3</li>
				<li>4</li>
			</ul>
		</div>
	</div>
</body>
</html>

成品效果(注:已经测试得知鼠标悬停功能不完美兼容火狐浏览器):
在这里插入图片描述

本博客其他文章推荐

原生js获取css伪类元素并设置属性

模仿一个球落地效果,最终停在地面上(仿真效果,CSS实现)

让一个小球无限的弹弹弹~(CSS实现球无限弹动)

如果有一屏幕的爱心,你愿意送给谁?(简单实现原生js、css随机生成521个心)

maven新手上路–创建webapp项目,引入jstl、el依赖及el不解析的问题解决(详细图文)

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值