[Front-end๐Ÿฅ] Adobe ๋ฉ”์ธ ํŽ˜์ด์ง€ ํด๋ก !

๋˜์ƒยท2021๋…„ 12์›” 22์ผ
1

front-end

๋ชฉ๋ก ๋ณด๊ธฐ
55/58
post-thumbnail

1210~1212 : ๋ชจ๋“ˆํ™”
1213~1218 : ๋ฉ”์ธ ํŽ˜์ด์ง€ ๋งˆํฌ์—…, JavaScript
1219~1220 : JavaScript ๋ชป ๋ถ™์ธ ๊ฒƒ, ๋ฏธ๋””์–ด์ฟผ๋ฆฌ (4๋‹จ๊ณ„)

1. ์‚ฌ์ดํŠธ ๋ถ„์„

๋งˆํฌ์—…์„ ํ•˜๊ธฐ ์ „์— ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์ดํŠธ๋ฅผ ๋ถ„์„ํ•ด ๋ณด์•˜๋‹ค.
์‚ฌ์ดํŠธ๊ฐ€ ๋„ˆ๋ฌด ๊ธธ์–ด์„œ ์•ˆ์˜ ๊ธ€์”จ๋Š”.. ์กฐ๊ธˆ ์ž‘๋‹ค.




2. ๋งˆํฌ์—…

1. ๋ชจ๋“ˆํ™”!!

์–ด๋„๋น„๋Š”.. ์ •๋ง ๋ฉ”๋‰ด๊ฐ€ ๋งŽ์•˜๋‹ค.

  1. ๋ฉ”๋‰ด ์ ‘๊ธฐ ํŽผ์น˜๊ธฐ ๋ฒ„ํŠผ
  2. ์™ผ์ชฝ ๋ถ€๋ถ„ ์ œ๋ชฉ ๋Œ€์‹  ๋งํฌ๊ฐ€ ๋“ค์–ด๊ฐ„ ul / ์˜ค๋ฅธ์ชฝ ์ œ๋ชฉ์ด ์žˆ๋Š” ul

  1. ๋งจ ์œ„์˜ ์ „์ฒด ๋„ˆ๋น„๋ฅผ ์ฐจ์ง€ํ•˜๋Š” ์„น์…˜
  2. ์นด๋“œ (์นดํ…Œ๊ณ ๋ฆฌ ์žˆ์Œ / ์—†์Œ)
  3. footer ๋ฉ”๋‰ด

์—ฌ์„ฏ ๊ฐ€์ง€๋ฅผ ํฌ๊ฒŒ ๋ชจ๋“ˆํ™”ํ•ด๋ณด์•˜๋‹ค. ์†Œ์Šค์ฝ”๋“œ๋Š” ์•„๋ž˜์—!

์†Œ์Šค์ฝ”๋“œ




3. ํ•˜๋ฉด์„œ ์–ด๋ ค์› ๋˜ ๋ถ€๋ถ„

1. ๋ฉ”๋‰ด ๋ˆŒ๋Ÿฌ์„œ ์ž‘์€ ๋ฉ”๋‰ด ๋‚˜์™”์„ ๋•Œ, dim ์ฒ˜๋ฆฌ

dim ์ฒ˜๋ฆฌ ์ž์ฒด ๋ง๊ณ  1440px ์ด์ƒ์ด๋ฉด ์ค‘์•™์œผ๋กœ ๊ฐ€๋Š” ๊ฑฐ..

position absolute ๋กœ ์žก์œผ๋ฉด ํ•ด๋‹น ๋ฉ”๋‰ด ๋ฐ”๋กœ ๋ฐ‘๋ถ€ํ„ฐ ๊ฐ€๋กœ๋กœ ์‹œ์ž‘ํ•˜๋Š”.. ํ˜„์ƒ ๋ฐœ์ƒ

