【发布时间】:2013-10-26 03:44:41
【问题描述】:
我正在使用一些 javascript 来检测宽度变化,只要是媒体查询。我需要两者,因为我需要移动 html。两者都有效,除了它们发生的时间不同,我猜测滚动条包含在其中一个中,但假设滚动条为 15px 是愚蠢的,因为它的宽度在浏览器中是不一样的。有更好的方法吗?
我的媒体查询是这样激活的:
<link rel="stylesheet" href="mobile.css" media="screen and (max-width: 767px)" />
并使用:
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
虽然我的 JS 看起来像这样:
var delay = (function(){
var timer = 0;
return function(callback, ms){
clearTimeout (timer);
timer = setTimeout(callback, ms);
};
})();
var pause = 100;
$(window).resize(function() {
delay(function() {
var width = $(window).width();
if ( width >= 768 ) {
if (window.myDevice != 'desktop' || window.myDevice === undefined) {
window.myDevice = 'desktop';
$('#head').prepend($('#branding'));
}
} else if ( width <= 767 ) {
if (window.myDevice != 'mobile' || window.myDevice === undefined) {
window.myDevice = 'mobile';
$('#content').prepend($('#branding'));
}
}
}, pause );
});
谢谢!
【问题讨论】:
-
滚动条在浏览器中是相同的,只是在操作系统中不同。即便如此,它们的宽度也往往相同。即使视觉宽度看起来不那么宽,物理宽度也是。
-
它总是延迟,还是只是第一个窗口调整大小?我的猜测是延迟是浏览器下载样式表文件所需的时间长度。
-
显然您在媒体查询中使用了“设备宽度”一词,因此它与 Jquery 上的“宽度”有很大不同。
-
这是在视口中找到的,而不是在媒体查询中。
标签: javascript jquery css media-queries