Javascript 在没有指定类时获取div的高度
构建时,我在javascript(纯javascript)中遇到了一个问题。我有一个固定的导航条,当用户向下滚动时,导航条会收缩。我不使用粘性元素,因为它们在某些计算机上遇到困难。当用户向下滚动时,该类将添加到导航栏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)); } 因为这个导航条从来都不
.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));
}
这是一个示例标题。
它有两行文本。
你能像你说的那样澄清一下使用远视的错误吗?可能需要一个