์—ฌ๊ธฐ์„œ left right ๋กœ ์žก์•„๋ฒ„๋ฆฌ๋ฉด....? ์ค‘์•™ ์ •๋ ฌ์„ ํ•  ์ˆ˜ ์—†์ž–์•„..? ํ•˜๊ณ  ๋ฌดํ•œ์˜ ๊ตด๋ ˆ์— ๋น ์กŒ๋Š”๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ–ˆ๋‹ค. ๋ฉ”๋‰ด ๋ฐ”๊นฅ์„ div.dim์œผ๋กœ ๊ฐ์‹ธ์„œ dim์„ ์–‘์˜†์œผ๋กœ ๊ฝ‰์ฐจ๊ฒŒ ์žก๊ณ , ์•ˆ์˜ menu๋Š” margin์„ ์ด์šฉํ•˜์—ฌ ์ค‘์•™์ •๋ ฌ ํ–ˆ๋‹ค. ๊ทธ์น˜๋งŒ dim์„ ์œ„ํ•ด ๋งˆํฌ์—…์„ ์ถ”๊ฐ€ํ•ด์•ผ ํ•œ๋‹ค๋Š” ์ ์ด ์กฐ๊ธˆ ์•„์‰ฝ๋‹ค.

<div class="dim">
  <div class="sub-menu">
  </div>
</div>
.dim {
  position: absolute;
  left: 0;
  right: 0;
}
.sub-menu {
  margin: 0 auto;
  /* ๋ถ€๋ชจ๋ž‘ width ๊ฐ€ ์žˆ์œผ๋‹ˆ๊นŒ left right ๋ฅผ ๋ถ™์—ฌ๋„ margin์ด ๋จน๋Š”๋‹ค! */
  left: 0; right: 0;
  margin: 0 auto;
  width: 100%;
  max-width: 1440px;
}



2. JavaScript ๋ถ™์ด๊ธฐ

  • ํ•ด์•ผ ํ•  ๊ฒƒ
  1. ๋ฉ”๋‰ด ๋ˆ„๋ฅด๋ฉด ์„œ๋ธŒ ๋ฉ”๋‰ด ๋‚˜์˜ด
  2. ์„œ๋ธŒ ๋ฉ”๋‰ด ๋‚˜์˜จ ์ƒํƒœ๋กœ ์Šคํฌ๋กคํ•˜๋ฉด ์„œ๋ธŒ๋ฉ”๋‰ด ์—†์–ด์ง
  3. ๋ชจ๋‹ฌ์ฐฝ ์Šคํฌ๋กค ๋ถˆ๊ฐ€๋Šฅ
  4. ๋ฐ”๊นฅ ์˜์—ญ ์•„๋ฌด๋ฐ๋‚˜ ๋ˆ„๋ฅด๋ฉด ๋ชจ๋‹ฌ์ฐฝ ๊บผ์ง€๊ฒŒ
  • ์ƒ๊ฐํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ

1+. ์„œ๋ธŒ ๋ฉ”๋‰ด๊ฐ€ ๊ฐ™์€๊ฑฐ ๋‘๋ฒˆ ๋ˆ„๋ฅด๋ฉด ๊บผ์ง€๊ณ (toggle) + ๋‹ค๋ฅธ๊ฑฐ ๋ˆ„๋ฅด๋ฉด ์—ด๋ ค์žˆ๋˜๊ฑฐ ๊บผ์ง€๋Š” ๊ฒƒ๊นŒ์ง€ ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ๋‹ค. ์ƒ๊ฐ๋ณด๋‹ค ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์—„์ฒญ ์˜ค๋ž˜ ๊ฑธ๋ ธ๋‹ค..
5. ๊ฒ€์ƒ‰์ฐฝ - ์ด๊ฒƒ๋„ ์—ญ์‹œ.. toggle +์„œ๋ธŒ๋ฉ”๋‰ด ์—ด๋ฆฐ ์ƒํƒœ์—์„œ ๊ฒ€์ƒ‰์ฐฝ ๋ˆ„๋ฅด๋ฉด ์„œ๋ธŒ๋ฉ”๋‰ด ๊บผ์ง€๊ณ , ๊ฒ€์ƒ‰์ฐฝ ์—ด๋ฆฐ ์ƒํƒœ์—์„œ ์„œ๋ธŒ๋ฉ”๋‰ด ๋ˆ„๋ฅด๋ฉด ๊ฒ€์ƒ‰์ฐฝ ๊บผ์ง€๊ณ 
6. ์Šคํฌ๋กค ํ•˜๋ฉด ์•ฝ๊ฐ„์˜ ๋”œ๋ ˆ์ด ํ›„์— ํ—ค๋”๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ.

