CSS๋ฅผ ๊ฐ๋ณ์ ์ผ๋ก ์ ์ฉํ๋ ค๋ฉด ํด๋์ค ์ด๋ฆ์ ์ง์ ํด์ ํ์ฉํ๋ ๊ฒ ํธํ๋ค.
ํ์ง๋ง ํด๋์ค ์ด๋ฆ์ ๋ง๊ตฌ์ก์ด๋ก ์ ํ๋ค๋ณด๋ฉด ๊ฒ์ก์ ์ ์์ด ํ์ผ์ด ๋์กํด์ง๋ค. ํนํ๋ ๋์์ธ์ด ํ์ ๋์ง ์๊ณ ํผ์ ์ฐ์ตํ ๋ ๊ทธ๋ฌํ ๊ฒฝ์ฐ๊ฐ ๋ง์ด ๋ํ๋๋ค.
๋ฏธ๋ฆฌ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช์๋ ๊ฐ๋ฐ์๋ค์ด ์๊ฐํด ๋ธ ํจ์จ์ ์ธ ํด๋์ค ์ด๋ฆ ์ ํ๊ธฐ, BEM์ ๋ํด ์์๋ณด์.
<div class="block__element--modifier">Hello World</div>
BEM์ ํน์ ํ ํ๋ก๊ทธ๋จ์ด๋ ๋ชจ๋์ด ์๋ ์ปจ๋ฒค์ ์ด๋ค. ํด๋์ค ์ด๋ฆ์ ์ด๋ป๊ฒ ์ง์ด์ผ ์ข์์ง์ ๋ํ ๊ท์น๊ฐ์ ๊ฒ์ด๋ ์งํค์ง ์๋๋ค๊ณ ํด์ ์ค๋ฅ๊ฐ ์๊ธฐ์ง๋ ์๋๋ค.
ํ์ง๋ง ์ด๋ ์ ๋ ๊ท๋ชจ๊ฐ ์๋ ํ๋ก์ ํธ๋ถํฐ๋ naming ์์ฒด๊ฐ ์ค์ํด์ง๊ธฐ ๋๋ฌธ์ ๋๋๋ก์ด๋ฉด ์งํค๋๋ก ์ต๊ด์ ๋ค์ด๋ ๊ฒ ์ข๋ค.
block์ ๋จ๋ ์ผ๋ก ์๋ฏธ๊ฐ ์๋ ๋ ๋ฆฝ์ ์ธ ๊ฐ์ฒด์ด๋ค. ์ปดํฌ๋ํธ ๋จ์๋ผ๊ณ ๋ ๋ณผ ์ ์์ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ block์ด๋ element์ ์์กด์ ์ด๋ฉด ์ ๋๋ค.
๋ค์ ์บก์ฒ์์ ํ๊ดํ์ผ๋ก ํ์ํ navbar๊ฐ ํ๋์ ๋ธ๋ก์ด๋ผ๊ณ ๋ณผ ์ ์๊ฒ ๋ค.
๋ธ๋ก์ ์ผ๋ถ๋ถ์ด๊ณ , ๋จ๋ ์ ์ธ ์๋ฏธ๋ฅผ ๊ฐ์ง ์๋๋ค. ์์ ์์์์ navbar์ ์์ ํ๋ํ๋๋ผ๊ณ ํ ์ ์๋ค.
<nav class="navbar">
<div class="navbar__item">item</div>
</nav>
๋ค์๊ณผ ๊ฐ์ด block์ ์ผ๋ถ๋ถ์์ ๋ํ๋ผ ์ ์๋ค.
block์ด๋ element์ ์ํ, ๋ชจ์ต, ๋์ ๋ฑ์ ๋ํ๋ด๋ flag์ด๋ค.
์์ ์บก์ฒ์์ Naming ํญ์ ๋ณด๊ณ ์๊ธฐ ๋๋ฌธ์ Naming ๋ถ๋ถ๋ง ์์ด ๋ณํ๋๋ฐ ๊ฐ๋ฐ์ ๋๊ตฌ๋ฅผ ์ด์ด๋ณด๋ฉด
<li class="navbar__item--active">
<a href="/naming/">Naming</a>
</li>
๋ค์๊ณผ ๊ฐ์ด class ์ด๋ฆ์ modifier๊ฐ ์ค์ ๋ผ ์๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
์ฌํ BEM์ ์ ์จ๋ณด์ง ์์๋ค. css์ module ๊ธฐ๋ฅ์ ์๊ณ ๋ ํ ๊ณ์ css module๋ง ์ผ๋ค. ๋๋ฌด ์ผ์ฐ ํธ๋ฆฌํ ๊ธฐ๋ฅ์ ์์๋ฒ๋ฆฐ ๋ถ์์ฉ์ธ์ง class naming์ ๋ํ ๋ฅ๋ ฅ์ด ๋ง์ด ๋ถ์กฑํ๋ค.
์ง๊ธ๋ถํฐ๋ผ๋ ์์ํ๋ฉด์ ์ด๋ฆ์ ์ง์ด์ผ๊ฒ ๋ค.