반응형
프로젝트에서 Vue3 Carousel을 사용하다 보면, 해상도가 작아지거나 브라우저 창 크기를 줄였을 때 이전/다음 슬라이드가 화면에 겹쳐서 보이는 문제가 발생할 수 있습니다.
처음에는 캐러셀 자체 버그인가 싶었는데, 원인은 뷰포트 영역이 슬라이드 밖 컨텐츠를 잘라내지 못한 것이었습니다.
문제 상황
아래와 같은 상황이 자주 발생합니다.
- 데스크톱 풀스크린에서는 정상적으로 보임
- 하지만 모바일이나 작은 화면에서는 이전/다음 슬라이드의 일부가 비쳐 보임
- 특히 Motion 애니메이션(x: '50%') 같이 좌우로 이동하는 요소가 있으면 더 심해짐
해결 방법
해답은 의외로 간단했습니다.
뷰포트 영역에 overflow:hidden을 강제로 주는 것만으로 문제를 해결할 수 있었어요.
.carousel__viewport {
overflow: hidden !important;
}
추가로 적용하면 좋은 보완책
문제가 완전히 사라지긴 했지만, 혹시 모를 상황을 대비해 몇 가지 추가 팁을 정리했습니다.
1. 슬라이드 폭 고정
슬라이드가 뷰포트를 넘지 않도록 강제로 폭을 지정합니다.
.carousel__slide {
flex: 0 0 100% !important;
width: 100% !important;
overflow: hidden;
}
2. 내부 컨텐츠 밀림 방지
Flex 컨테이너 내부에서 텍스트나 이미지가 가로폭을 강제로 늘리지 않도록 min-w-0을 활용하세요.
<div class="flex-1 min-w-0 overflow-hidden">
...
</div>
3. Motion 애니메이션 단위 조정
x: '50%' 대신 x: 60(px 단위)을 사용하면 작은 화면에서 컨텐츠가 과도하게 바깥으로 튀어나가는 현상을 줄일 수 있습니다.
- 핵심 해결책 : .carousel__viewport { overflow:hidden; }
- 보완책 : 슬라이드 폭 고정, min-w-0 적용, 애니메이션 px 단위로 변경
작은 한 줄 수정으로 겹쳐 보이는 문제를 해결할 수 있었고, 추가 보완책까지 적용하면 모바일 환경에서도 훨씬 안정적인 UI를 유지할 수 있습니다.
반응형
'IT & 개발 > vue' 카테고리의 다른 글
Vue + Tailwind에서 반응형 메뉴 구현 시 흔히 겪는 문제와 해결법 (0) | 2025.07.15 |
---|---|
Vue 3에서 컴포넌트 간 데이터 변동을 감지하고 관리하는 주요 방법들 (1) | 2024.11.15 |
countdown timer 설정 (0) | 2024.08.20 |
Vue 3.0에서 타입스크립트 사용하기 (2) | 2023.10.11 |
[Vue] Component 재사용 (3) | 2023.01.17 |