js ์ฝ”๋“œ! ์ฝ”๋“œ๊ฐ€ ์–ด๋–ค ๋™์ž‘์„ ํ•˜๋Š”์ง€ ์œ„์˜ ํ•  ์ผ ๋ชฉ๋ก ๋ฒˆํ˜ธ์— ๋งž๊ฒŒ ์ฃผ์„์„ ๋‹ฌ์•„๋‘์—ˆ๋‹ค.

// menu.js
const body = document.body;
const header = document.querySelector('.header');
const menuItems = document.querySelectorAll('.menu__item');
const menuButtons = document.querySelectorAll('.menu__title');
const dims = document.querySelectorAll('.dim');

const MENU_OPEN = 'menu__item--open';
const MENU_CLOSE = 'menu__item';
const DIM_OPEN = 'dim--open';

// 1. ๋ฉ”๋‰ด ๋ˆ„๋ฅด๋ฉด ์„œ๋ธŒ ๋ฉ”๋‰ด ๋‚˜์˜ด.
// ๋ฉ”๋‰ด ๋Œ€๋ถ„๋ฅ˜(4๊ฐœ)์— ์ „๋ถ€ ์ ์šฉํ•ด์•ผํ•ด์„œ forEach ์ ์šฉ. -> IE ๋ฏธ์ง€์›...
menuItems.forEach((item, index) => item.addEventListener('click', function () {
    // 5. ์„œ๋ธŒ ๋ฉ”๋‰ด๋ฅผ ๋ˆ„๋ฅด๋ฉด ๊ฒ€์ƒ‰์ฐฝ์ด ๊บผ์ง€๊ฒŒ!
    closeSearch();
    // 1. ๋ฉ”๋‰ด ๋ˆ„๋ฅด๋ฉด ๊บผ์ง€๊ฒŒ ํ•˜๋Š”๋ฐ, 
    menuItems.forEach((item, index2) => {
        if (index == index2) {
            // 1. ๊ฐ™์€ ๋ฒ„ํŠผ์„ ๋˜ ๋ˆŒ๋ €๋‹ค? ๋ฉ”๋‰ด๊ฐ€ ๊บผ์ง€๋ฉด ๋จ.
            item.classList.toggle(MENU_OPEN);
        }
        // 1. ๋‹ค๋ฅธ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €๋‹ค? ์ผœ์ ธ์žˆ๋Š” ๋ฉ”๋‰ด๋ฅผ ๋ชจ๋‘ ๊บผ์ง€๋ฉด ๋จ.
        else if (item.classList.contains(MENU_OPEN)) {
            item.classList = MENU_CLOSE;
        }
    });

}));

// 4. ์„œ๋ธŒ๋ฉ”๋‰ด๊ฐ€ ๋‚˜์˜ค๊ณ  ์„œ๋ธŒ๋ฉ”๋‰ด ์•„๋ž˜์˜ dim ์ฒ˜๋ฆฌ๋œ ๋ถ€๋ถ„์„ ๋ˆ„๋ฅด๋ฉด ์„œ๋ธŒ ๋ฉ”๋‰ด๊ฐ€ ๊บผ์ง€๊ฒŒ.
// ๊ทผ๋ฐ dim์„ ๋ˆŒ๋ €์„ ๋•Œ๋งŒ ๊บผ์ ธ์•ผํ•ด์„œ event target ๊ฒ€์‚ฌ.
// ์•ˆํ•˜๋ฉด sub-menu ๋ฅผ ๋ˆŒ๋Ÿฌ๋„ ๊บผ์ง.
dims.forEach(dim => dim.addEventListener('click', function (event) {
    if (event.target.classList.contains(DIM_OPEN)) {
        dim.classList.remove(DIM_OPEN);
    }
}));


