css 制作焦点图
使用纯CSS制作焦点图
通过CSS的动画和过渡效果可以实现简单的焦点图轮播,无需JavaScript。以下是一个基础实现方案:
HTML结构:
<div class="slider">
<div class="slides">
<div class="slide">Slide 1</div>
<div class="slide">Slide 2</div>
<div class="slide">Slide 3</div>
</div>
</div>
CSS样式:
.slider {
width: 100%;
overflow: hidden;
position: relative;
}
.slides {
display: flex;
width: 300%; /* 根据幻灯片数量调整 */
animation: slide 10s infinite;
}
.slide {
width: 33.33%; /* 100% / 幻灯片数量 */
height: 300px;
display: flex;
align-items: center;
justify-content: center;
font-size: 2rem;
color: white;
}
.slide:nth-child(1) { background: #ff5252; }
.slide:nth-child(2) { background: #4caf50; }
.slide:nth-child(3) { background: #2196f3; }
@keyframes slide {
0% { transform: translateX(0); }
33% { transform: translateX(-33.33%); }
66% { transform: translateX(-66.66%); }
100% { transform: translateX(0); }
}
添加导航指示器
为焦点图添加可视化的导航点指示当前幻灯片位置:
HTML新增:
<div class="dots">
<span class="dot"></span>
<span class="dot"></span>
<span class="dot"></span>
</div>
CSS新增:
.dots {
position: absolute;
bottom: 20px;
left: 50%;
transform: translateX(-50%);
display: flex;
}
.dot {
width: 12px;
height: 12px;
margin: 0 5px;
border-radius: 50%;
background: rgba(255,255,255,0.5);
animation: dotAnimation 10s infinite;
}
.dot:nth-child(1) { animation-delay: 0s; }
.dot:nth-child(2) { animation-delay: -6.66s; }
.dot:nth-child(3) { animation-delay: -3.33s; }
@keyframes dotAnimation {
0%, 33.33% { background: white; }
33.34%, 100% { background: rgba(255,255,255,0.5); }
}
响应式设计调整
确保焦点图在不同屏幕尺寸下正常显示:
@media (max-width: 768px) {
.slide {
height: 200px;
font-size: 1.5rem;
}
.dots {
bottom: 10px;
}
.dot {
width: 8px;
height: 8px;
}
}
悬停暂停功能
添加鼠标悬停时暂停轮播的交互效果:
.slider:hover .slides {
animation-play-state: paused;
}
.slider:hover .dot {
animation-play-state: paused;
}
过渡效果优化
使用更平滑的过渡效果替代默认的线性动画:
.slides {
animation: slide 10s infinite ease-in-out;
}
@keyframes slide {
0%, 25% { transform: translateX(0); }
33%, 58% { transform: translateX(-33.33%); }
66%, 91% { transform: translateX(-66.66%); }
100% { transform: translateX(0); }
}
自动高度调整
根据内容动态调整焦点图高度:
.slider {
height: auto;
}
.slide {
height: auto;
min-height: 300px;
padding: 2rem;
}
这种方法创建的焦点图完全依赖CSS动画,适合简单展示需求。如需更复杂的交互(如手动切换、触摸滑动等),建议结合JavaScript实现。







