gpt4 book ai didi

javascript - 当特定的 div 击中它时,或者当它距离顶部 100px 时,如何让我的固定标题滚动

转载 作者:太空宇宙 更新时间:2023-11-04 06:25:03 25 4
gpt4 key购买 nike

我可以看到很多方法与我想要实现的目标相反,但注意我需要什么。

我有一个 100 像素高的固定标题。我希望它在指定的 div 到达页眉或距离屏幕顶部 100 像素时与页面的其余部分一起滚动。

我曾向页眉添加一个滚动类,这实际上只是使其位置绝对,导致页眉跳出屏幕。然后我将它翻译回 View 中,这在所有屏幕尺寸上的效果都不一样。

我的下一个想法可能是保持固定不变,但根据滚动位置向标题添加一个负的 transformY。这将达到我想要的相同效果,但我不太确定如何实现。

如果您需要更多信息,我很乐意提供。

编辑:

以下是一些屏幕截图:

从页面顶部开始:

enter image description here

然后这是我希望页眉变得不固定并与页面的其余部分一起滚动的地方:

enter image description here

最佳答案

查看我的解决方案。希望这会有所帮助。

const headerEl = document.querySelector('header')
const targetEl = document.querySelector('#target')

const targetTopPos = targetEl.getBoundingClientRect().top

let isHeaderFixed = true

document.onscroll = () => {
const targetTopOffset = targetEl.getBoundingClientRect().top

if (isHeaderFixed && targetTopOffset < 100) {
headerEl.style.position = 'absolute'
headerEl.style.top = `${targetTopPos - 100}px`
isHeaderFixed = !isHeaderFixed
}

if (!isHeaderFixed && targetTopOffset >= 100) {
headerEl.style.position = 'fixed'
headerEl.style.top = '0px'
isHeaderFixed = !isHeaderFixed
}
}
body {
padding: 0;
margin: 0;
position: relative;
}

header {
position: fixed;
height: 100px;
width: 100%;
background: lightblue;
}

.content {
line-height: 100px;
}

.target {
width: 100%;
background: red;
}
<header>
Custom header
</header>
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam suscipit tellus urna, ut tristique felis lobortis sed. Phasellus maximus at magna mattis vulputate. Pellentesque tempor, urna vitae congue pellentesque, est mauris faucibus nulla, vitae molestie leo purus a leo. Curabitur ut mi ac sem finibus consectetur a blandit massa. Morbi ornare tincidunt ipsum, et accumsan erat fringilla a. Cras egestas, nibh vel condimentum ultrices, nunc ipsum tempus magna, eu ullamcorper tortor magna id lacus. Morbi euismod lacus a ligula rutrum, in aliquet lectus blandit. Nam placerat sollicitudin lectus eu ornare. Etiam placerat diam eget magna blandit rutrum. Nulla et luctus massa. Sed sit amet mauris in magna tincidunt consequat. Proin mattis sit amet arcu a gravida. Nullam tempor urna nec dolor convallis consectetur sit amet a elit. Cras ut odio nec lacus efficitur porta nec sit amet justo.
</div>
<div id="target" class="target">target</div>
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam suscipit tellus urna, ut tristique felis lobortis sed. Phasellus maximus at magna mattis vulputate. Pellentesque tempor, urna vitae congue pellentesque, est mauris faucibus nulla, vitae molestie leo purus a leo. Curabitur ut mi ac sem finibus consectetur a blandit massa. Morbi ornare tincidunt ipsum, et accumsan erat fringilla a. Cras egestas, nibh vel condimentum ultrices, nunc ipsum tempus magna, eu ullamcorper tortor magna id lacus. Morbi euismod lacus a ligula rutrum, in aliquet lectus blandit. Nam placerat sollicitudin lectus eu ornare. Etiam placerat diam eget magna blandit rutrum. Nulla et luctus massa. Sed sit amet mauris in magna tincidunt consequat. Proin mattis sit amet arcu a gravida. Nullam tempor urna nec dolor convallis consectetur sit amet a elit. Cras ut odio nec lacus efficitur porta nec sit amet justo.
</div>

关于javascript - 当特定的 div 击中它时,或者当它距离顶部 100px 时,如何让我的固定标题滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55158176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com