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();
});

  

最新文章

  1. asp.net webform 自定义分页控件
  2. 使用MaskFilter
  3. 深入了解webservice_开发实战篇
  4. find command in linux terminal
  5. C#利用lambda在函数中创建内部函数
  6. WIN10主动推升级,有点意思
  7. ANDROID_MARS学习笔记_S01_012_RatingBar
  8. Java遍历Map、List、Array
  9. Spark学习笔记-三种属性配置详细说明【转】
  10. 关于EL表达式的生效时间(猜想)
  11. HTTP请求到爬虫代码的终南捷径
  12. GWAS: 阿尔兹海默症和代谢指标在大规模全基因组数据的遗传共享研究
  13. java 简单程序
  14. Deseq2 的可视化策略汇总
  15. Mybaits代码生成使用
  16. MySQL 内存溢出
  17. java实现在图片上编辑文本内容
  18. Ubuntu下LimeSDR Mini使用说明
  19. 实现Ecshop注册页面手机号唯一的验证
  20. MySQL 系列(三)事务

热门文章

  1. 栅格系统不是要包裹在container里面吗
  2. Net文章汇总帖
  3. 【转】特殊权限控制之SUID、SGID、Sticky
  4. IntelliJ IDEA显示行号方法
  5. GroupId和ArtifactId
  6. locals()函数访问当前还在作用范围内的局部变量
  7. 交易Txt文件导出
  8. Redis附加功能之Redis事务
  9. 让执行程序引用特定目录下的Dll
  10. jmeter随笔(4)--中文url编码问题