// 6. ์Šคํฌ๋กค ํ•˜๋ฉด ์•ฝ๊ฐ„์˜ ๋”œ๋ ˆ์ด ํ›„์— ํ—ค๋”๊ฐ€ ์‚ฌ๋ผ์ง€๋Š” ๊ฒƒ.
let lastScroll = 0;

function headerScrolled() {
    const currentScroll = window.pageYOffset;
  
    if (currentScroll > lastScroll ) {
        // down
        header.classList.add(SCROLL_DOWN);
    } else if (
        currentScroll < lastScroll 
    ) {
        // up
        header.classList.remove(SCROLL_DOWN);
    }
    lastScroll = currentScroll;
}

window.addEventListener('scroll', function () {
    // 2. ์„œ๋ธŒ๋ฉ”๋‰ด ๋‚˜์˜จ ์ƒํƒœ์—์„œ ์Šคํฌ๋กคํ•˜๋ฉด ๊บผ์ง€๊ฒŒ!!
    menuItems.forEach(menuItem => menuItem.classList = MENU_CLOSE);
    const currentScroll = window.pageYOffset;
    headerScrolled();
});
<!-- ๋งˆํฌ์—…์€ ๋„ˆ๋ฌด ๋งŽ์•„์„œ ์œ„์— ์žˆ๋Š” ๊ตฌ์กฐ์—์„œ ํ•„์š”ํ•œ ๊ฒƒ๋งŒ ๊ฐ€์ ธ์˜ด. -->
<li class="menu__item">
    <!-- ์ด ํƒ€์ดํ‹€์ด ๋ˆ„๋ฅด๋ฉด ์„œ๋ธŒ ๋ฉ”๋‰ด๊ฐ€ ํŽผ์ณ์ง€๋Š” ๋ฒ„ํŠผ์˜ ์—ญํ• ์„ ํ•˜๊ฒŒ ๋œ๋‹ค.
         ๊ทผ๋ฐ ๊ตฌ์กฐ์ƒ menu__item ์„ ๋ˆ„๋ฅด๋Š”๊ฑฐ๋‚˜ ๋‹ค๋ฆ„ ์—†์–ด์„œ
         menu__item ์„ ๋ˆ„๋ฅด๋ฉด, ์ƒ์œ„์— ์žˆ๋Š” menu__item ์— menu__item--open class ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ
         ์ž์‹์ธ dim, sub-menus ๊ฐ€ ํ™”๋ฉด์— ๋‚˜ํƒ€๋‚˜๊ฒŒ ์ฒ˜๋ฆฌ.
    -->
    <h2 class="menu__title">Creativity & Design</h2>
        <div class="dim">
            <div class="sub-menus">
                <ul class="menu__sub-menu">
                    <li class="sub-menu__item sub-menu__item--img">
.dim {
    display: none;
}
.menu__item--open {
    display: block;
}

4๋ฒˆ๊ณผ ๋ชจ๋‹ฌ์€ ๊ฐ™์€ ๋กœ์ง์œผ๋กœ ์ ์šฉํ–ˆ๊ณ , ๊ฒ€์ƒ‰์ฐฝ์€ ์„œ๋ธŒ ๋ฉ”๋‰ด์™€ ๊ฑฐ์˜ ๋‹ค๋ฅผ๊ฒŒ ์—†์œผ๋ฏ€๋กœ ๋‚˜๋จธ์ง€ ์ฝ”๋“œ๋Š” ์ƒ๋žตํ•œ๋‹ค. github ์— ์˜ฌ๋ ค๋‘์—ˆ๋‹ค.



3. ๋ฏธ๋””์–ด์ฟผ๋ฆฌ

์žก์•„์•ผ ํ•˜๋Š” ๋ถ€๋ถ„ ์ค‘ ๊ฐ€์žฅ ํฐ ๋ถ€๋ถ„์ด ์œ„์— ์˜ฌ๋ฆฐ ๋ฉ”๋‰ด 900px ๋ฏธ๋งŒ์—์„œ ๋ฉ”๋‰ด ๋ฒ„ํŠผ์œผ๋กœ ์ค„์–ด๋“ค๊ณ , ๋ˆ„๋ฅด๋ฉด ๊ฒ€์ƒ‰์ฐฝ ๊ณผ ๋ฉ”๋‰ด๊ฐ€ ๊ฐ™์ด ๋‚˜์˜จ๋‹ค๋Š” ์ ์ด์—ˆ๋‹ค.

