我的编程空间,编程开发者的网络收藏夹
学习永远不晚

CSS和JavaScript怎么判断浏览器设备类型

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

CSS和JavaScript怎么判断浏览器设备类型

这篇文章主要讲解了“CSS和JavaScript怎么判断浏览器设备类型”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS和JavaScript怎么判断浏览器设备类型”吧!



CSS代码

首先最重要的还是CSS媒体查询代码。这里只是示例,我们创建了三个媒体查询规则(但不包括缺省的“all”),它能控制四种屏幕情况:桌面(这是缺省状态,不需要媒体查询规则),“小屏幕”,平板,手机。针对每一种屏幕,我们给它一种不同的z-index值,这个值我们可以用JavaScript检测到。我们把这个元素定位到屏幕外,这样它就不会显示出来;记住,它的作用就是存放z-index值,我们要用javaScript获取这个值。


代码如下:



.state-indicator {
position: absolute;
top: -999em;
left: -999em;
z-index: 1;
}

@media all and (max-width: 1200px) {
.state-indicator {
z-index: 2;
}
}

@media all and (max-width: 1024px) {
.state-indicator {
z-index: 3;
}
}

@media all and (max-width: 768px) {
.state-indicator {
z-index: 4;
}
}


每种z-index都在告诉我们的JavaScript当前的用户使用的是什么规格的屏幕。我们并不像知道用户究竟使用的是什么设备,因为你可以将浏览器宽度拉的很窄,但我们需要就是可视宽度,这样我们可以调整应用的布局。

JavaScript代码

也许你认为可以在DomContentLoaded时知道屏幕的大小,但我们需要实时知道屏幕的大小(因为用户会调整浏览器窗口的大小),我们需要有个方法获取当前窗口的属性:

代码如下:


// 创建状态指示元素
var indicator = document.createElement('div');
indicator.className = 'state-indicator';
document.body.appendChild(indicator);
// 获取设备类别的方法
function getDeviceState() {
return parseInt(window.getComputedStyle(indicator).getPropertyValue('z-index'), 10);
}


使用这个方法,你就能检测出页面布局/js饰件中那些需要显示,那些需要隐藏。

代码如下:


if(getDeviceState() < 3) { // 如果是桌面电脑后小屏幕电脑
// 显示js饰件....
}


有人也许会认为这些数字太容易搞错,让代码很难维护。其实我们可以用一个对象来处理这种事情:

代码如下:


function getDeviceState() {
var index = parseInt(window.getComputedStyle(indicator).getPropertyValue('z-index'), 10);
var states = {
2: 'small-desktop',
3: 'tablet',
4: 'phone'
};
return states[index] || 'desktop';
}


这样,你就一个写出更具可读性的逻辑判断:

代码如下:


if(getDeviceState() == 'tablet') {
// Do whatever
}


也许使用CSS的伪元素的content属性是个更好的方法:

代码如下:


.state-indicator {
position: absolute;
top: -999em;
left: -999em;
}
.state-indicator:before { content: 'desktop'; }

@media all and (max-width: 1200px) {
.state-indicator:before { content: 'small-desktop'; }
}

@media all and (max-width: 1024px) {
.state-indicator:before { content: 'tablet'; }
}


用下面的JavaScript方法获取关键的内容:

代码如下:


var state = window.getComputedStyle(
document.querySelector('.state-indicator'), ':before'
).getPropertyValue('content')


如何组织这些代码全看你自己了。如果你有一个全局对象,例如window.config或window.app等,你可以把这些方法放到里面。我倾向于模块化这些功能,你可以把它做成jQuery插件或JavaScript工具包。不管你如何实现,它们都是你可以信赖的、简单易用的检测用户设备的好方法。

更上一层楼

我们知道屏幕尺寸会发生变化&mdash;&mdash;用户手工调整浏览器大型或手机用户调整了手机方向,所以,当这些事件发生时,我们需要让系统告诉我们。下面这段简单的代码估计是你需要的:

代码如下:


