제한된 화면 크기에서 다양한 정보를 보여주기 위하여 슬라이드 UI를 많이 사용한다.
보통 화면을 쓸어 넘기면 다음 화면을 보여주는 식이다.
다른 스케일과 같은 부분을 제외하고 슬라이드가 여러 장 있다면 요런 식의 배열의 값이 들어있을 것이다.
const images = [ 'https://image.com/image_1.png', 'https://image.com/image_2.png' ];
images를 리스트로 보여주려면 이러한 코드가 되겠다.
{images.map(( image, index ) => (<img key={index} src={image} />))}
여기서 의문점이 생긴다.
보통 화면을 넘기면 애니메이션이 나오는데 마지막 지점에서 쓸어넘기면, 어떻게 되겠는가?
양쪽 마지막에서 더이상 움직이지 않게 하거나,
마지막 페이지면 첫 번째 페이지로 가고 첫 번째 페이지면 마지막 페이지로 이동하게 할 것이다.
하지만 단순히 그렇게 처리해버린다면, 에코가 궁을 사용했을 때와 같이 후진하게 될 것이다.
그러면 엄청 부자연스럽다.
이를 해결할 방법을 생각해 봤을 때 이미지 배열의 개수를 넘기게 된다면, 배열을 이어 붙여서 자연스럽게 보일 방법을 생각해보았다.
하지만 이 방법은 메모리가 많이 소비되기 때문에 좋지 않은 방법이라고 생각한다.
그러면 또 어떤 방법이 있을 지 찾아보았다.
첫 번째 이미지는 맨 마지막에 두고, 마지막 이미지를 첫 번째로 둔 다음 1번 이미지를 처음에 보여준다.
만약 맨 뒤에있는 페이지로 이동하게 된다면, 일단 마지막 1번으로 이동한 후 애니메이션이 모두 동작하고
애니메이션을 제거 후 이동하고 다시 애니메이션을 추가하면 된다.
처음엔 별로 납득하기 힘든 방법이었지만, 여러 서비스를 찾아보니 대부분 이 방식을 사용하는 것 같았다.
'프론트엔드' 카테고리의 다른 글
PWA(Progressive Web Apps) in NEXT JS (0) | 2022.07.03 |
---|---|
그림으로 설명하는 Oauth (0) | 2022.02.09 |
tailwind css (0) | 2022.02.07 |
CSS를 활용한 웹 디펜스 게임 (0) | 2020.06.15 |