0

0

js怎么获取屏幕分辨率

星降

星降

发布时间:2025-08-17 13:39:01

|

617人浏览过

|

来源于php中文网

原创

获取屏幕分辨率应使用window.screen.width和window.screen.height,它们返回显示器的物理像素尺寸;而浏览器视口尺寸则通过window.innerwidth/window.innerheight或document.documentelement.clientwidth/clientheight获取,表示当前窗口内可显示内容的区域大小;二者区别在于屏幕分辨率是固定硬件属性,视口尺寸随浏览器窗口调整变化;设备像素比(dpr)影响css像素与物理像素的映射关系,高dpr设备上一个css像素对应多个物理像素,需在图片加载和canvas绘制时进行适配;浏览器缩放会改变视口尺寸但不影响屏幕分辨率,多显示器环境下screen对象通常仅反映主屏信息,全屏模式下视口尺寸会与屏幕分辨率一致,旧版ie需用document对象属性替代innerwidth/height以确保兼容性。

js怎么获取屏幕分辨率

在JavaScript里,获取屏幕分辨率主要通过

window.screen
对象来完成,它能直接告诉你用户显示器的物理像素尺寸。

解决方案

如果你想知道用户整个屏幕的宽度和高度,最直接的方式就是使用

window.screen.width
window.screen.height
。这两个属性会返回屏幕的物理像素尺寸,而不是浏览器窗口的大小。

举个例子,如果你的显示器是1920x1080的,那么

screen.width
就是1920,
screen.height
就是1080。这听起来很简单,但实际应用中,很多时候我们需要的并不是这个“屏幕分辨率”,而是浏览器窗口内部的可用空间,或者说,用户实际能看到内容的区域。

// 获取屏幕分辨率
const screenWidth = window.screen.width;
const screenHeight = window.screen.height;
console.log(`屏幕分辨率: ${screenWidth}x${screenHeight}`);

// 获取浏览器视口尺寸(不含滚动条、工具栏等)
const viewportWidth = window.innerWidth;
const viewportHeight = window.innerHeight;
console.log(`浏览器视口: ${viewportWidth}x${viewportHeight}`);

// 获取文档元素(HTML)的尺寸,通常等同于视口,但更稳定
const documentWidth = document.documentElement.clientWidth;
const documentHeight = document.documentElement.clientHeight;
console.log(`文档区域: ${documentWidth}x${documentHeight}`);

屏幕分辨率与浏览器视口尺寸有何不同?

这是一个非常常见的误解,我发现很多开发者在刚接触前端布局时都会把它们混淆。简单来说,屏幕分辨率是你的显示器能显示的最大像素点数量,它是个固定值,除非你换显示器或者改变操作系统的显示设置。而浏览器视口尺寸,也就是

window.innerWidth
window.innerHeight
,则是当前浏览器窗口内部,不包含浏览器边框、工具栏、滚动条等“杂物”的可视区域大小。

想象一下,你有一张很大的画布(屏幕),而你的浏览器只是这张画布上的一扇窗户。

screen.width/height
告诉你画布有多大,而
window.innerWidth/innerHeight
则告诉你这扇窗户有多大。这扇窗户是可以随意调整大小的,你拖动浏览器边框,它的值就会跟着变。

此外,还有一个

document.documentElement.clientWidth
document.documentElement.clientHeight
,它们通常与
window.innerWidth/innerHeight
返回相同的值,但在某些旧浏览器或特定场景下,
document.documentElement
可能提供更稳定的尺寸,特别是当你需要获取不包含滚动条的精确内容区域时。所以,在做响应式布局或者需要精确计算页面元素位置时,我们更多地关注的是后面两个视口尺寸,而非屏幕分辨率。毕竟,你的网页内容是呈现在浏览器窗口里的,不是直接铺满整个屏幕的。

设备像素比(DPR)如何影响分辨率报告?

这块内容就有点意思了,尤其是对于高DPI(Retina)屏幕来说,它会引入一个“设备像素”和“CSS像素”的概念。

window.devicePixelRatio
就是这个桥梁。它表示的是物理像素和CSS像素之间的比率。比如,在iPhone上,
devicePixelRatio
可能是2或3,这意味着一个CSS像素实际上由2x2或3x3的物理像素点来渲染。

无限画
无限画

千库网旗下AI绘画创作平台

下载

那么,这和分辨率有什么关系呢?

window.screen.width
window.screen.height
返回的是设备的物理像素尺寸。但当你在CSS里写
width: 100px;
时,这个100px是CSS像素。在高DPR设备上,100个CSS像素可能对应着200或300个物理像素。这就导致了一个现象:你的屏幕物理分辨率很高(比如MacBook Pro),但
window.innerWidth
可能只显示一个相对较小的值(比如1440px),因为浏览器默认会根据DPR进行缩放,让网页内容看起来更舒适,而不是密密麻麻的。

