transition-delay + translateY 슬라이드
상품 hover 애니메이션 완전 정리
쇼핑몰 상품 목록에서 이미지에 마우스를 올리면 어두운 캡션이 아래에서 슬라이드 업되어 상품 정보를 보여주는 효과. 이 짧은 인터랙션 안에 CSS3의 핵심 개념 6가지가 모두 들어 있다 — position, overflow, opacity, transform: translateY, transition, rgba. 그리고 transition-delay로 두 요소가 시간차를 두고 움직이는 패턴까지 함께 살펴본다.
-
PROD 1
상품 1
설명 텍스트
가격 : 12,345원
-
PROD 2
상품 2
설명 텍스트
가격 : 12,345원
-
PROD 3
상품 3
설명 텍스트
가격 : 12,345원
li에 position: relative를 주면, 그 안의 position: absolute 자식(=caption)은 li 박스의 좌상단을 (0,0)으로 삼는다. 만약 li에 relative를 안 주면 caption은 페이지의 가장 가까운 position 부모(또는 body)를 기준으로 엉뚱한 곳에 떠버린다.
top: 200px = caption이 li의 위에서부터 200px 아래에 위치 → li 박스 밖, 아래쪽에 위치. 그리고 opacity: 0 → 안 보임.
caption이 li 밖에 있어도 overflow: hidden이 없으면 사용자에게 보일 수 있다. 부모 li에 overflow: hidden을 주면 li 박스 밖의 모든 것이 잘려나간다.
opacity: 0 → 1— 점점 보이게 (페이드 인)transform: translateY(-200px)— 200px 위로 이동 → 정확히 li 안으로 들어옴
두 변화가 동시에 0.2초 동안 부드럽게 진행되면서 "아래에서 슬라이드 업되며 점점 진해지는" 효과가 만들어진다.
top변경 → 레이아웃 재계산(reflow) → 느림translateY→ GPU 가속 → 부드럽고 빠름- 모바일 60fps 애니메이션을 위해서는
transform과opacity만 변경하는 것이 베스트 프랙티스
일반 rgb(0,0,0)은 완전 불투명 검정. 마지막에 알파값(0~1)을 추가한 rgba(0,0,0,0.6)은 60% 불투명한 검정이다.
- 요소 전체가 투명해짐
- 안의 텍스트도 함께 흐려짐
- 예:
opacity: 0.6
- 해당 색상만 투명
- 안의 텍스트는 100% 선명함
- 예:
background: rgba(0,0,0,.6)
두 요소가 같은 트리거(예: 부모 hover)에 반응하지만 서로 다른 시점에 움직이게 하려면 transition-delay를 사용한다.
▲ 위 박스는 즉시, 아래 박스는 1초 뒤 시작 — 두 박스 모두 720도 회전 + 우측 이동
transition-delay는 여러 요소를 순차적으로 등장시킬 때도 자주 쓰인다. 예: 메뉴 항목 5개를 0.1s씩 차이를 두고 펼치는 효과.| 패턴 | 변환 | 효과 |
|---|---|---|
| 아래에서 위로 (현재 예제) | translateY(-200px) |
전형적인 캡션 슬라이드 업 |
| 위에서 아래로 | translateY(200px) |
드롭다운 메뉴 |
| 왼쪽에서 우측으로 | translateX(200px) |
사이드바 슬라이드 |
| 회전하며 등장 | translateY + rotate |
화려한 등장 효과 |
| 줌인하며 등장 | scale(0.8 → 1) + opacity |
모달 등장 효과 |
| 실수 | 증상 | 해결 |
|---|---|---|
| li에 position 미지정 | caption이 화면 끝으로 튐 | position: relative 추가 |
| overflow:hidden 누락 | 처음부터 캡션이 보임 | li에 overflow:hidden |
| transition을 :hover에 줌 | 호버 들어갈 때만 부드러움 | 원본 셀렉터(.caption)에 부여 |
| opacity:0 자체로는 안 사라짐 | 마우스 클릭이 가능 | display 또는 pointer-events:none 병행 |
| z-index 안 줌 | 이미지가 캡션을 가림 | caption에 더 높은 z-index |
| top/left 변경으로 애니메이션 | 모바일에서 끊김 | transform 사용 |
상품 hover 슬라이드 핵심
Tags
'php' 카테고리의 다른 글
| 반응형 레이아웃 — 가변 그리드 · 가변 폰트 · 가변 이미지 완전 정리 (0) | 2026.06.10 |
|---|---|
| HTML5 개인 포트폴리오 — 4페이지 구조 완전 정리 (0) | 2026.06.10 |
| CSS3 transition · transform 완전 정리 — 부드러운 변환 효과 (1) | 2026.06.10 |
| jQuery Mobile data-role 완전 정리 — 페이지·리스트·전환 효과 (0) | 2026.06.10 |
| z-index · visibility · empty-cells 완전 정리 — 요소 겹치기와 숨기기 (1) | 2026.06.10 |
왕진 블로그

댓글