1. ๊ฒ€์ƒ‰์ฐฝ๊ณผ ๋ฉ”๋‰ด๊ฐ€ ๊ฐ™์ด ๋‚˜์˜ค๋Š” ๋ฌธ์ œ

์ผ๋‹จ ์ด ๋ฌธ์ œ๋Š” ์ด๋ ‡๊ฒŒ ๋”๋Ÿฝ๊ฒŒ ํ•ด๊ฒฐ์„ ํ•ด๋„๋˜๋‚˜? ์‹ถ์—ˆ์ง€๋งŒ.. ๋”๋Ÿฝ๊ฒŒ ํ•ด๊ฒฐ์„ ํ–ˆ๋‹ค.

์›๋ž˜ ๋”ฐ๋กœ๋”ฐ๋กœ ์—ด๋ฆฌ๋Š” .dim--search์™€, .dim--menu ์— toggle ์„ ๊ฐ™์ด ์ค˜์„œ ๋™์‹œ์— ์—ด๋ฆฌ๊ณ  ๋‹ซํžˆ๊ฒŒ ๋งŒ๋“ค์—ˆ๋‹ค. CSS ๋Š” position์„ ์ด์šฉํ•ด์„œ ๊ทธ๋ƒฅ ์ ‘ํ•ฉํ•˜๋“ฏ์ด(...) ์œ„์น˜๋ฅผ ์žก์•˜๋‹ค. ๊ทธ๋ž˜์„œ ์ผ๋ฐ˜ ์‚ฌ์šฉ์ž์ฒ˜๋Ÿผ ํ–‰๋™ํ•˜์ง€ ์•Š๊ณ  ์ฐฝ ํฌ๊ธฐ๋ฅผ ๋Š˜๋ ธ๋‹ค ์ค„์˜€๋‹ค ๋ฉ”๋‰ด๊ฐ€ ์—ด๋ ธ๋‹ค ๋‹ซํ˜”๋‹ค ํ•˜๋ฉด์„œ ์ž‘๋™ํ•˜๋ฉด.... ํ•˜๋‚˜๋งŒ ์ผœ์ ธ์žˆ๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. window ์‚ฌ์ด์ฆˆ๋ฅผ ์ค„์ผ ๋•Œ ๋ชจ๋‘ ๋‹ซํžˆ๊ฒŒ ํ•˜๋ฉด ํ•ด๊ฒฐ๋  ๊ฒƒ ๊ฐ™์€๋ฐ ์•„๋ฌด๋ฆฌ ์‚ฌ์šฉ์ž๋Š” ๊ธฐํš์ž์™€ ๊ฐœ๋ฐœ์ž์˜ ์ƒ์ƒ์„ ์ดˆ์›”ํ•œ๋‹ค๊ณ ๋Š” ํ•˜์ง€๋งŒ ๊ทธ๋Ÿฐ ์‚ฌ์šฉ์ž๊ฐ€ ์žˆ์„๊นŒ์‹ถ๋‹ค.

// media query max-width 899
menuButton.addEventListener('click', function() {
    dimSearch.classList.toggle('dim--search--open');
    dimMenu.classList.toggle('dim--menu--open');
    menuButton.innerText = "menu";
    if (dimMenu.classList.contains('dim--menu--open')) {
        menuItems.forEach(item => item.classList = MENU_CLOSE);
        subMenuTitles.forEach(title => title.classList = 'sub-menu__category');
        menuButton.innerText = "close";
    }
});

2. ๋ฉ”๋‰ด๊ฐ€ ์•„์ฝ”๋””์–ธ ํ˜•์‹์ด๋‹ค.

์•„์ฝ”๋””์–ธ ํ˜•์‹์€.. ์‚ฌ์‹ค ๋ธ”๋Ÿญ ์š”์†Œ๊ฐ€ ์—†์–ด์กŒ๋‹ค ๋‚˜์˜ค๋ฉด ๋ฐ‘์˜ ์š”์†Œ๋“ค์ด ๊ฐ™์ด ๋‚ด๋ ค๊ฐ€์„œ ์ž๋™์ ์œผ๋กœ ์žก์„ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์ธ๋ฐ...

