每当新请求到来时,如何更改元素的高度

Posted

技术标签:

【中文标题】每当新请求到来时,如何更改元素的高度【英文标题】:How can I change the height of an element whenever the new request comes 【发布时间】:2020-10-10 13:32:35 【问题描述】:

我有一个固定定位的导航栏和页脚,它们的高度取决于窗口大小,因此我为每个导航栏和页脚制作了​​一个 div,并使其高度与导航栏和页脚相同,这样主区域就不需要重叠。当我首先加载页面时它工作,当我调整窗口大小时它工作。但是如果我从 index.html.erb 到 show.hteml.erb,或者做一些分页,那些 div 的高度变成 0。有什么办法可以解决这个问题?

我的 _navbar.html.erb 如下

<nav class="fixed-top navbar navbar-expand-lg navbar-dark" style="background-color: #202020;" id="nav-id">
...
</nav>
<div id="nav-margin">
</div>

我的 application.js 如下

$(document).on('turbolinks:load', function() 
  window.addEventListener('load', () => 
    this.getElementById('nav-margin').setAttribute("style", `height:$this.getElementById('nav-id').offsetHeightpx`);
    this.getElementById('footer-margin').setAttribute("style", `height:$this.getElementById('footer-id').offsetHeightpx`);
  );

  window.addEventListener('resize', () => 
    this.getElementById('nav-margin').setAttribute("style", `height:$this.getElementById('nav-id').offsetHeightpx`);
    this.getElementById('footer-margin').setAttribute("style", `height:$this.getElementById('footer-id').offsetHeightpx`);
  );
);

【问题讨论】:

【参考方案1】:

我不确定我是否完全理解这个问题,但看起来你可能过于复杂了:如果你有一个静态页眉/页脚,确保它们不与其他(非静态)重叠的最简单方法元素是给你的body 一个适当的边距。因此,如果页眉和页脚的高度都为 20 像素,我喜欢在 body 上设置 30 像素的顶部和底部边距,以确保静态元素周围有足够的空间。

【讨论】:

感谢您的回答,但我的导航栏和页脚具有动态高度,具体取决于窗口大小。这就是问题所在。

以上是关于每当新请求到来时,如何更改元素的高度的主要内容,如果未能解决你的问题,请参考以下文章

每当元素 clientWidth 更改时,Vue 都会更新数据道具

如何动态更改 jQuery Datatables 高度

滚动时更改元素的高度

如何根据 <div> 元素的高度或宽度更改其颜色?

之后更改 StackView 元素的高度

单击时如何使用 Angular js 的 $location.hash 更改 html 元素的颜色?