일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 웹
- 타입스크립트
- k8s
- 이더리움
- 컴퓨터공학
- TypeScript
- react
- 알고리즘
- 클라우드
- docker
- 가상화
- 블록체인
- BFS
- 파이썬
- AWS
- es6
- JavaScript
- next.js
- CSS
- 백엔드
- node.js
- 리액트
- 이슈
- kubernetes
- 백준
- 솔리디티
- 쿠버네티스
- 자바스크립트
- HTML
- 프론트엔드
Archives
- Today
- Total
즐겁게, 코드
스크롤 UI 구현하기 : Swiper Free Mode VS. overflow-x: scroll 본문
FE 개발을 하다 보면 좌우로 스크롤해 카테고리나 메뉴를 선택하는 등의 UI를 구현해야 할 때가 있는데요,
이번 글에서는 좌우 스크롤 UI를 구현할 때 선택할 수 있는 두 가지 방법을 간단히 소개해보려 합니다.
1. CSS의 overflow-x: scroll 속성 사용하기
아마 좌우 스크롤 UI를 구현할 때는 overflow-x: scroll
을 사용하는 것이 가장 쉽고 널리 알려진 방법일 것이라 생각합니다.
.list {
list-style: none;
display: flex;
overflow-x: scroll;
-webkit-overflow-scrolling: touch;
pointer: grab;
}
마크업을 간단히 진행한 뒤, CSS만으로 좌우 스크롤 UI를 구현한 모습입니다.
UI를 조작하는 데에는 아무런 지장이 없지만, 스크롤이 좌우 모서리의 끝에 도달하면 더이상 스크롤을 할 수 없다는 특징이 있습니다.
💡 웹뷰 환경에서는 스크롤바가 나타나지 않기 때문에 별다른 작업이 필요하지 않습니다.
만약 PC 환경에서 스크롤바를 감출 방법이 필요하다면 W3Schools 의 글을 참고해 주세요.
2. Swiper.js의 Free Mode 사용하기
두 번째 방법은 Swiper의 Freemode 모듈을 사용하는 것입니다.
[코드 예시]
import { Swiper, SwiperSlide } from "swiper/react";
import "swiper/css";
import { FreeMode } from "swiper/modules";
const categoryList = [
"일식",
"중식",
"한식",
"양식",
"햄버거",
"음료",
"족발",
"찜/구이",
];
const SwiperList = () => {
return (
<>
<div className="title">Swiper Free Mode</div>
<Swiper
slidesPerView={'auto'} // 각 .swiper-slide의 너비는 고정값으로 잡아 주세요
spaceBetween={8}
freeMode={true}
modules={[FreeMode]}
className="list"
>
{categoryList.map((category) => {
return (
<SwiperSlide className="list-item" key={category}>
{category}
</SwiperSlide>
);
})}
</Swiper>
</>
);
};
export default SwiperList;
Freemode 모듈은 overflow-x: scroll
과 동일한 효과를 제공하면서 드래그 제스처에 자연스럽게 반응하지만,
스크롤이 좌우 모서리의 끝에 도달한 뒤에도 영역을 더 스크롤할 수 있는 관성 효과를 제공합니다.
마치며
얼핏 "이런 사소한 UI까지 스와이퍼를 써야 해?" 라고 생각하실 수도 있지만,
한편으로는 약간의 시간을 더 투자하면 "내가 드래그한 만큼 UI가 움직인다" 는 직관적인 경험을 줄 수도 있을 것으로 기대합니다.
(물론 디자이너와 사전에 상의해 보는 것을 권해드립니다 😄)
상황에 따라 적절한 방법을 선택하실 수 있길 바라며, 즐거운 코딩 하세요!
반응형
'🎨 프론트엔드' 카테고리의 다른 글
TreeWalker 객체로 DOM을 순회하며 필터 적용하기 (0) | 2024.12.07 |
---|---|
XSS 공격의 위험성 체험하기 (1) | 2024.11.14 |
페이지 노출 여부를 판별하는 Page Visibility API 살펴보기 (0) | 2024.06.02 |
Server-Sent Event로 데이터 구독하기 (2) | 2024.04.27 |
electron-react-boilerplate에 테일윈드 끼얹기 (0) | 2023.09.30 |
Comments
소소한 팁 : 광고를 눌러주시면, 제가 뮤지컬을 마음껏 보러다닐 수 있어요!
와!! 바로 눌러야겠네요! 😆