반응형
반응형 웹 background image 처리
- 반응형 웹에서 백그라운드 이미지 처리는 화면 크기, 해상도, 디바이스 종류에 따라 적절한 이미지를 보여주거나, 이미지가 깨지지 않고 자연스럽게 보이도록 하는 게 중요
성능 최적화 및 팁
- 이미지 용량 최적화: 웹용으로 압축된 JPEG, WebP 포맷 사용 권장
- Lazy Loading: 백그라운드 이미지는 보통 lazy loading 불가하므로, 화면에 보일 때만 로드하는 방법 고민
- 이미지 캐싱: CDN 활용 시 캐싱 설정 중요
- 브라우저 지원 확인: image-set() 등 최신 CSS 기능은 지원 범위 확인 필요
- 배경이미지 vs 콘텐츠 이미지 구분: 의미 있는 이미지는 <img>로 처리하고, 장식용이면 배경 이미지로 처리
1. CSS background-image + 미디어쿼리 활용
- 화면 크기별로 다른 이미지를 미디어쿼리로 적용하는 방식
특징
- 가장 간단한 방법
- 화면 너비에 따라 이미지 교체 가능
- 단, 모바일에서 불필요한 큰 이미지를 먼저 로드할 수 있음 (성능 문제)
사용 상황
- 화면 크기에 따라 이미지가 달라야 할 때
- 모바일에선 작은 용량의 이미지를, 데스크탑에선 큰 이미지를 주어 성능과 디자인 모두 최적화 가능
유의사항
- CSS 파일이 로드될 때 기본 이미지(bg-desktop.jpg)가 먼저 로드되므로 모바일 환경에서 불필요한 큰 이미지가 로드되는 경우가 있음 → 네트워크 비용과 성능 영향
- 이 문제를 해결하려면 서버에서 device detection 후 적절한 CSS를 제공하거나, JS로 이미지 교체하는 방법도 고려
/* 기본 이미지 (데스크탑) */
body {
background-image: url('background-desktop.jpg');
background-size: cover;
background-position: center;
}
/* 모바일 화면에서 다른 이미지 적용 */
@media (max-width: 768px) {
body {
background-image: url('background-mobile.jpg');
}
}
2. background-size 속성 활용
- cover를 쓸 때는 중심이 되는 부분을 background-position으로 잘 맞춰줘야 자연스러운 화면이 됨
- 가로/세로 비율이 다른 이미지가 들어올 때 이미지의 중요한 부분이 잘리는지 체크 필요
속성값 | 설명 | 사용처 및 특징 |
cover | - 배경 이미지를 요소의 영역 전체를 덮도록 확대/축소. - 일부 잘릴 수 있음 |
- 배경 전체를 꽉 채우고 싶을 때 (헤더, 섹션 등). - 자연스럽고 시각적으로 깔끔함 |
contain | - 배경 이미지가 요소 안에 전부 들어가도록 확대/축소. - 이미지가 요소 영역보다 작으면 빈 공간이 생김 |
- 이미지가 잘리지 않고 전부 보여져야 하는 경우. - 단, 빈 공간이 생길 수 있음 |
auto | 원본 이미지 크기 그대로 유지 | 이미지가 작거나, 특정 크기를 유지하고 싶을 때 |
[CSS] background 속성
backgroundbackground-image요소의 배경으로 사용할 이미지 URL을 지정기본값: none (배경 이미지 없음)background-repeat배경 이미지를 반복할지 여부와 방향을 설정기본값: repeat (가로, 세로 모두 반복)속성값
u-pub.tistory.com
.hero {
background-image: url('hero.jpg');
background-size: cover; /* 영역 전체 덮기 */
background-position: center center;
background-repeat: no-repeat;
}
3. 해상도별 이미지 교체 (Retina 대응)
- 고해상도 디바이스에 맞게 2배 이상 해상도의 이미지를 준비해서 품질을 유지하는 방법
- 장점 : 고해상도 이미지를 고해상도 기기에만 로드해줌 → 성능과 품질 모두 챙김
- 단점 :
- image-set()은 브라우저 호환성이 제한적(크롬, 파이어폭스 지원, IE 미지원)
- 미디어쿼리 방식은 코드가 좀 늘어나고 관리가 번거로움
대응 방법
1. 미디어쿼리로 해상도 체크해서 배경 이미지 변경
- 레티나, 고해상도 화면에서 이미지가 깨지지 않음
- 이미지 용량이 커질 수 있으니 필요할 때만 적용
.section {
background-image: url('bg.png');
background-size: cover;
}
@media (-webkit-min-device-pixel-ratio: 2), (min-resolution: 192dpi) {
.section {
background-image: url('bg@2x.png');
}
}
2. CSS image-set() 함수 사용
- 브라우저가 적절한 해상도의 이미지를 자동 선택
- 간결하고 유지보수에 편리
- 아직 모든 브라우저에서 완전 지원은 아님 (크롬, 파이어폭스는 지원)
.section {
background-image: image-set(
url('bg.png') 1x,
url('bg@2x.png') 2x
);
background-size: cover;
}
4. CSS background-attachment: fixed와 패럴랙스 효과
- 스크롤할 때 배경 이미지를 고정시켜 움직임 효과를 주는 방식
유의사항
- 모바일 환경에서는 대부분 지원이 제한적(특히 iOS Safari)
- 성능 저하가 발생할 수 있으니 섹션 크기나 이미지 용량을 고려해 적용
- 대안으로 JS를 활용한 패럴랙스 라이브러리를 사용할 수 있음
.parallax-section {
background-image: url('parallax-bg.jpg');
background-attachment: fixed;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
}
5. 다중 배경 이미지 활용
- 한 요소에 여러 장의 배경 이미지를 겹쳐서 쓸 수 있음
- 위치, 반복 여부, 크기를 각각 설정 가능
사용 상황
- 디자인적으로 여러 레이어를 겹치고 싶을 때
- 반응형에서 특정 디바이스에 따라 배경 아이콘을 추가/제거 가능
.box {
background-image: url('icon1.png'), url('pattern.png');
background-position: left top, center;
background-repeat: no-repeat, repeat;
background-size: 50px 50px, auto;
}
6. HTML <picture> 태그 및 srcset vs CSS background-image
- 백그라운드 이미지는 아니지만, 반응형 이미지를 정확하게 처리할 때 <picture> 태그와 srcset을 활용
- <picture> 와 srcset은 콘텐츠 이미지에 적합하며, 브라우저가 자동으로 적절한 이미지를 골라줌
- background-image는 장식적 이미지에 적합하며, CSS로 별도 관리
배경 이미지로 사용하고 싶다면?
- CSS와 JS를 혼용해, 뷰포트 크기에 따라 JS가 배경 이미지를 바꾸는 방법도 있음
- 하지만 복잡도 증가, SEO 및 접근성 문제 있음
[Responsive] 반응형 이미지 작업 / img 태그 속성(srcset, sizes, picture)
srcset 속성여러 크기 혹은 해상도의 이미지를 한 곳에 모아둔 것브라우저가 자신의 화면 환경에 가장 적합한 이미지를 골라서 다운로드함ex) 480w, 800w, 1200w)는 이미지 각각의 너비(픽셀 단위)를 뜻
u-pub.tistory.com
처리 방법 비교
방법 | 특징 | 장저 | 단점/주의점 |
미디어쿼리 + background-image | 화면 크기별 이미지 교체 | 간단함 | 초기 로드 이미지가 클 수 있음 |
background-size | 이미지 크기 자동 조절 | 이미지 비율 유지 용이 | 적절한 값 설정 필요 |
해상도별 이미지 교체 | 레티나 대응 | 선명한 이미지 제공 | 이미지 용량 증가 |
CSS image-set() | 해상도별 이미지 자동 선택 | 코드 간결, 유지보수 편리 | 브라우저 지원 제한 |
background-attachment | 패럴랙스 효과 | 시각적 효과 우수 | 모바일 지원 제한, 성능 문제 가능 |
여러 배경 이미지 사용 | 다중 이미지 레이어링 | 디자인 자유도 높음 | 복잡성 증가 |
picture + srcset | 반응형 콘텐츠 이미지 처리 | 정확한 이미지 선택 | 배경 이미지에는 직접 적용 어려움 |
반응형
'Responsive > Res-Basic' 카테고리의 다른 글
[Responsive] 반응형 이미지 작업 / img 태그 속성(srcset, sizes, picture) (1) | 2025.08.11 |
---|---|
[Responsive] 반응형 이미지 작업 / 기본 (2) | 2025.08.11 |
[Responsive] 상대 단위 (rem, %, em, vw, vh, vmin, vmax..) (2) | 2025.08.08 |
[Responsive] 브레이크포인트(beakpoint) (2) | 2025.08.06 |
[Responsive] 미디어 쿼리(media query) (1) | 2025.08.06 |