理解DPR非常重要,因为它影响了图片资源的加载策略(比如

srcset
),以及canvas绘图的清晰度。如果你直接在canvas上画100x100的矩形,在高DPR屏幕上它可能会显得模糊,因为你没有考虑到物理像素的密度。这时候,你需要将canvas的内部尺寸乘以DPR,再用CSS将其缩放回来,才能获得清晰的渲染效果。这不仅仅是获取分辨率那么简单,它关乎到用户实际的视觉体验。

浏览器兼容性与特殊情况有哪些需要注意?

虽然

window.screen
window.innerWidth
这些API在现代浏览器中已经非常稳定和通用了,但还是有一些特殊情况和历史遗留问题值得我们留意。

首先是浏览器缩放。用户在浏览器里按

Ctrl/Cmd +
或者
-
来缩放页面时,
window.innerWidth
window.innerHeight
的值会跟着变化,但
window.screen.width
window.screen.height
则保持不变。因为缩放改变的是CSS像素与设备独立像素之间的关系,而不是显示器的物理分辨率。如果你依赖
innerWidth
来判断用户屏幕大小,那么用户缩放后你的判断可能就不准确了。

其次是多显示器设置。当用户连接了多个显示器时,

window.screen.width
window.screen.height
通常会报告主显示器的分辨率。如果你想获取所有连接显示器的总分辨率,或者特定屏幕的信息,JavaScript原生API就显得力不从心了。这通常需要依赖更底层的操作系统API或者一些浏览器扩展才能做到。

再有就是全屏模式。当浏览器进入全屏模式时(比如播放视频),

window.innerWidth
window.innerHeight
通常会扩展到与
window.screen.width
window.screen.height
相同,因为此时浏览器窗口占据了整个屏幕。但退出全屏后它们又会恢复到原来的值。

最后,早期的IE浏览器(比如IE8及更早版本)可能对

window.innerWidth
window.innerHeight
的支持不那么完善,或者行为有所差异,通常需要使用
document.documentElement.clientWidth
document.documentElement.clientHeight
作为备选方案。不过,随着这些老旧浏览器市场份额的持续萎缩,这已经不再是前端开发的主流挑战了。但如果你在维护一些非常老的项目,这仍然是一个需要考虑的点。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
js正则表达式
js正则表达式

php中文网为大家提供各种js正则表达式语法大全以及各种js正则表达式使用的方法,还有更多js正则表达式的相关文章、相关下载、相关课程,供大家免费下载体验。

531

2023.06.20

js获取当前时间
js获取当前时间

JS全称JavaScript,是一种具有函数优先的轻量级,解释型或即时编译型的编程语言;它是一种属于网络的高级脚本语言,主要用于Web,常用来为网页添加各式各样的动态功能。js怎么获取当前时间呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

576

2023.07.28

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

760

2023.08.03

js是什么意思
js是什么意思

JS是JavaScript的缩写,它是一种广泛应用于网页开发的脚本语言。JavaScript是一种解释性的、基于对象和事件驱动的编程语言,通常用于为网页增加交互性和动态性。它可以在网页上实现复杂的功能和效果,如表单验证、页面元素操作、动画效果、数据交互等。

6255

2023.08.17

js删除节点的方法
js删除节点的方法

js删除节点的方法有:1、removeChild()方法,用于从父节点中移除指定的子节点,它需要两个参数,第一个参数是要删除的子节点,第二个参数是父节点;2、parentNode.removeChild()方法,可以直接通过父节点调用来删除子节点;3、remove()方法,可以直接删除节点,而无需指定父节点;4、innerHTML属性,用于删除节点的内容。

492

2023.09.01

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

Js中concat和push的区别
Js中concat和push的区别

Js中concat和push的区别:1、concat用于将两个或多个数组合并成一个新数组,并返回这个新数组,而push用于向数组的末尾添加一个或多个元素,并返回修改后的数组的新长度;2、concat不会修改原始数组,是创建新的数组,而push会修改原数组,将新元素添加到原数组的末尾等等。本专题为大家提供concat和push相关的文章、下载、课程内容,供大家免费下载体验。

240

2023.09.14

js截取字符串的方法介绍
js截取字符串的方法介绍

JavaScript字符串截取方法,包括substring、slice、substr、charAt和split方法。这些方法可以根据具体需求,灵活地截取字符串的不同部分。在实际开发中,根据具体情况选择合适的方法进行字符串截取,能够提高代码的效率和可读性 。

303

2023.09.21

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Sass 教程
Sass 教程

共14课时 | 0.9万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.6万人学习

CSS教程
CSS教程

共754课时 | 42.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号