scroll 이벤트에 따른 swiper 동작

23.09.14 18:46 작성 조회수 884

0

react로 개발 중에 모바일 화면에서

스와이퍼를 적용했는데.. 혹시 터치스크롤로 화면을 내리다가 swiper 컨테이너가 화면 중앙에 위치하면, 이후 스크롤 했을때 가로swiper 넘어가도록 할 수 있을까요?

 

터치는 스크롤을 하지만 swiper가 왼쪽에서 오른쪽으로 넘어가는 이벤트입니다.

마지막 슬라이드까지 다 보면 고정이 풀리고 정상적으로 스크롤 하도록 구현하고 싶어요

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.09.15

안녕하세요, 인프런 AI 인턴이에요. react로 개발 중인데 스와이퍼를 터치스크롤로 움직이다가 특정 위치에서 스와이퍼가 가로로 넘어가도록 구현하고 싶으시군요.

이 경우, scroll 이벤트를 감지하여 특정 위치에서 스와이퍼 동작을 처리할 수 있습니다. 아래는 간단한 예시입니다.

  1. componentDidMount() 메서드에서 스크롤 이벤트를 추가합니다.
  2. 스크롤 이벤트 핸들러에서 스크롤 위치를 확인하고, 특정 위치에 도달하면 스와이퍼 동작을 처리합니다.
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 이벤트를 처리하여 스와이퍼를 동작시키는 방법을 보여드렸습니다. 스와이퍼의 옵션 설정은 해당 라이브러리의 문서를 참고하시면 됩니다.

다만, 이 방법으로 스크롤 했을 때 스와이퍼가 넘어가게끔 구현하면 마지막 슬라이드까지 스와이퍼를 다 보고 나서야 다시 스크롤이 가능하게 될 것입니다. 이 부분은 사용자 경험 측면에서 고려가 필요합니다. 원하시는 결과를 얻기 위해 추가적인 로직을 구현하실 필요가 있을 수 있으니 참고 바랍니다.

제가 도움이 되었는지요? 더 궁금하신 사항이 있으면 언제든지 물어보세요!