์ด๊ฒŒ media query ์ ์šฉ ์ „ ์›น ํŽ˜์ด์ง€ ๊ธฐ์ค€ ์‚ฌ์ดํŠธ์—์„œ position์ด๋ž‘ flex ์จ์„œ ๋Š˜์—ฌ๋†“์€ ๋ฉ”๋‰ด๋ผ ํŽผ์ณ์ง€๊ธด ํ•˜๋Š”๋ฐ ๋ฉ‹์ง€๊ฒŒ ๊ฒน์น˜๋Š”!!! ๋ฌธ์ œ๋ฐœ์ƒ..

์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์ด๋ ‡๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์„๊นŒ? ์•„์ง ๋ชจ๋ฅด๊ฒ ๋‹ค... ์›น ํŽ˜์ด์ง€ ๋‹น์—ฐํžˆ PC ๊ธฐ์ค€์œผ๋กœ ์žก๊ณ  ๋ชจ๋ฐ”์ผ ๊ธฐ์ค€์œผ๋กœ ์žก๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ.. ์š”์ฆ˜ ๊ธฐ์—…๋“ค์€ ๋ชจ๋ฐ”์ผ ํŽ˜์ด์ง€ ๋จผ์ € ๋งŒ๋“ค๊ณ  PC ํ™”๋ฉด ์žก๋Š” ์ด์œ ๊ฐ€ ์žˆ๋‚˜๋ณด๋‹ค... ๊ทธ์น˜๋งŒ ์ด๋ฏธ ์›น ๊ธฐ์ค€์œผ๋กœ ์žก๊ณ  ์ขํ˜€ ๋“ค์–ด๊ฐ€์„œ ๋ฌด๋ฅผ ์ˆ˜ ์—†๋‹ค...

-> ํ•ด๋‹น ๋ฉ”๋‰ด๋ฅผ position: static ์œผ๋กœ ๋ฐ”๊ฟ”๋„ ์•ˆ๋์—ˆ๋Š”๋ฐ, ๋ฐ”๊นฅ ์š”์†Œ ์ค‘์— position์ด ๊ฑธ๋ ค์žˆ์ง€๋งŒ, ์•ˆ๊ฑธ๋ ค์žˆ์–ด๋„ ๋˜‘๊ฐ™์ด ๋‚˜์˜ค๋Š” ๊ฒƒ๋“ค์„ ๋‹ค ์ œ๊ฑฐํ–ˆ๋”๋‹ˆ!!! ํ•ด๊ฒฐ์ด ๋๋‹ค. position์„ absolute๋กœ ๊ฑธ๋ ค์žˆ๋˜ ๊ฒƒ์„ static์œผ๋กœ ์ œ๊ฑฐํ•˜๋Š”๊ฒŒ ์ •๋‹ต์ด์—ˆ๋Š”๋ฐ ๋‹ค๋ฅธ ๊ฒƒ๋“ค์ด position์ด ๊ฑธ๋ ค์žˆ์–ด์„œ ์•ˆ๋๋˜ ๊ฒƒ ๊ฐ™๋‹ค.




4. ๋Š๋‚€ ์ 

