@media (max-height: ...) 可响应视口高度变化,适用于全屏表单、固定头尾重排等场景,但不能替代宽度断点主导主布局;需结合 orientation 使用,并注意其基于 window.innerHeight 且不响应键盘弹出等瞬态变化。
直接用 @media (max-height: ...) 就能响应视口高度变化,但要注意它和宽度查询的使用逻辑不同——高度断点更适合处理特定场景,比如全屏表单、弹窗、固定头部/底部区域的重排,而不是替代宽度断点做主布局。
优先用高度媒体查询的典型场景
写法示例:基于高度的垂直布局切换
/* 默认:竖屏常见布局,垂直堆叠 */.content-section {display: flex;flex-direction: column;gap: 16px;}/* 当视口高度 ≤ 600px(如小屏手机横屏、部分折叠屏)时,改为紧凑垂直流 */@media (max-height: 600px) {.content-section {gap: 8px; /* 缩小间距节省空间 */font-size: 0.9em;}.form-group {margin-bottom: 4px; /* 表单项更紧凑 */}}/* 当视口高度 ≥ 800px(如平板竖屏、桌面小窗口),启用多行垂直分组 */@media (min-height: 800px) {.content-section {flex-direction: row;flex-wrap: wrap;}.section-item {flex: 1 1 300px; /* 每项最小宽300px,自动换行 */}}
关键细节提醒
height 指的是 window.innerHeight,即浏览器可视区域高度,不含地址栏、系统状态栏等(移动端 Safari 可能因滚动临时变化,但媒体查询不会高频重触发)orientation 混合使用更稳妥:@media (orientation: portrait) and (max-height: 700px) { … }@media (orientation: landscape) and (max-height: 400px) { … }
@media (device-height: ...) —— 它匹配物理屏幕高度,不随用户缩放或浏览器窗口调整而变,实际几乎不用配合 JavaScript 做精细控制(可选)
如果需要实时响应高度变化(比如键盘弹出导致视口骤缩),媒体查询本身不触发重绘,此时可用:
matchMedia('(max-height: 600px)').matches 判断当前状态resize 事件 + 节流,再手动切换 class 控制布局不复杂但容易忽略
tlwdr7650路由器没有wps按钮(tlwdr7650路由器没有wps按钮怎么办)
tlwdr7632扩展器电脑怎么设置(tlwdr7632扩展器电脑设置方法)
tlwda6332re安装教程(tlwda6332re如何安装)
tlwdr7632扩展器手机怎么设置(tlwdr7632扩展器手机设置方法)
tlxdr3010怎么设置网速快(tlxdr3010网速快设置方法)
tlwdr5620易展版怎么克隆(tlwdr5620易展版克隆方法)