JavaScript根据CSS的Media Queries来判断浏览设备的方法
2024-09-27 11:55:21
CSS 部分
首先随便新建一个用来做判断的类,然后通过 Media Queries 来对这个类的 z-index 属性赋予不同的值。这个类仅作为 JavaScript 读取使用,所以需要将其移出屏幕窗口,让浏览者不可见以免引起意外情况。
作为演示,下面代码设置了四种设备状态:桌面普通版、小屏幕桌面版、平板电脑版和手机版。
/* default state */
.state-indicator {
position: absolute;
top: -999em;
left: -999em; z-index: 1;
} /* small desktop */
@media all and (max-width: 1200px) {
.state-indicator {
z-index: 2;
}
} /* tablet */
@media all and (max-width: 1024px) {
.state-indicator {
z-index: 3;
}
} /* mobile phone */
@media all and (max-width: 768px) {
.state-indicator {
z-index: 4;
}
}
JavaScript 判断
CSS 已经就位了,那么就需要用 JavaScript来生成了一个临时的 DOM 对象,然后为它设置对应的类,然后再读取这个对象的 z-index 值。原生的写法如下:
// Create the state-indicator element
var indicator = document.createElement('div');
indicator.className = 'state-indicator';
document.body.appendChild(indicator); // Create a method which returns device state
function getDeviceState() {
return parseInt(window.getComputedStyle(indicator).getPropertyValue('z-index'), 10);
}
getDeviceState() 函数返回的就是 z-index 的值,为了增强一下可读性,可以用 switch 函数来规范输出一下: function getDeviceState() {
switch(parseInt(window.getComputedStyle(indicator).getPropertyValue('z-index'), 10)) {
case 2:
return 'small-desktop';
break;
case 3:
return 'tablet';
break;
case 4:
return 'phone';
break;
default:
return 'desktop';
break;
}
}
这样,就可以用一下代码来判断设备状态,然后执行相应的 JavaScript 代码:
if(getDeviceState() == 'tablet') {
// 平板电脑下执行的 JavaScript 代码
}
这里如果你使用的是 jQuery,直接使用下面代码就可以了:
$(function(){
$('body').append('<div class="state-indicator"></div>'); function getDeviceState() {
switch(parseInt($('.state-indicator').css('z-index'),10)) {
case 2:
return 'small-desktop';
break;
case 3:
return 'tablet';
break;
case 4:
return 'phone';
break;
default:
return 'desktop';
break;
}
} console.log(getDeviceState());
$('.state-indicator').remove();
});
最新文章
- asp.net webform 自定义分页控件
- 使用MaskFilter
- 深入了解webservice_开发实战篇
- find command in linux terminal
- C#利用lambda在函数中创建内部函数
- WIN10主动推升级,有点意思
- ANDROID_MARS学习笔记_S01_012_RatingBar
- Java遍历Map、List、Array
- Spark学习笔记-三种属性配置详细说明【转】
- 关于EL表达式的生效时间(猜想)
- HTTP请求到爬虫代码的终南捷径
- GWAS: 阿尔兹海默症和代谢指标在大规模全基因组数据的遗传共享研究
- java 简单程序
- Deseq2 的可视化策略汇总
- Mybaits代码生成使用
- MySQL 内存溢出
- java实现在图片上编辑文本内容
- Ubuntu下LimeSDR Mini使用说明
- 实现Ecshop注册页面手机号唯一的验证
- MySQL 系列(三)事务