css焦点图制作
使用纯CSS制作焦点图
通过CSS的动画和过渡效果实现简单焦点图轮播,无需JavaScript。以下是一个基础实现方案:
<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>
.slider {
width: 100%;
overflow: hidden;
position: relative;
}
.slides {
display: flex;
width: 300%; /* 3 slides */
animation: slide 10s infinite;
}
.slide {
width: 33.33%;
height: 300px;
display: flex;
align-items: center;
justify-content: center;
font-size: 2rem;
color: white;
}
.slide:nth-child(1) { background: #3498db; }
.slide:nth-child(2) { background: #e74c3c; }
.slide:nth-child(3) { background: #2ecc71; }
@keyframes slide {
0% { transform: translateX(0); }
33% { transform: translateX(-33.33%); }
66% { transform: translateX(-66.66%); }
100% { transform: translateX(0); }
}
结合HTML和CSS3过渡效果
实现带过渡动画的焦点图,可通过:target伪类实现手动切换:

<div class="slider">
<div class="slides">
<div id="slide1" class="slide">Slide 1</div>
<div id="slide2" class="slide">Slide 2</div>
<div id="slide3" class="slide">Slide 3</div>
</div>
<div class="controls">
<a href="#slide1">1</a>
<a href="#slide2">2</a>
<a href="#slide3">3</a>
</div>
</div>
.slider {
width: 100%;
overflow: hidden;
position: relative;
}
.slides {
width: 300%;
transition: transform 0.5s ease;
}
.slide {
width: 33.33%;
float: left;
height: 300px;
}
#slide1:target ~ .slides { transform: translateX(0); }
#slide2:target ~ .slides { transform: translateX(-33.33%); }
#slide3:target ~ .slides { transform: translateX(-66.66%); }
响应式焦点图设计
确保焦点图在不同设备上正常显示:

.slider {
max-width: 1200px;
margin: 0 auto;
}
.slide {
height: auto;
min-height: 200px;
}
@media (max-width: 768px) {
.slide {
padding: 20px;
}
}
添加导航指示器
通过CSS伪元素创建视觉指示器:
.controls a {
display: inline-block;
width: 15px;
height: 15px;
border-radius: 50%;
background: #ccc;
margin: 0 5px;
position: relative;
}
.controls a.active::after {
content: '';
position: absolute;
width: 9px;
height: 9px;
background: #333;
border-radius: 50%;
top: 3px;
left: 3px;
}
性能优化建议
避免使用可能引起重排的CSS属性:
.slides {
will-change: transform;
backface-visibility: hidden;
}
.slide {
contain: layout paint style;
}
以上方案可根据实际需求组合使用或扩展功能,如添加淡入淡出效果、缩略图导航等高级特性。






