jQuery와 CSS 애니메이션을 사용하여 아래에서 위로 흐르는 롤링 배너를 구현하는 코드를 설명합니다. 반응형으로 디자인되어 있어, 다양한 디스플레이에서 일관된 사용자 경험을 제공합니다.
HTML 구조
|
|
배너 컨테이너
- 클래스
vertical_banner
를 가진 div는 롤링 배너를 포함하는 컨테이너 역할을 합니다.
- 클래스
배너 리스트
ul
요소는 개별 롤링 배너li
항목을 포함하며, 이들은 자식 요소로서 컨테이너 안에서 스크롤 되어 표시됩니다.
CSS 스타일
|
|
배너의 기본 스타일
- 배너 컨테이너는 오버플로우를 숨겨서 배너 항목들이 스크롤 될 때 컨테이너의 크기를 넘어서지 않도록 합니다.
- 각 항목은 말줄임 처리를 위해
overflow: hidden
과text-overflow:ellipsis
로 스타일링됩니다.
애니메이션 효과
verticalRolling
키 프레임을 사용하여 리스트 아이템이 수직 방향으로 스크롤 되는 애니메이션을 생성합니다.
반응형 스타일
- 배너의 높이와 항목의 패딩, 글자 크기를 화면 크기에 맞춰 조정합니다.
jQuery 코드
|
|
변수 선언 부분
$wrap
롤링 배너를 감싸고 있는 컨테이너 요소에 대한 jQuery 객체입니다.$list
컨테이너 내부의 배너 목록에 대한 jQuery 객체입니다.wrapHeight
배너 컨테이너의 높이를 저장할 변수입니다.listHeight
배너 리스트의 전체 높이를 저장할 변수입니다.
배너 리스트 복제 및 추가
$list.clone()
현재 배너 리스트를 복제하여$clone
변수에 저장합니다.$wrap.append($clone)
복제한 리스트를$wrap
컨테이너에 추가함으로써, 무한 롤링 효과를 위한 세팅을 합니다.
배너 애니메이션을 처리하는 함수 (verticalBanner)
애니메이션 초기화
기존에 적용된 애니메이션을 제거하고, 2개 이상 있는 리스트를 제거하여 초기 상태로 만듭니다.높이 계산
컨테이너와 리스트 아이템의 현재 높이를 측정합니다.무한 롤링 설정
리스트 높이가 컨테이너보다 작을 경우, 무한 롤링 효과를 위해서 리스트를 충분한 횟수만큼 복제하여 추가합니다.애니메이션 적용
모든 리스트 아이템에verticalRolling
애니메이션을linear infinite
속성과 함께 적용하여 끊임없이 이어지는 스크롤 효과를 만듭니다.
창 크기에 따른 반응형 처리
getWindow
함수를 통해 현재 디바이스의 유형을 가져옵니다. 이는 창 크기에 따라 ‘pc’, ’ta’, ‘mo’를 반환합니다.- 윈도우의 사이즈가 바뀔 때마다 함수가 실행되어 디바이스 유형을 확인하고, 바뀌었다면
verticalBanner
함수를 호출하여 배너를 다시 초기화합니다.
마우스 이벤트 처리
mouseenter
이벤트가 발생하면 애니메이션을 일시 정지(paused
)하고,mouseleave
이벤트가 발생하면 애니메이션을 재생(running
)합니다.- 이를 통해 사용자가 배너에 마우스를 올렸을 때 롤링이 멈추었다가 벗어날 때 다시 움직임을 재개하는 사용자 친화적인 경험을 제공합니다.
결론
jQuery를 활용하여 아래에서 위로 흐르는 롤링 배너를 구현하는 방법을 소개했습니다. CSS 애니메이션과 jQuery의 조화로 매끄러운 사용자 경험을 제공하며, 반응형 웹 디자인을 구현함으로써 여러 디바이스에서의 호환성도 갖추고 있습니다. 사용자가 마우스로 상호작용할 때 애니메이션의 일시 정지 및 재생 기능은 웹사이트의 인터랙티브 요소를 더욱 풍부하게 만듭니다.