gpt4 book ai didi

Javascript 向下滚动到一个部分

转载 作者:行者123 更新时间:2023-11-27 22:57:18 24 4
gpt4 key购买 nike

我正在制作我的投资组合网站。我想在用户滚动到指定部分时添加一个 css 类。(我想使用 Javascript 事件)

例如,首先使用 css 隐藏一个元素,然后当用户向下滚动到该部分时,使用 vanilla Javascript 显示该元素。

<div id="info"> info... </div> 
#info { display :none;}

正在加载 Javascript 代码😬...

最佳答案

好的,这是个大问题,您可以使用 Intersection Observer但并非所有浏览器都支持,另一种方法是在窗口上使用滚动事件。

function debounce(func, wait = 20, immediate = true) {
let timeout
return function() {
let context = this,
args = arguments
let later = function() {
timeout = null
if (!immediate) func.apply(context, args)
}
let callNow = immediate && !timeout
clearTimeout(timeout)
timeout = setTimeout(later, wait)
if (callNow) func.apply(context, args)
}
}

const images = document.querySelectorAll('img')

function checkSlide(e) {
images.forEach(img => {
const slideInAt = window.scrollY + window.innerHeight - img.height / 2
const imageBottom = img.offsetTop + img.height
const isHalfShown = slideInAt > img.offsetTop
const isNotScrolledPast = window.scrollY < imageBottom
if (isHalfShown && isNotScrolledPast) {
img.classList.add('active')
} else {
img.classList.remove('active')
}
})
}

window.addEventListener('scroll', debounce(checkSlide))

这是我按照 Wes Bos 编写的代码' javascript30 类(class),我强烈推荐,它是免费的

总结:

函数 debounce 是为了停止调用事件太多次,超出需要。

const 图像是我 dom 上的所有图像,我正在检查图像,但你可以检查任何你想检查的 div。

checkSlide 函数检查我是否已到达但未通过每个图像,您可以在此处检查所需的每个 div。

关于Javascript 向下滚动到一个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59197754/

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