Попробуйте отследить screen.width
и screen.height
. Они будут возвращать разные значения при изменении разрешения экрана. Подробнее здесь .
function doSomething(){
if ( screen.width < 1280 ){
console.log('Too small')
}else{
console.log('Nice!')
}
}
Однако, Насколько я знаю нет никаких событий, инициируемых при изменении разрешения экрана; Это означает, что вы не можете сделать это $(screen).resize(function(){/*code here*/});
Так что другим способом сделать это будет использование setTimeout()
, например: [ не рекомендуется ]
var timer,
checkScreenSize = function(){
if ( screen.width < 1280 ){
console.log('Too small')
}else{
console.log('Nice!')
}
timer = setTimeout(function(){ checkScreenSize(); }, 50);
};
checkScreenSize();
В рекомендуемой версии будет использоваться requestAnimationFrame . Как описано здесь Полом Ирландским. Потому что, если вы запускаете цикл на невидимой вкладке, браузер не будет его запускать. Для лучшей общей производительности.
// shim layer with setTimeout fallback
window.requestAnimFrame = (function(){
return window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
window.msRequestAnimationFrame ||
function( callback ){
window.setTimeout(callback, 1000 / 60);
};
})();
// usage:
// instead of setInterval(checkScreenSize, 50) ....
(function loop(){
requestAnimFrame(loop);
checkScreenSize();
})();
[обновление]
Для тех, кто хочет реализовать requestAnimationFrame в ответ Натана , вот и все; Пользовательское событие jQuery, которое вызывается при изменении разрешения, использует requestAnimationFrame , когда доступно для меньшего использования памяти:
window.requestAnimFrame = (function(){
return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function( callback ){ window.setTimeout(callback, 1000 / 60); };
})();
var width = screen.width,
height = screen.height,
checkScreenSize = function () {
if (screen.width !== width || screen.height !== height) {
width = screen.width;
height = screen.height;
$(window).trigger('resolutionchange');
}
};
(function loop(){
requestAnimFrame(loop);
checkScreenSize();
})();
Использование:
$(window).bind('resolutionchange', function(){
console.log('You have just changed your resolution!');
});