ABOUT ME

Today
Yesterday
Total
  • BEM๋ฐฉ๋ฒ•๋ก 
    and so on 2023. 11. 13. 12:09

    ๐Ÿคทโ€โ™€๏ธ  BEM๋ฐฉ๋ฒ•๋ก ์ด๋ž€ ?

    CSS ์ œ์ž‘ ๋ฐฉ๋ฒ•๋ก ์œผ๋กœ, ์ผ์ข…์˜ ๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค

     

    ๐Ÿ˜Ž  BEM์˜ ๊ธฐ๋ณธ๊ตฌ์กฐ

    Block Element Modifier โ‡’ ์ด ์„ธ๊ฐ€์ง€๋กœ ๊ตฌ์„ฑ๋œ ์ด๋ฆ„์„ ์ง“๋Š”๊ฒƒ์ž„!!
      
    ๊ฐ๊ฐ __์™€ โ€”์œผ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค
      <div class="header__navigation--input"></div>


    header์€ Block
    navigation์€ Element
    input์€ Modifier


    BEM์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ID๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ class๋งŒ์„ ์‚ฌ์šฉํ•จ
    ์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”๊ฐ€๊ฐ€ ์•„๋‹˜โ‡’ ์–ด๋–ค ๋ชฉ์ ์ธ๊ฐ€์— ๋”ฐ๋ผ ์ด๋ฆ„์„ ์ง“๋Š”

     

    ๐Ÿ˜ˆ Block  

    ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋…๋ฆฝ์  ๋ธ”๋ก์œผ๋กœ ๊ฐ€์žฅ ๋ฐ”๊นฅ์ชฝ ์ƒ์œ„์š”์†Œ
    => ์–ด๋””์— ์ข…์†๋˜์ง€ ์•Š์•„์„œ ํ—ค๋”์— ์“ฐ์ผ ์ˆ˜๋„ ์žˆ๊ณ , ํ‘ธํ„ฐ์— ์“ฐ์ผ ์ˆ˜๋„ ์žˆ๊ณ , ์—ฌ๊ธฐ์ €๊ธฐ ๋ถ™์˜€๋‹ค ๋–ผ์—ˆ๋‹ค ํ•  ์ˆ˜ ์žˆ๋‹ค 
    • Block ์ด๋ฆ„์€ ์ƒ‰์ƒ์ด๋‚˜ ํฌ๊ธฐ ๋“ฑ์„ ๋ฌ˜์‚ฌํ•˜๋Š” ์ด๋ฆ„์ด ์•„๋‹ˆ๋ผ ๊ตฌ์กฐ์ ์œผ๋กœ ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์„ ์‚ฌ์šฉํ•œ๋‹ค
    • ๋ธ”๋Ÿญ์€ ๋ธ”๋Ÿญ์„ ๊ฐ์Œ€ ์ˆ˜ ์žˆ๋‹ค .header>.logo</span> =>header๋ผ๋Š” ๋ธ”๋Ÿญ ์•ˆ์— logo๋ผ๋Š” ๋ธ”๋Ÿญ์ด ๋“ค์–ด๊ฐ„ ํ˜•ํƒœ์ž„  

    ๐Ÿ˜ˆ Element

    ๋ธ”๋ก ๋‚ด๋ถ€์— ์ข…์†๋˜์–ด ์‹ค์ œ ๊ธฐ๋Šฅ์„ ๋‹ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„
    => ์ž์‹ ์ด ์†ํ•œ ๋ธ”๋Ÿญ ๋‚ด์—์„œ๋งŒ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ธ”๋Ÿญ์•ˆ์—์„œ ๋–ผ์–ด๋‹ค๊ฐ€ ๋‹ค๋ฅธ๋ฐ์— ์“ธ ์ˆ˜์—†๋‹ค.


    Block๊ณผ Element์˜ ์ด๋ฆ„ ์‚ฌ์ด๋Š” __๋กœ ๊ตฌ๋ถ„์ง“๋Š”๋‹ค

     <header class="search">
       <div class="search__content">
        <input class="search__input"/>
         <button class="search__button">Search</button>
       </div>
    </header>


    ์—˜๋ฆฌ๋จผํŠธ ๋˜ํ•œ ์ค‘์ฒฉ์ด ๊ฐ€๋Šฅํ•จ
     .search์€ ๋ธ”๋Ÿญ์ด๊ณ , .search__content,input, button์€ ์—˜๋ฆฌ๋จผํŠธ์ž„
    => ๋‹ค ๋˜‘๊ฐ™์ด `.block`์˜ ์—˜๋ฆฌ๋จผํŠธ๋กœ ์ทจ๊ธ‰ํ•œ๋‹ค! 
    โ‡’ ๊ทธ๋ž˜์„œ ํด๋ž˜์Šค๋„ค์ž„์— ์บ์Šค์ผ€์ด๋”ฉ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ‘œ์‹œํ•  ํ•„์š”๊ฐ€ ์—†์Œ.
      
    โ“ BEM ๋ฐฉ์‹์„ ์“ฐ์ง€ ์•Š์œผ๋ฉด

    <header class="search">
       <div class="search__content">
        <input class="search__content__input"/>
        <button class="search__content__button">Search</button>
       </div>
    </header>

     

    => ํด๋ž˜์Šค๋„ค์ž„์— ์บ์Šค์ผ€์ด๋”ฉ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ‘œ์‹œํ•ด์ฃผ์–ด์•ผ ํ•จ


    ๐Ÿ˜ˆ Modifier

    Block์ด๋‚˜ Element์˜ ์†์„ฑ์„ ๋‹ด๋‹น
    • Modifier๋Š” --๋กœ ๊ตฌ๋ถ„์ง“๋Š”๋‹ค
    • boolean ํƒ€์ž…๊ณผ key-value ํƒ€์ž…์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค


    ๐ŸŒ  ๋ถˆ๋ฆฌ์–ธ(boolean) ํƒ€์ž…

    <div class="tab__item--hidden"></div>
    <div class="tab__item--visible"></div>

     

    --hidden๊ณผ--visible๊ฐ™์€ ๋ถˆ๋ฆฌ์–ธํƒ€์ž…์œผ๋กœ ์“ธ์ˆ˜ ์žˆ๋‹ค 


    ๐ŸŒ  ํ‚ค-๋ฐธ๋ฅ˜(key-value) ํƒ€์ž…

    <form class="form-login form-login--theme-normal">
    <strong class="title title--color-pink">

     

    color-pink์™€ theme-normal๊ฐ€ key-value(์†์„ฑ-๋‚ด์šฉ) ํƒ€์ž…์ด๋‹ค


    ์ •๋ฆฌ


    ๐Ÿ˜Ž BEM์˜ ์žฅ๋‹จ์  ๐Ÿ˜Ž  


    ์žฅ์  

    • ์ง๊ด€์ ์ธ ํด๋ž˜์Šค ๋ช…์œผ๋กœ ๋งˆํฌ์—… ๊ตฌ์กฐ๋ฅผ ์ง์ ‘ ๋ณด์ง€ ์•Š์•„๋„ ๊ตฌ์กฐ์˜ ํŒŒ์•…์ด ์‰ฌ์›€
    •  SASS์ž‘์„ฑ ์‹œ, ๋Š˜์–ด์ง€๋Š” ์…€๋ ‰ํŒ…์„ ๋ง‰์•„์คŒ
          (=>BEM๋ฐฉ์‹์„ ์“ฐ๋ฉด ๋„ˆ๋„๋‚˜๋„ ์—˜๋ฆฌ๋จผํŠธ๋ผ์„œ ๊ตณ์ด ๊นŠ๊ฒŒ nestedํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง!! ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ๋กœ ๋ณด์ง€ ์•Š๊ณ  ๋‘˜ ๋‹ค ๋˜‘๊ฐ™์ด `.block`์˜ ์—˜๋ฆฌ๋จผํŠธ๋กœ ์ทจ๊ธ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ...!) 

    ๋‹จ์ 

    • ์ด๋ฆ„์ด ๊ธธ๊ณ  ๋ณต์žกํ•ด ์งˆ์ˆ˜ ์žˆ๋‹ค.
Designed by Tistory.