JavaScript根据CSS的Media Queries来判断浏览设备的方法
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();
});
JavaScript根据CSS的Media Queries来判断浏览设备的方法的更多相关文章
- CSS3 Media Queries 详细介绍与使用方法
Media Queries 就是要在支援CSS3 的浏览器中才能正常工作,IE8 以下不支持. 而Media Queries 的套用方法千变万化,要套用在什么样的装置中,都可以自己来定义. 到底什么是 ...
- CSS3 Media Queries 详细介绍与使用方法[转]
Media Queries 就是要在支援CSS3 的浏览器中才能正常工作,IE8 以下不支援. 而Media Queries 的套用方法千变万化,要套用在什么样的装置中,都可以自己来定义. 关于Med ...
- CSS3的媒体查询(Media Queries)与移动设备显示尺寸大全
媒体查询介绍 我今天就总结一下响应式设计的核心CSS技术Media(媒体查询器)的用法. 先看一个简单的例子: <link rel="stylesheet" media=&q ...
- 用JavaScript操作Media Queries
在响应式(或自适应)设计中要用到Media Queries这个CSS属性,但在某些时候我们需要对Media Queries进行动态操作,这时候可以使用Javascript. 如以下Media Quer ...
- Device Pixel Ratio & Media Queries
一些重要的名词解释: CSS pixels(CSS 像素):详见http://www.w3.org/TR/css3-values/#reference-pixe CSS声明的像素值,可随着放大缩小而放 ...
- 使用CSS3 Media Queries实现网页自适应
原文来源:http://webdesignerwall.com 翻译:http://xinyo.org 当今银屏分辨率从 320px (iPhone)到 2560px (大屏显示器)或者更大.人们也不 ...
- 【CSS3 入门教程系列】CSS3 Media Queries 实现响应式设计
在 CSS2 中,你可以为不同的媒介设备(如屏幕.打印机)指定专用的样式表,而现在借助 CSS3 的 Media Queries 特性,可以更为有效的实现这个功能.你可以为媒介类型添加某些条件,检测设 ...
- 使用CSS3 Media Queries实现网页自适应(转)
当今银屏分辨率从 320px (iPhone)到 2560px (大屏显示器)或者更大.人们也不再仅仅用台式机来浏览网页,现在有手机,平板电脑等等.所以传统的固定宽度设计形式将不再是个最佳选择,网页设 ...
- CSS3 Media Queries模板
使用max-width @media screen and (max-width: 600px) { //你的样式放在这里.... } 使用min-width @media screen and (m ...
随机推荐
- Xcode 的正确打开方式——Debugging(转载)
Xcode 的正确打开方式——Debugging 程序员日常开发中有大量时间都会花费在 debug 上,从事 iOS 开发不可避免地需要使用 Xcode.这篇博客就主要介绍了 Xcode 中几种能 ...
- 查看mysql数据库引擎
1.查看支持的引擎 show engines; 2.查看当前引擎 show variables like '%storage_engine%'
- eclipse快捷键使用
Eclipse的编辑功能非常强大,掌握了Eclipse快捷键功能,能够大大提高开发效率.Eclipse中有如下一些和编辑相关的快捷键.1. [ALT+/]此快捷键为用户编辑的好帮手,能为用户提供内容的 ...
- turing 项目引用
1.友盟自动更新 2.友盟统计 3.友盟消息推送 http://www.bejson.com/json2javapojo/ 引用bejson 解析JSON生成类,数组 private List< ...
- python中报错总结
python标准异常 异常名称 描述 BaseException 所有异常的基类 SystemExit 解释器请求退出 KeyboardInterrupt 用户中断执行(通常是输入^C) Ex ...
- [ZOJ 1006] Do the Untwist (模拟实现解密)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=6 题目大意:给你加密方式,请你求出解密. 直接逆运算搞,用到同余定理 ...
- Android--输入自动提示AutoCompleteTextView
布局文件: <TextView android:id="@+id/title" android:layout_width="wrap_content" a ...
- Android——ImageSwitcher 图片切换
public class ImageSwitcherActivity extends Activity implements OnClickListener, ViewFactory { ...
- OS X open finder here in terminal
just type open .
- JAVA中求解对象所占字节大小
该类为cache4j缓存框架中的工具类方法,该方法实现了两个接口 接口1:计算对象在内存中所占字节数 接口2:复制对象,实现深度克隆效果,实现原理为先序列化对象,然后在反序列化对象:返回一个新的对象, ...