๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
CSS

CSS : ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ(image sprite)

by ์ฝ”ํŒŒ์นด 2022. 8. 22.
728x90

์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ(Image Sprite)

์˜ค๋Š˜์€ ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ ๊ธฐ๋ฒ•์— ๋Œ€ํ•˜์—ฌ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ๋ž€?

์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ๋ž€, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ด๋ฏธ์ง€๋ฅผ ํ•˜๋‚˜์˜ ์ด๋ฏธ์ง€๋กœ ํ•ฉ์ณ์„œ ๊ด€๋ฆฌํ•˜๋Š” ์ด๋ฏธ์ง€๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์›น ํŽ˜์ด์ง€์— ์ด๋ฏธ์ง€๊ฐ€ ์‚ฌ์šฉ๋  ๊ฒฝ์šฐ ํ•ด๋‹น ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›๊ธฐ ์œ„ํ•ด ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„์— ์ด๋ฏธ์ง€๋ฅผ ์š”์ฒญํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์‚ฌ์šฉ๋œ ์ด๋ฏธ์ง€๊ฐ€ ๋งŽ์„ ๊ฒฝ์šฐ ์›น ๋ธŒ๋ผ์šฐ์ €๋Š” ์„œ๋ฒ„์— ํ•ด๋‹น ์ด๋ฏธ์ง€์˜ ์ˆ˜๋งŒํผ ์š”์ฒญํ•ด์•ผ๋งŒ ํ•˜๋ฏ€๋กœ ์›น ํŽ˜์ด์ง€์˜ ๋กœ๋”ฉ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿด ๋•Œ, ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋ฐ›๊ธฐ ์œ„ํ•œ ์„œ๋ฒ„ ์š”์ฒญ์„ ๋‹จ ๋ช‡ ๋ฒˆ์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋งŽ์€ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋Œ€์‹  ๋ช‡ ๊ฐœ์˜ ์Šคํ”„๋ผ์ดํŠธ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋งŒ์„ ๊ด€๋ฆฌํ•˜๋ฉด ๋˜๋ฏ€๋กœ, ๋งค์šฐ ๊ฐ„ํŽธํ•ฉ๋‹ˆ๋‹ค.


์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ ๋งŒ๋“ค๊ธฐ

figma๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•œ ์นธ๋‹น 50px ๊ฐ„๊ฒฉ์œผ๋กœ ์ค„์ž๋ฅผ ์ด์šฉํ•˜์—ฌ ์นธ์„ ๊ตฌ๋ถ„ํ•ด ์ฃผ์—ˆ๊ณ , ํ•œ ์นธ์— ํ•˜๋‚˜์”ฉ ๊ฐ€๋กœ, ์„ธ๋กœ 36px์˜ ์•„์ด์ฝ˜์„ ์ž‘์—…ํ•ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ, ์•„์ด์ฝ˜๋“ค์˜ ์œ„์น˜๋Š” ๊ฐ ์นธ์˜ ์ขŒ์ธก ์ƒ๋‹จ์— ๋งž์ถ”์–ด ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ ์ž‘์—…์„ ๋งˆ์น˜๋ฉด, svg ํŒŒ์ผ๋กœ ์ถ”์ถœํ•ด ์ค๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ ์‚ฝ์ž…ํ•˜๊ธฐ

๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ฝ”๋”ฉํ•œ ์ด๋ฏธ์ง€ ์œ„์— ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ๋ฅผ ์‚ฝ์ž…ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

<div class="image">
    <div class="image__sns">
        <a href="#" class="link"><span class="ir">ํŽ˜์ด์Šค๋ถ</span></a>
        <a href="#" class="link"><span class="ir">ํŠธ์œ„ํ„ฐ</span></a>
        <a href="#" class="link"><span class="ir">์ธ์Šคํƒ€๊ทธ๋žจ</span></a>
        <a href="#" class="link"><span class="ir">์œ ํŠœ๋ธŒ</span></a>
        <a href="#" class="link"><span class="ir">๋งํฌ</span></a>
    </div>
