background-position
속성을 사용한다.background-image
속성을 통해 이미지를 지정하고, 로고 별로 클래스를 생성하여 위치값을 지정한다.a::after {
content: "";
display: block;
width: 130px;
height: 130px;
background-image: url(./assets/sprite.png);
}
.youtube::after {
background-position: -10px -5px;
}
.netflix::after {
background-position: -150px -5px;
}
.appletv::after {
background-position: -150px -130px;
}
.tving::after {
background-position: -10px -130px;
}
<a>
태그에 각 클래스를 적용하면 하단 이미지와 같이 로고가 출력된다.<div class="container">
<a href="#" class="youtube">youtube</a>
<a href="#" class="netflix">netflix</a>
<a href="#" class="appletv">appletv</a>
<a href="#" class="tving">tving</a>
</div>
<img>
태그에 각각 이미지를 삽입하면 하단 이미지처럼 이미지 하나 당 31~32밀리초가 소요된다.<div class="container">
<img src="./assets/youtube.png" alt="youtube">
<img src="./assets/netflix.jpg" alt="netflix">
<img src="./assets/appletv.png" alt="appletv">
<img src="./assets/tving.jpg" alt="tving">
</div>
💡 이미지 스프라이트를 사용하면 리소스 요청 수가 줄어들기 때문에 로딩 시간이 줄어든다 !
💡 자주 수정하는 이미지인 경우 이미지 스프라이트보단 각각의 이미지 파일을 사용하는 것이 유지보수하기에 편리하다 !
background-image
속성을 사용했다. 아이콘 같이 의미가 없고 디자인적인 요소로 사용하는 것은 무관하겠지만, 상품 이미지 등을 이미지 스프라이트 기법을 사용하면 SEO에도 악영향이 생기고, 스크린 리더에서도 이미지가 아니라고 판단하기 때문에 웹 접근성에도 좋지 않다.이미지 스프라이트 기법을 사용하면 웹 최적화 면에선 좋을 순 있어도 유지보수나 웹 접근성 면에선 좋지 않으니, 이미지 스프라이트 기법을 사용하기에 적절한 경우에 사용하면 될 것 같다.