์‚ฌ์‹ค Adobe ๊ธฐ๊ฐ„์€ 12์›” 6์ผ๋ถ€ํ„ฐ ์˜€๋Š”๋ฐ, ์ฒซ ์ผ์ฃผ์ผ์€ ๋ฐ”๋น ์„œ, ๋‘˜์งธ์ฃผ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฐฐ์› ๋”๋‹ˆ ๋งˆํฌ์—…์ด ์งˆ๋ฆฐ๋‹ค๊ณ (...) ์†Œํ™€ํžˆ ํ•˜๋‹ค๊ฐ€ ์…‹์งธ์ฃผ์— ์—ด์‹ฌํžˆ ํ•ด์„œ ์™„์„ฑ์„ ํ–ˆ๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ถ™์—ฌ๋ณด๋‹ˆ๊นŒ ๋‚ด๊ฐ€ ์ง  ๋งˆํฌ์—…์ด ๋„ˆ๋ฌด ๋”๋Ÿฝ๊ณ ... ๋‚ด๊ฐ€ ์ง  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋” ๋”๋Ÿฝ๊ณ ... ๋‚ด ์ž„์˜๋Œ€๋กœ ๊ธฐ๋Šฅ์ด๋ž์‹œ๊ณ  ํŒŒ์ผ์„ ๋ถ„๋ฆฌํ•˜๊ธด ํ–ˆ์ง€๋งŒ, ํŒŒ์ผ ๊ฐ„์˜ ๊ฒฝ๊ณ„๊ฐ€ ๋ชจํ˜ธํ•ด์„œ ๊ฒฐ๊ตญ ๋‹ค๋ฅธ ํŒŒ์ผ์˜ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜๋ฅผ ์จ์•ผํ•˜๋Š” ์ผ์ด ๋ฐœ์ƒํ–ˆ๋‹ค. ์ด๋Ÿฐ ์ผ์„ ๊ฒช์–ด๋ณด๋‹ˆ๊นŒ ์š”์†Œ๋“ค์„ ์™œ ์ปดํฌ๋„ŒํŠธํ™” ํ•˜๋ ค๋Š”์ง€ ์•Œ๊ฒ ๊ณ ... ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ๊ดœํžˆ ์“ฐ๋Š”๊ฒŒ ์•„๋‹ˆ๊ตฌ๋‚˜ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค.

๋ฆฌํŒฉํ† ๋ง์€ ๋„ˆ๋ฌด ์ด์ƒํ•œ html class ์ด๋ฆ„์ด๋‚˜ CSS ํ›‘์–ด๋ณด๋ฉด์„œ ๊ฒน์น˜๋Š” ์š”์†Œ ๋นผ๊ณ , ํ•ฉ์น˜๊ณ  ํ•˜๋Š” ๊ณผ์ •์€ ์ˆ˜ํ–‰ํ•˜๊ธฐ๋Š” ํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ œ์ผ ๋”๋Ÿฌ์šด(?) ๋ถ€๋ถ„์€ ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ card--big์—๋Š” img ํƒœ๊ทธ๋กœ card--medium์—๋Š” background-image ๋กœ ์•„์ด์ฝ˜์€ img, ๊ฐ€์ƒ์š”์†Œ + background-image, svg ... ๋ฅผ ๋‹ค ์จ์„œ ํ†ต์ผ์„ฑ์ด ์—†๋‹ค๋Š” ์  ๊ฐ™๋‹ค. ๊ทธ์น˜๋งŒ ๋‚ด๊ฐ€ ์šด์˜ํ•  ์‚ฌ์ดํŠธ๋ผ๋ฉด ๋‚˜ํ•œํ…Œ ์ด๋ฏธ์ง€ ํŒŒ์ผ๋“ค์ด ๋‹ค ์žˆ์œผ๋‹ˆ๊นŒ ํ†ต์ผ์„ฑ ์žˆ๊ฒŒ ๋งŒ๋“ค๊ณ  CSS Sprite ๊ธฐ๋ฒ•๋„ ๋„์ž…ํ• ์ง€ ๊ณ ๋ฏผํ•ด๋ดค์„ ๊ฒƒ ๊ฐ™์€๋ฐ, ์•„์ด์ฝ˜์ด ์ „๋ถ€ ๋‚˜ํ•œํ…Œ ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ๋‹ˆ๊นŒ.. ์ด ๋ถ€๋ถ„์„ ๋ฆฌํŒฉํ† ๋งํ•˜๋Š”๊ฒŒ ์˜๋ฏธ๊ฐ€ ์—†์„ ๊ฒƒ ๊ฐ™์•„์„œ ๋‹ค๋ฅธ ๊ณต๋ถ€๋ฅผ ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.




profile
0๋…„์ฐจ iOS ๊ฐœ๋ฐœ์ž์ž…๋‹ˆ๋‹ค.

0๊ฐœ์˜ ๋Œ“๊ธ€