Как перемещать текст по горизонтали при прокрутке при переходе к определенной части страницы с помощью React?

#javascript #reactjs

#язык JavaScript #реагирует на

Вопрос:

У меня есть две строки текста в середине моей страницы, которые я хочу, чтобы они прокручивались горизонтально снаружи страницы, чтобы войти, а затем выйти с другой стороны. Верхняя строка идет слева и проходит через правую, а вторая строка делает противоположное. Моя проблема в том, что scrollY не остается постоянным при изменении размера экрана.

Есть ли хорошее решение для прокрутки текста только тогда, когда вы попадаете в этот конкретный раздел страницы? Прямо сейчас раздел отображается на 2200 пикселей при полном просмотре, и я использую это число для запуска прокрутки

У меня есть этот крючок, который прослушивает свиток:

 export default function useScrollListener() {  const [data, setData] = useState({  x: 0,  y: 0,  lastX: 0,  lastY: 0  });   // set up event listeners  useEffect(() =gt; {  const handleScroll = () =gt; {  setData((last) =gt; {  return {  x: window.scrollX,  y: window.scrollY,  lastX: last.x,  lastY: last.y  };  });  };   handleScroll();  window.addEventListener("scroll", handleScroll);   return () =gt; {  window.removeEventListener("scroll", handleScroll);  };  }, []);   return data; }  

На странице, на которой есть две строки, у меня есть :

 const scroll = useScrollListener(); const [position, setPosition] = useState('')  useEffect(() =gt; {  let pos = scroll.y  let scrollPos = pos - 3000    // Section with the lines of text starts around 2200 on scrollY  if(scroll.y gt; 2200){  setPosition(scrollPos.toString())  } }, [scroll.y]);  

Текст обернут вокруг div, который является относительным, и текст имеет абсолютную позицию, сдвигающую элемент вправо или влево на 800 пикселей.

 lt;div className="line1"gt;  lt;p className="text1" style={{"left": `${position}px`}}gt;  Lorem ipsum dolor sit amet.  lt;/pgt; lt;/divgt;   lt;div className="line2"gt;  lt;p className="text1" style={{"right": `${position}px`}}gt;  Lorem ipsum dolor sit amet.  lt;/pgt; lt;/divgt;