๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ

BEM์€ CSSํ‘œ๊ธฐ๋ฒ•

category ๐ŸŒ• Front/โœจ CSS 2021. 5. 3. 13:50

 

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. ์ด๋ฆ„์€ ์˜๋ฏธ๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ๋งŒ ์ค„์—ฌ์•ผํ•œ๋‹ค.

๋ฐ˜์‘ํ˜•