js获取媒体查询屏幕的属于哪种屏幕

博客给出了一个链接地址,涉及JavaScript和HTML5相关内容,可能与工具类有关,属于信息技术领域。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**
 * 获取屏幕的属于哪种屏幕
 * @returns {string} xs为超小屏  sm为小屏  md为中屏  lg 为大屏
 */

export let getScreen =  function () {
    if(win.matchMedia("(min-width: 1200px)").matches) {
    	return 'lg';
    }else if(win.matchMedia("(min-width: 992px)").matches) { // screen and (min-width: 992px)
    	return 'md'
    }else if(win.matchMedia("(min-width: 768px)").matches) { // screen and (min-width: 768px)
    	return 'sm'
    }else {
    	return 'xs' // 超小屏幕
    }
}

地址:链接地址

<think>用户正在询问如何用JavaScript获取手机屏幕的宽度,根据提供的引用资料,发现确实有几种方法可以实现。但需要区分清楚"屏幕宽度"和"网页可视区域宽度"这两个概念,因为用户可能混淆了它们。在引用[1]中看到window.screen.width这个属性可以直接获取屏幕分辨率宽度,这应该就是用户需要的物理屏幕宽度。不过实际使用时需要考虑设备像素比的问题,特别是高清屏上可能出现值不匹配的情况。考虑到用户可能正在开发响应式网页,也许需要的是网页可见区域的宽度。根据引用内容,document.body.clientWidth可以获取这个值,但要注意body元素可能存在默认边距。为了更准确,通常建议使用document.documentElement.clientWidth。在组织回答时应该先明确物理屏幕宽度的获取方法,再补充说明网页宽度的获取方式。这样用户就能根据实际需求选择。同时要提醒innerWidth和outerWidth的区别,因为有些用户可能混淆这两者。最后建议用户考虑移动端事件监听,因为屏幕旋转会改变宽度值。补充一个屏幕旋转事件的监听示例应该能帮助用户更好地应对动态变化。</think> 根据你的需求,获取手机屏幕宽度的JavaScript代码如下及解析: ### 📱 方法一:获取物理屏幕宽度(推荐) ```javascript // 获取物理屏幕分辨率宽度(包括系统任务栏等区域) const screenWidth = window.screen.width; // 获取可用工作区宽度(扣除系统任务栏) const availableWidth = window.screen.availWidth; console.log("物理屏幕宽度:", screenWidth, "px"); // 如 iPhone 14 Pro 显示 393 console.log("可用工作区宽度:", availableWidth, "px"); ``` ### 🌐 方法二:获取网页可视区域宽度 ```javascript // 精确获取可视区域宽度(推荐) const viewportWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; console.log("网页可视宽度:", viewportWidth, "px"); // 随浏览器缩放变化 ``` ### ⚠️ 重要区别 | 属性/方法 | 返回值说明 | 是否包含滚动条 | |-----------|------------|---------------| | `window.screen.width` | 设备物理像素宽度 | 不适用 | | `window.innerWidth` | 包含滚动条的浏览器视口宽度 | ✅ | | `document.documentElement.clientWidth` | 不包含滚动条的视口宽度 | ❌ | ### 🎯 使用建议 1. **适配屏幕旋转**:添加事件监听实时获取宽度变化 ```javascript window.addEventListener("resize", () => { console.log("当前宽度:", window.innerWidth); }); ``` 2. **响应式设计**:推荐使用CSS媒体查询 ```css @media (max-width: 768px) { /* 手机端样式 */ } ``` ### 🔍 常见问题解答 **Q:为何`document.body.clientWidth`有时返回0?** A:需确保在DOM加载完成后执行(在`DOMContentLoaded`事件中操作): ```javascript document.addEventListener("DOMContentLoaded", () => { console.log(document.body.clientWidth); }); ``` **Q:如何获取屏幕宽度(不考虑浏览器缩放)?** A:使用`window.screen.width * window.devicePixelRatio`获取物理像素宽度: ```javascript const physicalWidth = window.screen.width * window.devicePixelRatio; console.log("物理像素宽度:", physicalWidth); // 如 iPhone 14 Pro 返回 1179px ``` [^1]: 部分属性参考JS屏幕尺寸获取规范,实际使用需考虑浏览器兼容性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值