var lastDeviceState = getDeviceState();
window.addEventListener('resize', debounce(function() {
var state = getDeviceState();
if(state != lastDeviceState) {
// 保持当前的状态
lastDeviceState = state;
// 宣告状态变化,通过自定义的DOM事件或JS 消息发布/订阅模式,
// 我喜欢后者,所有就假设使用了一个这样的工具库
publish('/device-state/change', [state]);
}
}, 20));
// 用法
subscribe('/device-state/change', function(state) {
if(state == 3) { // or "tablet", if you used the object
}
});


注意,这里我使用了debounce方法来执行resize事件发生时的动作&mdash;&mdash;这对于性能来说非常重要。是使用自定义DOM事件还是使用发布/订阅模式,你自由选择,因为都很简单。

我觉得这种方法非常的好。有人可能会指出使用matchMedia也可以有相同效果,但问题是你需要在CSS里和JavaScript里都使用媒体查询,而有些媒体查询语句可能会很复杂,甚至会成为你的噩梦,不如使用简单的z-index。也有人会说可以使用 window.innerWidth来判断,但这样JS里获取的属性和CSS里的媒体查询就需要相互转换了,同样也会成为你的恶魔。我的方法的好处就在于你可以用它判断其他类型的媒体查询属性,例如检查手机是横向(landscape)还是竖向(portrait)。

感谢各位的阅读,以上就是“CSS和JavaScript怎么判断浏览器设备类型”的内容了,经过本文的学习后,相信大家对CSS和JavaScript怎么判断浏览器设备类型这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

CSS和JavaScript怎么判断浏览器设备类型

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

PHP怎么判断当前使用的浏览器类型

这篇文章主要介绍“PHP怎么判断当前使用的浏览器类型”,在日常操作中,相信很多人在PHP怎么判断当前使用的浏览器类型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”PHP怎么判断当前使用的浏览器类型”的疑惑有所
2023-06-04

使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)

WEB开发中如何通过Javascript来判断终端为PC、IOS(iphone)、Android呢? 可以通过判断浏览器的userAgent,用正则来判断手机是否是ios和Android客户端。var u = navigator.userA
2022-06-06

JavaScript怎么判断浏览器是否是IE

小编给大家分享一下JavaScript怎么判断浏览器是否是IE,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!首先,有些属性和方法是所有版本IE都不支持,那么只需要
2023-06-06

如何使用JavaScript实现手机端判断浏览器类型

这篇文章主要介绍如何使用JavaScript实现手机端判断浏览器类型,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!手机端判断浏览器类型BrowserInfo = { isAndroid: Boolean
2023-06-20

vue开发中不同浏览器的类型判断方式是什么

这篇文章将为大家详细讲解有关vue开发中不同浏览器的类型判断方式是什么,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、通过navigator.userAgent来进行浏览器类型判断定义和用法userAg
2023-06-29

云服务器怎么选择带宽和带宽的设备类型

云服务器是一种虚拟的资源服务器,它通常由许多不同的设备组成,这些设备可以是物理设备也可以是虚拟设备。以下是一些选择云服务器所需的常规信息,以及每个设备类型的详细信息:带宽:带宽是云服务器的一项重要因素,它取决于服务器所需的计算和存储能力。带宽可以通过以下方式选择:a.物理带宽:物理带宽是指服务器的带宽,它由服务器的硬件和软件资源组成。例如,一台服务器的物理带宽可能是500个GB。b.虚
2023-10-26

云服务器怎么选择带宽和带宽的设备类型区别

云服务器的带宽和带宽的设备类型是决定其使用体验的重要因素。以下是一些建议,让您可以根据需求选择合适的服务器:使用云服务平台:可以选择使用虚拟服务器、云存储、Docker等技术来存储数据,并通过API或GPU加速来运行应用程序。这些技术提供了更快速的响应和更广泛的覆盖,从而使数据更快速地分发和访问。使用独立云存储服务:可以选择使用独立的云存储服务,如AWSCloudDrop、GoogleCl
2023-10-26

编程热搜

目录