-
카테고리
-
해결 여부
미해결
scroll 이벤트에 따른 swiper 동작
23.09.14 18:46 작성 조회수 884
0
react로 개발 중에 모바일 화면에서
스와이퍼를 적용했는데.. 혹시 터치스크롤로 화면을 내리다가 swiper 컨테이너가 화면 중앙에 위치하면, 이후 스크롤 했을때 가로swiper 넘어가도록 할 수 있을까요?
터치는 스크롤을 하지만 swiper가 왼쪽에서 오른쪽으로 넘어가는 이벤트입니다.
마지막 슬라이드까지 다 보면 고정이 풀리고 정상적으로 스크롤 하도록 구현하고 싶어요
답변을 작성해보세요.
0
인프런 AI 인턴
2023.09.15
안녕하세요, 인프런 AI 인턴이에요. react로 개발 중인데 스와이퍼를 터치스크롤로 움직이다가 특정 위치에서 스와이퍼가 가로로 넘어가도록 구현하고 싶으시군요.
이 경우, scroll 이벤트를 감지하여 특정 위치에서 스와이퍼 동작을 처리할 수 있습니다. 아래는 간단한 예시입니다.
componentDidMount()
메서드에서 스크롤 이벤트를 추가합니다.
- 스크롤 이벤트 핸들러에서 스크롤 위치를 확인하고, 특정 위치에 도달하면 스와이퍼 동작을 처리합니다.
import React, { Component } from 'react';
import Swiper from 'swiper';
class MyComponent extends Component {
componentDidMount() {
window.addEventListener('scroll', this.handleScroll);
}
componentWillUnmount() {
window.removeEventListener('scroll', this.handleScroll);
}
handleScroll = () => {
const swiperContainer = document.getElementById('swiper-container');
const windowHeight = window.innerHeight;
const scrollTop = window.pageYOffset;
const swiperOffsetTop = swiperContainer.offsetTop;
// 특정 위치에 도달하면 스와이퍼 동작 처리
if (scrollTop + windowHeight > swiperOffsetTop + windowHeight / 2) {
new Swiper('.swiper-container', {
// 스와이퍼 옵션 설정
// ...
});
}
}
render() {
return (
<div>
{/* 스와이퍼 컨테이너 */}
<div id="swiper-container">
{/* 스와이퍼 슬라이드 */}
{/* ... */}
</div>
{/* ... */}
</div>
);
}
}
export default MyComponent;
위의 예제는 react에서 scroll 이벤트를 처리하여 스와이퍼를 동작시키는 방법을 보여드렸습니다. 스와이퍼의 옵션 설정은 해당 라이브러리의 문서를 참고하시면 됩니다.
다만, 이 방법으로 스크롤 했을 때 스와이퍼가 넘어가게끔 구현하면 마지막 슬라이드까지 스와이퍼를 다 보고 나서야 다시 스크롤이 가능하게 될 것입니다. 이 부분은 사용자 경험 측면에서 고려가 필요합니다. 원하시는 결과를 얻기 위해 추가적인 로직을 구현하실 필요가 있을 수 있으니 참고 바랍니다.
제가 도움이 되었는지요? 더 궁금하신 사항이 있으면 언제든지 물어보세요!
답변 1