



본이미지는 pixabay 에서 가지고온 이미지임
이미지 갤러리 레이아웃 - 설명
📋 개요
Flexbox를 사용하여 4개의 이미지를 나란히 배치하고, 호버 시 이미지가 확대되는 효과를 구현한 레이아웃입니다.
🏗 HTML 구조
<ul class="bigbox bigbox1">
<li class="box box1">
<img src="images/women1.jpg" alt="">
</li>
<li class="box box2">
<img src="images/women2.jpg" alt="">
</li>
<li class="box box3">
<img src="images/women3.jpg" alt="">
</li>
<li class="box box4">
<img src="images/women4.jpg" alt="">
</li>
</ul>
구조 설명
ul.bigbox: Flex 컨테이너 역할을 하는 리스트li.box: 각 이미지를 담는 리스트 아이템 (Flex 아이템)img: 실제 이미지 요소
🎨 CSS 상세 설명
1. Reset CSS
* {
margin: 0;
padding: 0;
}
- 목적: 브라우저 기본 스타일 제거
- 모든 요소의 마진과 패딩을 0으로 초기화
2. 리스트 스타일 제거
ul {
list-style: none;
}
- 목적:
ul의 기본 불릿(•) 제거 - 리스트처럼 보이지 않게 만듦
3. Flex 컨테이너 (.bigbox1)
.bigbox1 {
width: 1000px;
margin: 10px auto;
border: 5px solid tan;
display: flex;
justify-content: space-around;
padding: 20px 0;
}
주요 속성 설명
| 속성 | 값 | 설명 |
|---|---|---|
width |
1000px |
컨테이너의 고정 너비 |
margin: 10px auto |
상하 10px, 좌우 자동 | 중앙 정렬 (좌우 마진을 auto로 설정) |
border |
5px solid tan |
테두리 스타일 (두께, 실선, 색상) |
display |
flex |
Flexbox 활성화 |
justify-content |
space-around |
주축 방향 정렬 (각 아이템 주위에 동일한 공간) |
padding |
20px 0 |
상하 패딩 20px, 좌우 0 |
justify-content: space-around 효과
[공간] [아이템1] [공간] [아이템2] [공간] [아이템3] [공간] [아이템4] [공간]- 각 아이템의 좌우에 동일한 공간을 배분
- 양 끝에도 공간이 생김
4. Flex 아이템 (.box)
.bigbox .box {
width: 200px;
height: 150px;
border: 1px solid tan;
position: relative;
overflow: hidden;
}
주요 속성 설명
| 속성 | 값 | 설명 |
|---|---|---|
width |
200px |
박스 너비 (고정) |
height |
150px |
박스 높이 (고정) |
border |
1px solid tan |
박스 테두리 |
position |
relative |
상대 위치 (자식 요소의 absolute 기준점) |
overflow |
hidden |
넘치는 부분 숨김 (이미지 확대 시 박스 밖으로 나가지 않음) |
position: relative의 역할
- 자식 요소(
img)가position: absolute일 경우 기준점이 됨 - 이 경우에는
overflow: hidden과 함께 사용되어 박스 영역 제한
overflow: hidden의 역할
- 호버 시 이미지가
scale(1.2)로 확대되어도 박스 영역을 벗어나지 않음 - 이미지가 잘려 보이지 않게 함
5. 이미지 기본 스타일
.bigbox .box img {
display: block;
width: 100%;
height: 100%;
transition: all 0.5s;
}
주요 속성 설명
| 속성 | 값 | 설명 |
|---|---|---|
display |
block |
인라인 요소 → 블록 요소 (하단 여백 제거) |
width |
100% |
부모(.box) 너비에 맞춤 |
height |
100% |
부모(.box) 높이에 맞춤 |
transition |
all 0.5s |
모든 속성 변화를 0.5초에 걸쳐 부드럽게 |
transition: all 0.5s 효과
- 호버 시 이미지 확대가 부드럽게 진행됨
all: 모든 속성 변화에 적용0.5s: 0.5초 동안 애니메이션
6. 호버 효과 (.box:hover img)
.bigbox .box:hover img {
transform: scale(1.2);
}
주요 속성 설명
| 속성 | 값 | 설명 |
|---|---|---|
.box:hover |
- | .box에 마우스 오버 시 |
transform |
scale(1.2) |
이미지를 1.2배 확대 |
transform: scale(1.2) 효과
- 원본 크기의 120%로 확대
- 중심점 기준으로 확대됨 (기본값:
transform-origin: center center) transition과 함께 사용되어 부드러운 애니메이션 효과
🎯 핵심 기술 포인트
1. Flexbox 레이아웃
display: flex;
justify-content: space-around;
- Flexbox: 수평/수직 정렬과 공간 분배에 최적화
justify-content: space-around: 아이템 주위에 균등한 공간 배분
2. 중앙 정렬
width: 1000px;
margin: 10px auto;
- 고정 너비 + 좌우 마진 auto = 중앙 정렬
- Flexbox 없이도 사용 가능한 중앙 정렬 방법
3. 이미지 확대 효과
overflow: hidden; /* 부모 */
position: relative; /* 부모 */
transition: all 0.5s; /* 이미지 */
transform: scale(1.2); /* 호버 시 */
overflow: hidden: 확대된 이미지가 박스 밖으로 나가지 않음transition: 부드러운 애니메이션 효과transform: scale(): 성능 좋은 크기 조절 (레이아웃 재계산 없음)
4. 이미지 크기 맞추기
width: 100%;
height: 100%;
object-fit: cover; /* 선택적: 비율 유지하며 채우기 */
- 부모 박스에 맞춰 이미지 크기 조절
object-fit: cover추가 시 비율을 유지하며 채울 수 있음 (현재 코드에는 없음)
📊 시각적 흐름
레이아웃 구조
┌─────────────────────────────────────────────────┐
│ .bigbox1 (1000px, 중앙) │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │
│ │ box1 │ │ box2 │ │ box3 │ │ box4 │ │
│ │ img │ │ img │ │ img │ │ img │ │
│ └──────┘ └──────┘ └──────┘ └──────┘ │
│ 200px 200px 200px 200px │
│ (space-around로 균등한 간격) │
└─────────────────────────────────────────────────┘호버 시 변화
[일반 상태]
┌──────┐
│ img │ ← 200px × 150px
└──────┘
[호버 시]
┌──────┐
│ ╔══╗ │ ← scale(1.2) → 240px × 180px
│ ║img║ │ (overflow: hidden으로 잘림)
│ ╚══╝ │
└──────┘🔍 추가 학습 포인트
1. justify-content 옵션 비교
| 값 | 설명 | 시각적 효과 |
|---|---|---|
flex-start |
시작점 정렬 | [아이템][아이템][아이템][아이템]공간 |
flex-end |
끝점 정렬 | 공간[아이템][아이템][아이템][아이템] |
center |
중앙 정렬 | 공간[아이템][아이템][아이템][아이템]공간 |
space-between |
양끝 정렬 | [아이템]공간[아이템]공간[아이템]공간[아이템] |
space-around |
균등 간격 | 공간[아이템]공간[아이템]공간[아이템]공간[아이템]공간 |
space-evenly |
완전 균등 | 공간[아이템]공간[아이템]공간[아이템]공간[아이템]공간 |
2. transform vs width/height 변경
/* ❌ 성능 낮음 (레이아웃 재계산 발생) */
.box:hover img {
width: 240px; /* 200px × 1.2 */
height: 180px; /* 150px × 1.2 */
}
/* ✅ 성능 좋음 (레이아웃 재계산 없음) */
.box:hover img {
transform: scale(1.2);
}
차이점:
width/height변경: 레이아웃 재계산 발생 → 성능 저하transform: GPU 가속 활용 → 성능 우수
3. object-fit 속성 (선택적 개선)
현재 코드에서는 이미지 비율이 다를 경우 왜곡될 수 있습니다.
.bigbox .box img {
width: 100%;
height: 100%;
object-fit: cover; /* 추가: 비율 유지하며 채우기 */
object-position: center; /* 추가: 중앙 정렬 */
}
object-fit 옵션:
fill: 비율 무시하고 채움 (기본값, 왜곡 가능)cover: 비율 유지하며 채움 (잘릴 수 있음)contain: 비율 유지하며 맞춤 (빈 공간 생길 수 있음)
💡 실전 활용 팁
1. 반응형 디자인
.bigbox1 {
width: 100%;
max-width: 1000px; /* 최대 너비 제한 */
margin: 10px auto;
}
.bigbox .box {
flex: 1; /* 가변 너비 */
max-width: 250px; /* 최대 너비 제한 */
height: 150px;
}
2. 갭(Gap) 추가
.bigbox1 {
display: flex;
gap: 20px; /* 아이템 간 간격 */
justify-content: center; /* 중앙 정렬 */
}
3. 호버 시 추가 효과
.bigbox .box:hover {
border-color: #ff6b6b; /* 테두리 색상 변경 */
box-shadow: 0 4px 8px rgba(0,0,0,0.2); /* 그림자 추가 */
}
.bigbox .box:hover img {
transform: scale(1.2);
filter: brightness(1.1); /* 밝기 증가 */
}
📝 요약
- Flexbox:
display: flex+justify-content: space-around로 아이템 배치 - 중앙 정렬: 고정 너비 +
margin: auto - 이미지 확대:
transform: scale()+transition으로 부드러운 효과 - 영역 제한:
overflow: hidden으로 확대된 이미지 잘라내기 - 성능 최적화:
transform사용으로 GPU 가속 활용
🎓 학습 체크리스트
- Flexbox의
justify-content속성 이해 -
margin: auto를 이용한 중앙 정렬 이해 -
transform: scale()과transition조합 이해 -
overflow: hidden의 역할 이해 - 이미지 크기 조절 방법 이해 (
width/heightvsobject-fit) -
transformvswidth/height성능 차이 이해
'FrontEnd > Html Css' 카테고리의 다른 글
| CSS Float 반응형 레이아웃 (0) | 2026.02.19 |
|---|---|
| ::before - ::after 이용 호버 에니메이션 (0) | 2026.01.16 |
| Position:absolute를 이용한 라이언(ryan 캐릭터만들기) (1) | 2026.01.15 |
| 6회차 — CSS Grid 실전 (0) | 2026.01.07 |
| 최종 실습(포트폴리오 페이지 제작) 및 배포 (0) | 2026.01.03 |