Как изменить высоту div при изменении размера окна? - PullRequest
29 голосов
/ 03 мая 2010

У меня есть div на моем сайте, который должен быть высотой окна. Вот что я получил:

    $(document).ready(function() {
    var bodyheight = $(document).height();
    $("#sidebar").height(bodyheight);
});

Однако, оно не изменяется автоматически при изменении размера окна? Кто-нибудь знает, как это исправить?

Спасибо

Ответы [ 6 ]

51 голосов
/ 03 мая 2010

Вы также должны сделать это в resize событие, попробуйте это:

$(document).ready(function() {
    $(window).resize(function() {
        var bodyheight = $(this).height();
        $("#sidebar").height(bodyheight);
    }).resize();
});
5 голосов
/ 02 апреля 2013

Просто чтобы показать DRY-up, предложенный в комментарии к принятому ответу:

$(document).ready(function() {
  body_sizer();
  $(window).resize(body_sizer);
});
function body_sizer() {
  var bodyheight = $(window).height();
  $("#sidebar").height(bodyheight);
}

И, конечно, это немного глупо, поскольку это можно сделать с помощью CSS проще. Но если бы был расчет, это было бы другой историей. Например, этот пример, в котором div заполняет нижнюю часть окна, за исключением небольшого фактора.

$(function(){
  resize_main_pane();
  $(window).resize(resize_main_pane);
});
function resize_main_pane() {
  var offset = $('#main_scroller').offset(),
  remaining_height = parseInt($(window).height() - offset.top - 50);
  $('#main_scroller').height(remaining_height);
}
5 голосов
/ 25 октября 2011

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

    $(document).ready(function() {
       $(window).resize(function() {
          var bodyheight = $(window).height();
          $("#sidebar").height(bodyheight);
       }); 
    });

В противном случае, по моему опыту, высота будет увеличиваться, независимо от того, как вы измените размер окна. Это займет высоту текущего окна.

4 голосов
/ 03 мая 2010

В дополнение к тому, что сказали другие, убедитесь, что вы извлекаете код обработчика событий в отдельную функцию и вызываете его из ready и resize обработчиков событий. Таким образом, если вы добавите еще код или вам нужно будет привязать его к другим событиям, у вас будет только одно место, где можно изменить логику кода.

1 голос
/ 03 мая 2010

Используйте событие resize.

Это должно работать:

 $(document).ready(function() {
   $(window).resize(function() {
    var bodyheight = $(document).height();
    $("#sidebar").height(bodyheight);
}); });
0 голосов
/ 10 октября 2014
$(document).ready(function() 
{

     $(window).on("resize",function() {

          var bodyheight = $(document).height();

          $("#sidebar").height(bodyheight);
     });

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...