答案:通过CSS Animation和transform: scale()实现图片缩放轮播。首先构建包含多张图片的容器,设置绝对定位与隐藏溢出;利用@keyframes定义从放大1.2倍淡入至正常尺寸再淡出的动画;为每个图片项设置不同延迟的无限循环动画;可选添加:hover暂停效果,实现纯CSS、流畅且兼容的轮播展示。

使用 CSS Animation 制作图片缩放轮播,核心是结合 @keyframes 定义动画效果,并通过 transform: scale() 控制图片的缩放变化。下面是一个简洁实用的实现方式。
1. 基本HTML结构
准备一个容器和若干图片项,每张图用一个 div 包裹:
@@##@@@@##@@@@##@@
2. 设置CSS样式与布局
让轮播容器居中显示,隐藏溢出内容,所有图片默认隐藏,只显示当前激活项:
.carousel {
width: 400px;
height: 300px;
margin: 50px auto;
position: relative;
overflow: hidden;
border-radius: 10px;
}
.carousel-item {
position: absolute;
width: 100%;
height: 100%;
opacity: 0;
top: 0;
left: 0;
}
.carousel-item img {
width: 100%;
height: 100%;
object-fit: cover;
}
3. 定义缩放动画关键帧
使用 @keyframes 创建缩放进入和淡出效果:
立即学习“前端免费学习笔记(深入)”;
@keyframes zoomFade {
0% {
opacity: 0;
transform: scale(1.2);
}
10% {
opacity: 1;
transform: scale(1);
}
90% {
opacity: 1;
transform: scale(1);
}
100% {
opacity: 0;
transform: scale(1.2);
}
}
动画从放大 1.2 倍淡入,保持 1 倍大小一段时间后,再淡出并轻微放大,营造平滑过渡感。
4. 应用动画到每个图片
为每个 .carousel-item 添加动画,通过设置不同的延迟时间实现轮播:
.carousel-item:nth-child(1) {
animation: zoomFade 6s ease-in-out 0s infinite;
}
.carousel-item:nth-child(2) {
animation: zoomFade 6s ease-in-out 2s infinite;
}
.carousel-item:nth-child(3) {
animation: zoomFade 6s ease-in-out 4s infinite;
}
每张图延迟 2 秒启动动画,总周期 6 秒,形成循环播放。你可以根据图片数量调整延迟时间。
5. 可选:添加暂停悬停效果
如果希望鼠标移上时暂停动画,可添加:
.carousel:hover .carousel-item {
animation-play-state: paused;
}
基本上就这些。通过控制 scale() 和 opacity 的变化,配合定时错开的动画延迟,就能实现流畅的缩放轮播效果。不需要 JavaScript,纯 CSS 实现,轻量且兼容性好。












