본문 바로가기

HTML5 & CSS3 - 이미지 스프라이트 기법

액트 2019. 7. 25.
반응형

HTML5 & CSS3 웹표준 사이트


■ 이미지 스프라이트(Image Sprite)란?

- 배경이미지를 적용할 경우 각각의 요소에 들어가는 배경이미지를 낱개로 만들지 않고 비슷한 성격의 배경 이미지를 하나의 파일로 제작 후에  background-position을 이용하여 배경이미지를 배치하는 방법

- 이미지가 많은 웹 페이지는 여러 서버 요청을 로드하고 생성하는 데 시간이 오래 걸릴 수 있습니다. 이미지 스프라이트를 사용하면 서버 요청 수가 감소하고 대역폭이 절약됩니다.

 

네이버의 경우에 메인화면에서 다음과 같은 Image Sprite를 사용하고 있고,

 

다음의 경우에는 다음과 같은 Image Sprite를 사용하고 있답니다. (여러개로 쪼개져 있는데 그 중 하나에요^^)

 

전 메뉴바를 이미지 스프라이트를 이용해서 만들어 보겠습니다. 

기본 상태와 마우스 오버되었을 때 효과를 적용할꺼에요.

이렇게 생긴 이미지 두개를 준비했어요

이미지

■ 예시

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Image Sprite</title>
    <style>
        * {margin:0; padding:0;}
        body {padding: 50px;}
        h2 {margin-bottom: 20px;}
        .gnb {
            background-image:url(images/mm.jpg); 
            background-repeat:no-repeat; 
            width: 120px; height 25px; 
            text-indent: -9999px;
        }
        .g2 {background-position: 0 -25px;}
        .g3 {background-position: 0 -50px;}
        
        .gnb:hover {
            background-image:url(images/mm_hover.jpg); 
            background-repeat:no-repeat; 
            width: 120px; height 25px; 
            text-indent: -9999px;
        }
    </style>
</head>
 
<body>
    <h2>Image Sprite</h2>
    <p class="gnb">menu1</p>
    <p class="gnb g2">menu2</p>
    <p class="gnb g3">menu3</p>    
</body>
</html>

 

■ 결과화면

 

※ 간단하게 만든 거 치고 나름 괜찮은 것 같아요ㅎㅎ 로고나 화살표 같은 것들을 넣어놓으면 얼마든지 가져다 쓰기가 편하겠죠?

 

간단히 설명하면, 

이미지의 시작은 x좌표 : 0, y좌표 : 0 입니다. 

Image Sprite 중에 오른쪽에 있는 이미지를 보여주고 싶다면 이미지를 왼쪽 바깥쪽으로 당기기위해 x좌표에 마이너스(-) 값을 넣으면 됩니다. 

Image Sprite 중에 아래쪽에 있는 이미지를 보여주고 싶다면 이미지를 위쪽 바깥쪽으로 당기기 위해 y좌표에 마이너스(-) 값을 넣으면 되구요. 

안쪽, 바깥쪽, 플러스(+) 값, 마이너스(-) 값에 대해서 이해한다면 좀 쉬울 것 같아요.

 

잘 이해가 안된다면, 예제를 통해서 직접 확인해보세요^^ 아무래도 직접 만져보고 눈으로 확인하는게 가장 좋죠.

클릭하시면 w3school CSS Image Sprite 실행 화면으로 이동합니다. 값을 이렇게 저렇게 바꿔가면서 이미지가 어디로 이동하고, 어떻게 보이는지 확인하시면 좋을 것 같아요.

반응형

댓글