sticky header 下的内容在滚动时跳转
Content under sticky header jumps on scroll
我添加了一个div,里面加了一个固定的class,滚动位置到0的时候去掉了class,但是固定的[下面的内容=28=] 跳转,我不确定如何解决。
这是我的 HTML 结构:
<div class="announcement-wrapper">
<div class="announcement header-announcement">
{{ settings.announcement_content_seksy }}
</div>
</div>
这是我的原版 JS:
let scrollpos = window.scrollY
const header = document.querySelector(".announcement")
const header_height = header.offsetHeight
const add_class_on_scroll = () => header.classList.add("fixed")
const remove_class_on_scroll = () => header.classList.remove("fixed")
window.addEventListener('scroll', function() {
scrollpos = window.scrollY
if (scrollpos >= header_height) { add_class_on_scroll() }
else { remove_class_on_scroll() }
console.log(scrollpos)
})
CSS 为固定 div:
.fixed {
position: fixed;
top:0;
width: 100%;
z-index: 9999;
}
我看到过类似的问题,但我无法添加任何内容来修复跳到下面的内容。
需要更多上下文,但从它的声音来看,当您添加位置固定时,您将公告从页面的上下文中删除,因此它不再占用 space - 它是基本上漂浮在其他内容之上。这意味着内容将移至顶部。
删除 position:fixed 后,您会将其重新添加到页面中,使其占据高度,将内容向下推。
为了解决这个问题,我总是将公告固定在固定位置,并在父元素上添加一些与公告高度相同的 padding-top。或者你可以使用 position:sticky;
我添加了一个div,里面加了一个固定的class,滚动位置到0的时候去掉了class,但是固定的[下面的内容=28=] 跳转,我不确定如何解决。
这是我的 HTML 结构:
<div class="announcement-wrapper">
<div class="announcement header-announcement">
{{ settings.announcement_content_seksy }}
</div>
</div>
这是我的原版 JS:
let scrollpos = window.scrollY
const header = document.querySelector(".announcement")
const header_height = header.offsetHeight
const add_class_on_scroll = () => header.classList.add("fixed")
const remove_class_on_scroll = () => header.classList.remove("fixed")
window.addEventListener('scroll', function() {
scrollpos = window.scrollY
if (scrollpos >= header_height) { add_class_on_scroll() }
else { remove_class_on_scroll() }
console.log(scrollpos)
})
CSS 为固定 div:
.fixed {
position: fixed;
top:0;
width: 100%;
z-index: 9999;
}
我看到过类似的问题,但我无法添加任何内容来修复跳到下面的内容。
需要更多上下文,但从它的声音来看,当您添加位置固定时,您将公告从页面的上下文中删除,因此它不再占用 space - 它是基本上漂浮在其他内容之上。这意味着内容将移至顶部。
删除 position:fixed 后,您会将其重新添加到页面中,使其占据高度,将内容向下推。
为了解决这个问题,我总是将公告固定在固定位置,并在父元素上添加一些与公告高度相同的 padding-top。或者你可以使用 position:sticky;