</div>
.image {
    background: url(img.jpg);
    background-size: cover;
    width: 500px;
    height: 300px;
    position: relative;
}

.image__sns {
    position: absolute;
    top: 10px;
    right: 10px;
}

.image__sns a {
    width: 36px;
    height: 36px;
    margin-bottom: 5px;
    background: #fff;
    border-radius: 50%;
    display: block;

    // ์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ ๊ธฐ๋ฒ•
    background: url(icon.svg) no-repeat;  // ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ฐฉ์‹์œผ๋กœ ์ด๋ฏธ์ง€ ์‚ฝ์ž…
}

.image__sns a:nth-child(2) {
    background-position: -50px 0;  // ์ด๋ฏธ์ง€๊ฐ€ ๋ณด์—ฌ์ง€๋Š” ์œ„์น˜ ์กฐ์ •
}

.image__sns a:nth-child(3) {
    background-position: -100px 0;
}

.image__sns a:nth-child(4) {
    background-position: -150px 0;
}

.image__sns a:nth-child(5) {
    background-position: -200px 0;
}

์ด๋ฏธ์ง€ ์Šคํ”„๋ผ์ดํŠธ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š”, ์ด๋ฏธ์ง€๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ ๋ฐฉ์‹์œผ๋กœ ์‚ฝ์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์นธ์˜ ๊ฐ„๊ฒฉ์„ 50px๋กœ ์ž‘์—…ํ•ด ์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, x์ถ•์˜ ๊ฐ’์„ 50px์”ฉ ์กฐ์ ˆํ•˜์—ฌ ์ด๋ฏธ์ง€๊ฐ€ ๋ณด์—ฌ์ง€๋Š” ์œ„์น˜๋ฅผ ์กฐ์ ˆํ•ด ์ค๋‹ˆ๋‹ค. ๊ฒฐ๊ณผ ํ™”๋ฉด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.


ir ํšจ๊ณผ

๊ทธ๋Ÿฐ๋ฐ, HTML์—์„œ ์ž‘์„ฑํ–ˆ๋˜ "ํŽ˜์ด์Šค๋ถ", "ํŠธ์œ„ํ„ฐ", "์ธ์Šคํƒ€๊ทธ๋žจ" ๋“ฑ์˜ ๋ฌธ์ž๋Š” ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜์ง€ ์•Š์Œ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ir ํšจ๊ณผ๋ฅผ ์ ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

ir ํšจ๊ณผ๋ž€ ์›น ์ ‘๊ทผ์„ฑ์„ ์ค€์ˆ˜ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ, ์ด๋ฏธ์ง€์— ํ…์ŠคํŠธ๋ฅผ ์„ค์ •ํ•˜๊ณ  ๋ณด์ด์ง€ ์•Š๋„๋ก ์ž‘์—…ํ•ด์ค€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ…์ŠคํŠธ๋Š” ๋ฆฌ๋”๊ธฐ๋กœ ์ฝ์–ด์ค„ ์ˆ˜ ์žˆ์ง€๋งŒ, ์ด๋ฏธ์ง€๋Š” ์ฝ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด, ir ํšจ๊ณผ๋Š” ์ด๋ฏธ์ง€ ๋Œ€์ฒด ํ…์ŠคํŠธ ์ œ๊ณต์„ ์œ„ํ•œ CSS ๊ธฐ๋ฒ•์ด๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ir ํšจ๊ณผ์˜ ์ ์šฉ ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

.ir {
    display: block;
    overflow: hidden;
    font-size: 0;
    line-height: 0;
    text-indent: -9999px;
}
728x90

๋Œ“๊ธ€

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๐Ÿฆ™

CSS
๊ด‘๊ณ  ์ค€๋น„์ค‘