#javascript #reactjs #jsx #lottie
#javascript #reactjs #jsx #лотти
Вопрос:
<div className="box one" id="section1">
<div className="num">1</div>
</div>`enter code here`
<div className="box two" id="section2">
<div className="num">2</div>
</div>
<div className="box three" id="section3">
<div className="num">3</div>
</div>
<div className="box four" id="section4">
<div className="num">4</div>
</div>
это код jsx, давайте предположим, что он выровнен по вертикали с помощью CSS, мне просто нужно изменить логику прокрутки на вертикальную и получить положение прокрутки, потому что я хочу вызвать анимацию лотти с помощью события прокрутки
Ответ №1:
Используйте перехватчики реакции.
const ScrollComponent = () => {
const section1 = useRef(null)
const section2 = useRef(null)
const section3 = useRef(null)
const section4 = useRef(null)
useEffect(() => {
window.addEventListener('scroll', handleScroll, true)
return () => {
window.removeEventListener('scroll', handleScroll, true)
}
}, [])
const handleScroll = (e) => {
if (e.target.scrollTop === section1.current.offsetTop) {
// Scroll at section 1
}
if (e.target.scrollTop === section2.current.offsetTop) {
// Scroll at section 2
}
if (e.target.scrollTop === section3.current.offsetTop) {
// Scroll at section 3
}
if (e.target.scrollTop === section4.current.offsetTop) {
// Scroll at section 4
}
}
return (
<>
<div className="box one" ref={section1}">
<div className="num">1</div>
</div>
<div className="box two" ref={section2}>
<div className="num">2</div>
</div>
<div className="box three" ref={section3}>
<div className="num">3</div>
</div>
<div className="box four" ref={section4}>
<div className="num">4</div>
</div>
</>
)
}
Комментарии:
1. Здравствуйте, спасибо за ваш ответ, но этот код не отключил вертикальную прокрутку, возможно, я не очень хорошо это объяснил, на самом деле я выровнял эту страницу по горизонтали с этими разделами, и я хочу отключить вертикальную прокрутку и вместо этого включить горизонтальную прокрутку
2. затем используйте scrollLeft и offsetLeft. overflow-x: auto; overflow-y: hidden; отключит вертикальную прокрутку.
3. Я боюсь, что это не сработало, на самом деле колесо мыши перемещает страницу горизонтально, как будто оно отключено. И, кстати, в методе HandleScroll, что я должен поместить в «// Scroll в разделе x» в вашем примере
4. Замените scrollTop на scrollLeft и offsetTop на offsetLeft, например
if (e.target.scrollLeft === section1.current.offsetLeft)
5. да, я уже это сделал, и ничего не произошло, но я не знаю, что я должен вставить в оператор if в этой части;
//Scroll at section 1
, я должен просто оставить это так?