如何实现响应式设计?有哪些常用方案?
1. 媒体查询(Media Query)
.container {
padding: 16px;
}
@media (min-width: 768px) {
.container {
padding: 24px;
}
}
@media (min-width: 1024px) {
.container {
padding: 32px;
max-width: 1200px;
}
}
2. viewport meta 标签
<meta name="viewport" content="width=device-width, initial-scale=1.0">
3. 相对单位
html { font-size: 16px; }
.title { font-size: 2rem; }
.hero { height: 100vh; }
.sidebar { width: 20vw; }
h1 {
font-size: clamp(1.5rem, 4vw, 3rem);
}
4. 响应式图片
img {
max-width: 100%;
height: auto;
}
<picture>
<source media="(min-width: 800px)" srcset="large.jpg">
<source media="(min-width: 400px)" srcset="medium.jpg">
<img src="small.jpg" alt="responsive image">
</picture>
5. Container Queries(CSS新特性)
.card-container {
container-type: inline-size;
}
@container (min-width: 400px) {
.card {
display: flex;
}
}
断点建议
最佳实践
- 移动端优先:基础样式为移动端,媒体查询逐步增强
- 使用相对单位:rem、vw、%、clamp
- Grid/Flex 自适应:结合 auto-fill/auto-fit 减少媒体查询
- 优先使用 CSS 特性:min()、max()、clamp() 比媒体查询更流畅
同分类其他题目