响应式布局应基于一套语义化HTML,通过media查询配合display、flex-direction、order及CSS容器查询实现结构级适配,避免重复DOM或JS干预。
用 media 查询实现桌面和手机完全不同的布局结构,关键不是只改几个样式,而是

不要为了适配手机而写两套 HTML(比如一个 .desktop-nav + 一个 .mobile-menu),更不要用 JS 切换 DOM。理想做法是:一套语义化 HTML(如 , , ),靠 CSS 控制显示逻辑。
display: none / block / flex / grid 在不同断点下控制元素显隐与流式行为float)或绝对定位做主布局,改用 Flexbox 或 Grid —— 它们天然支持重排,桌面横排,手机可转为垂直全宽 + 折叠按钮(仅用 CSS + 模拟开关)推荐以「内容驱动」而非设备驱动设断点。常见组合:
@media (min-width: 768px) 覆盖平板,@media (min-width: 1024px) 覆盖桌面@media (max-width: 767px) 专写手机样式(适合已有桌面站快速适配)max-width: 767px 和 min-width: 768px 必须无缝衔接CSS 的 order 属性配合 Flex 容器,能在不改 HTML 顺序的前提下调整子元素渲染顺序。这对「手机要底部放版权、桌面要侧边栏」这类需求极有用。
display: flex; flex-direction: column;(手机竖排)flex-direction: row;,并用 order 调整模块先后(如让 显示在右侧).layout { display: flex; flex-direction: column; }
.sidebar { order: 3; }
@media (min-width: 1024px) {
.layout { flex-direction: row; }
.sidebar { order: 2; width: 300px; }
}
如果某个组件(如卡片列表)需要“自己决定怎么排”,而不是整个页面统一响应,可用 CSS 容器查询(@container) —— 它基于父容器宽度,而非视口。需配合 container-type: inline-size 使用,现代浏览器已普遍支持(Chrome 105+, Safari 16.4+, Firefox 110+)。