在 CSS 媒体查询中使用的高度(如 @media screen and (max-height: 800px)
) 对应的是视口的高度,而不是 window.screen.height
。视口高度是指浏览器窗口内可见内容区域的高度,不包括浏览器的工具栏、地址栏等非内容区域。
具体解释
@media screen and (max-height: 800px)
是媒体查询,它针对视口的高度进行响应式设计。视口的高度指的是浏览器窗口内显示页面内容的区域高度,可以通过window.innerHeight
或document.documentElement.clientHeight
获取。window.screen.height
是整个屏幕的高度,包括操作系统的任务栏、浏览器的工具栏等所有元素的高度。这个值一般不用于媒体查询,因为它不能准确反映浏览器内容区域的高度。
示例代码
下面是一个示例,演示如何使用媒体查询基于视口高度进行响应式设计:
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Media Query Example</title> <style> body { font-family: Arial, sans-serif; padding: 20px; } .box { width: 100%; height: 300px; background-color: lightblue; text-align: center; line-height: 300px; } @media screen and (max-height: 800px) { .box { background-color: lightcoral; line-height: normal; padding-top: 20px; } } </style> </head> <body> <div>Resize the window height to see the effect</div> </body> </html>
在上面的代码中,当视口高度小于或等于 800px 时,.box
的背景颜色会变为 lightcoral
,并且文本对齐方式会改变。
检查视口高度
你可以在 JavaScript 中检查视口高度,并在控制台中输出,以便更好地理解它与 window.screen.height
的区别:
console.log("Viewport height (window.innerHeight): " + window.innerHeight); console.log("Viewport height (document.documentElement.clientHeight): " + document.documentElement.clientHeight); console.log("Screen height (window.screen.height): " + window.screen.height);
运行这段代码,可以看到视口高度和屏幕高度的不同。
总结
媒体查询中的高度(如 @media screen and (max-height: 800px)
)对应的是视口高度,而不是屏幕高度 (window.screen.height
)。视口高度是浏览器窗口内可见内容区域的高度,是响应式设计时常用的尺寸标准。