2010-01-09 5 views
12

Я использую этот скрипт из snipplr, как бы установить его, чтобы контейнер div был на 100px меньше высоты newWindowHeight, например -100 или что-то в этом роде.jQuery: определение размера браузера

<script type="text/javascript" charset="utf-8"> 
$(document).ready(function(){ 

//If the User resizes the window, adjust the #container height 
$(window).bind("resize", resizeWindow); 
function resizeWindow(e) { 
    var newWindowHeight = $(window).height(); 
    $("#container").css("max-height", newWindowHeight); 
} 

});   
</script> 

ответ

30

Сценарий, который вы обнаружили, слишком усложнил проблему. Следующие работал для меня:

$(function(){ 

    // Cache reference to our container 
    var $container = $("#container"); 

    // A function for updating max-height 
    function updateMaxHeight() { 
     $container.css("max-height", $(this).height() - 100); 
    } 

    // Call updateMaxHeight when browser resize event fires 
    $(window).on("resize", updateMaxHeight); 

}); 

Одно предупреждение о том, что событие изменения размера вызывается много при изменении размера браузера; это не просто вызвано после изменения размера браузера. В результате вы могли бы вызвать функцию обратного вызова сотни раз - это, как правило, плохая идея.

Решение должно состоять в том, чтобы дросселировать или отменить событие. Дросселирование означает, что вы не позволяете обратному вызову запускаться больше, чем x раз за промежуток времени (возможно, 5 раз в секунду). Дебонирование означает, что вы запускаете обратный вызов через определенный промежуток времени из последнего события изменения размера (подождите до 500 миллисекунд после события изменения размера).

jQuery в настоящее время не поддерживает параметр дроссельной заслонки или дебюта, хотя есть плагины. Other popular libraries you may have used do have these features, такие как подчеркивание:

$(function(){ 

    // Cache reference to our container 
    var $container = $("#container"); 

    // A function for updating max-height 
    function updateMaxHeight() { 
     $container.css("max-height", $(this).height() - 100); 
    } 

    // Version of updateMaxHeight that will run no more than once every 200ms 
    var updateMaxHeightThrottled = _.throttle(updateMaxHeight, 200); 

    // Call updateMaxHeightThrottled when browser resize event fires 
    $(window).on("resize", updateMaxHeightThrottled); 

}); 
0

Я только что видел событие HTML под названием «OnResize», который принадлежит к особо помечать Он будет иметь более высокую производительность, то обнаружение Java с этим использование, я думаю.

<body onresize="functionhere()"> 

Я надеюсь, что это поможет вам, ребята ..

 Смежные вопросы

  • Нет связанных вопросов^_^