媒體查詢通常較好。但是,如果我處於運行時有很多操作的單頁應用程序中,我將使用onresize()來代替。 Javascript爲您提供了更多的動態設置斷點的自由(特別是如果您正在使用append()等東西移動DOM樹內的元素時)。您有安裝是非常接近我使用的一個:
function setWidthBreakpoints(windowWidth) {
if (windowWidth >= 1200) {
newWinWidth = 'lg';
} else if (windowWidth >= 992) {
newWinWidth = 'md';
} else if (windowWidth >= 768) {
newWinWidth = 'sm';
} else {
newWinWidth = 'xs';
}
}
window.onresize = function() {
setWidthBreakpoints($(this).width());
if (newWinWidth !== winWidth) {
onSizeChange();
winWidth = newWinWidth;
}
};
function onSizeChange() {
// do some size changing events here.
}
,你有沒有包括在被認爲是最佳做法的一件事是debouncing function,如保羅·愛爾蘭下面提供的一個,這可防止重複resize事件的瀏覽器窗口中燒:
(function($,sr){
// debouncing function from John Hann
// http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
var debounce = function (func, threshold, execAsap) {
var timeout;
return function debounced() {
var obj = this, args = arguments;
function delayed() {
if (!execAsap)
func.apply(obj, args);
timeout = null;
};
if (timeout)
clearTimeout(timeout);
else if (execAsap)
func.apply(obj, args);
timeout = setTimeout(delayed, threshold || 100);
};
}
// smartresize
jQuery.fn[sr] = function(fn){ return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
})(jQuery,'smartresize');
// usage:
$(window).smartresize(function(){
// code that takes it easy...
});
所以結合了去抖到您的調整大小功能,你應該是金色的。
CSS媒體查詢似乎是一個更好的選擇,這取決於你實際上在做什麼? – adeneo 2015-02-23 17:50:31
我基本上是在移動設備上的主要內容之後移動左邊欄,所以它出現在屏幕的底部而不是頂部。不確定這可以通過單獨的媒體查詢來實現嗎? – pavsid 2015-02-23 17:55:25
我同意adeneo,我認爲你應該使用媒體查詢 – 2015-02-23 17:58:24