什么是响应式设计?
响应式网页设计(Responsive Web Design,RWD)是一种网页设计方法,使网页能够根据不同的屏幕尺寸和设备自动调整布局。
视口设置
在 HTML 的 <head> 中添加视口元标签:
<meta name="viewport" content="width=device-width, initial-scale=1.0">
媒体查询
媒体查询是实现响应式设计的核心技术。
基本语法
@media screen and (min-width: 768px) {
/* 在屏幕宽度 >= 768px 时应用 */
.container {
max-width: 750px;
}
}
常用断点
/* 手机 */
@media (max-width: 767px) {
.container {
padding: 15px;
}
}
/* 平板 */
@media (min-width: 768px) and (max-width: 1023px) {
.container {
padding: 30px;
}
}
/* 桌面 */
@media (min-width: 1024px) {
.container {
max-width: 1200px;
margin: 0 auto;
}
}
流式布局
使用相对单位创建灵活的布局。
百分比宽度
.container {
width: 100%;
max-width: 1200px;
}
.sidebar {
width: 30%;
}
.content {
width: 70%;
}
视口单位
.container {
width: 90vw; /* 视口宽度的 90% */
height: 50vh; /* 视口高度的 50% */
}
Flexbox 响应式
.container {
display: flex;
flex-wrap: wrap;
gap: 20px;
}
.card {
flex: 1 1 300px; /* 基础宽度 300px,可伸缩 */
}
@media (max-width: 600px) {
.container {
flex-direction: column;
}
}
CSS Grid 响应式
.grid-container {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 20px;
}
/* 手动控制列数 */
@media (max-width: 600px) {
.grid-container {
grid-template-columns: 1fr;
}
}
@media (min-width: 601px) and (max-width: 900px) {
.grid-container {
grid-template-columns: repeat(2, 1fr);
}
}
@media (min-width: 901px) {
.grid-container {
grid-template-columns: repeat(3, 1fr);
}
}
图片响应式
img {
max-width: 100%;
height: auto;
}
/* 响应式图片容器 */
.image-container {
position: relative;
width: 100%;
padding-bottom: 56.25%; /* 16:9 比例 */
}
.image-container img {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
object-fit: cover;
}
移动优先设计
从移动设备开始设计,逐步增强到桌面设备:
/* 基础样式(移动设备) */
.card {
padding: 15px;
margin-bottom: 10px;
}
/* 平板 */
@media (min-width: 768px) {
.card {
padding: 20px;
margin-bottom: 15px;
}
}
/* 桌面 */
@media (min-width: 1024px) {
.card {
padding: 30px;
margin-bottom: 20px;
display: flex;
align-items: center;
}
}
最佳实践
- 移动优先:从小屏幕开始设计
- 使用相对单位:%、vw、vh、em、rem
- 设置图片最大宽度:
max-width: 100% - 使用 flex-wrap 实现弹性布局
- 使用 CSS Grid 的
auto-fit和minmax() - 测试多种设备和屏幕尺寸
学习资源
点评
请文明点评
加载评论中...
编辑此页 或