如何在窗口大小调整时更改高度div?

30 jquery height window

我的网站上有一个div应该是窗口的高度.这就是我得到的:

    $(document).ready(function() {
    var bodyheight = $(document).height();
    $("#sidebar").height(bodyheight);
});
Run Code Online (Sandbox Code Playgroud)

但是,调整窗口大小时它不会自动更改?有没有人知道如何解决这个问题?

谢谢

Sar*_*raz 52

您还需要在resize事件中执行此操作,请尝试以下操作:

$(document).ready(function() {
    $(window).resize(function() {
        var bodyheight = $(this).height();
        $("#sidebar").height(bodyheight);
    }).resize();
});
Run Code Online (Sandbox Code Playgroud)

  • 我认为如果编辑这个解决方案,世界将是一个更好的地方,以便`ready`和`resize`调用共享一个函数,而不是使用重复的代码.人们倾向于盲目地复制粘贴javascript代码:为什么不向他们展示最佳实践呢? (19认同)

小智 5

对此进行一些澄清,为了在每次回调后调整窗口大小,你必须明确要检索的高度.

    $(document).ready(function() {
       $(window).resize(function() {
          var bodyheight = $(window).height();
          $("#sidebar").height(bodyheight);
       }); 
    });
Run Code Online (Sandbox Code Playgroud)

否则,根据我的经验,高度将继续增加,现在重要的是你如何调整窗口大小.这将采用当前窗口的高度.


elc*_*elc 5

只是为了在接受回答的评论中显示DRY-up:

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

当然,这有点愚蠢,因为它可以通过CSS更简单地完成.但是,如果涉及的计算将是一个不同的故事.例如,这个例子使得div填充窗口的底部,减去一点点的fudgefactor.

$(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);
}
Run Code Online (Sandbox Code Playgroud)