BEM์ด๋(Block Elements Modifier)
BEM์ CSS ๊ฐ๋ฐ ๋ฐฉ๋ฒ๋ก , ๋ค์ด๋ฐ ์ปจ๋ฒค์ ์ด๋ค. html ์์๋ค์ ๊ฐ๊ฐ Block, Element, Modifier ์ธ ๊ฐ์ง๋ก ๋ถ๋ฅํด ์๋ช ํ๋ค. Block ๋ค์์ Element(๋ด๋ถ์์) ํน์ Modifier(์ํ)์์ผ๋ก ๋ค์ด๋ฐ ํ๋ค.๊ฐ๊ฐ์ BEM์ ๊ฐ์์ ์ญํ ์ด ๋ฐ๋ก ์์ผ๋ฏ๋ก ์ญํ ์ ์๋ง์ ํด๋์ค๋ฅผ ๋ถ์ฌ์ผ ํ๋ค.
.block {}
// ๋ ๋์ ๋จ๊ณ์ ์ถ์(abstraction) ํน์ ๊ตฌ์ฑ์์(component)๋ฅผ ๋ํ๋ธ๋ค.
.block__element {}
// block์ ์์ | ๊ตฌ์ฑ์์
.block--modifier {}
// block์ ๋ค๋ฅธ ์ํ | ๋ฒ์ | ์ข
๋ฅ๋ฅผ ๋ํ๋ธ๋ค.
์ฌ์ฉ ์์
.person {}
.person__hand {}
.person--female {}
.person--female__hand {}
.person__hand--left {}
์ ๋ฆฌ
1. Hypen naming ์์ฑํ๋ค: camelCase under_hypen ์ง์ํ๋ค.
2. js ํค์๋๋ฅผ ์ถ๊ฐํ์ฌ, ํด๋น dom์์๊ฐ js์์ ์ฌ์ฉํ๊ณ ์์์ ํํํ๋ ๋ฐฉ๋ฒ์ด ์๋ค.
3. CSS๋ ๋ณ๋ ฌ์ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์๊ธฐ ๋๋ฌธ์ ํ์ํ ๊ฒฝ์ฐ ์ฃผ์์ ํตํด ์ถฉ๋ถํ ์ค๋ช
ํ์,
4. ์ด๋ฆ์ ์๋ฏธ๋ฅผ ํ์
ํ ์ ์์ ์ ๋๋ก๋ง ์ค์ฌ์ผํ๋ค.
๋ฐ์ํ