Javascript 在没有指定类时获取div的高度

Javascript 在没有指定类时获取div的高度,javascript,html,css,Javascript,Html,Css,构建时,我在javascript(纯javascript)中遇到了一个问题。我有一个固定的导航条,当用户向下滚动时,导航条会收缩。我不使用粘性元素,因为它们在某些计算机上遇到困难。当用户向下滚动时,该类将添加到导航栏 .sticky { position: fixed; padding: 10px 5% 10px 5%; background-image: linear-gradient(rgb(0, 0, 0),rgb(0, 0, 0)); } 因为这个导航条从来都不

构建时,我在javascript(纯javascript)中遇到了一个问题。我有一个固定的导航条,当用户向下滚动时,导航条会收缩。我不使用粘性元素,因为它们在某些计算机上遇到困难。当用户向下滚动时,该类将添加到导航栏

.sticky {
    position: fixed;
    padding: 10px 5% 10px 5%;
    background-image: linear-gradient(rgb(0, 0, 0),rgb(0, 0, 0));
}
因为这个导航条从来都不是相对的,所以我在主体中第二个元素的顶部添加了一个边距。像这样:

var mainNav = document.querySelector(".header-nav");
var tmp = document.getElementsByTagName('HEADER')[0];

tmp.nextElementSibling.style.marginTop = mainNav.offsetHeight + "px";

window.addEventListener("resize", function(event) {
    tmp.nextElementSibling.style.marginTop = mainNav.offsetHeight + "px";
})
我遇到的问题涉及我使用的调整大小功能,因为页眉需要根据浏览器大小改变高度。现在,如果我在页面顶部调整页面大小,当标题为unstrunk(比如150px)时,一切正常。但是如果我在导航条变小的时候滚动到页面的中间,比如说70像素高,那么当我向上滚动时,第二个元素的marginTop仅为70px,而当导航条再次增长时,我需要的是150px。希望这能把我的问题弄清楚。我想知道是否有办法将mainNav.offsetHeight作为与mainNav类似的值(不含.sticky类)。offsetHeight来自以下问题:

我想知道是否有一种方法可以将
mainNav.offsetHeight
作为一个类似
mainNav(不带.sticky类)的值。offsetHeight

问题是如何确定标题的默认高度(no.sticky)和.sticky高度

下面是一个技巧:

A.克隆标头并使克隆不可见

B.在实际标头之后添加克隆标头

C.确定克隆标头的默认高度和
.sticky
高度

D.从DOM中删除克隆的标头

E.返回默认值和
.sticky
偏移高度

函数getHeaderHeights(){ const hdr=document.querySelector('.header nav'); 常数hdrClone=hdr.cloneNode(真); hdrClone.style.opacity=0; hdr.插入式连接元件(“后端”,HDRCONE); const defaultHeight=hdrClone.offsetHeight; hdrClone.classList.add('sticky'); const stickyHeight=hdrClone.offsetHeight; hdrClone.remove(); 返回{ 默认高度, 粘性高度 }; } 常数{ 默认高度, 粘性高度 }=getHeaderHeights(); log(`Header-ht:${defaultHeight},stickyHt:${stickyHeight}`)
.header导航{
背景色:#A0;
填充:40px 5%;
颜色:白色;
宽度:100%;
}
.粘的{
位置:固定;
填充:10px5%10px5%;
背景图像:线性梯度(rgb(0,0,0),rgb(0,0,0));
}

这是一个示例标题。
它有两行文本。
你能像你说的那样澄清一下使用
远视的错误吗?可能需要一个