SlideShare a Scribd company logo
1 of 22
css naming convention
์ž‘์„ฑ : ๋ฐ•์ค€๊ธฐ
์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ์ฝ”๋“œ ๊ณต์œ ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” CSS๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค.
B__E--M
BEM ๋ฐฉ๋ฒ•๋ก  ๋„์ž…์˜ ํ•„์š”์„ฑ
CSS์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ์š”์†Œ๋“ค์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด id์™€ class๋ฅผ ๋‚จ๋ฐœํ•˜๋‹ค๋ณด๋ฉด ์–ด๋””์— ๋ฌด์—‡์ด ์žˆ์—ˆ๋Š”์ง€ ์•Œ๊ธฐ ๋„ˆ๋ฌด ํž˜๋“ค์–ด์ง„๋‹ค.
๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ์˜ ์ž‘์—… ๊ฒฐ๊ณผ๋ฌผ์„ ํ•ฉ์น˜๋‹ค ๋ณด๋ฉด ์ƒˆ๋กœ ๋งŒ๋“œ๋Š”๊ฒŒ ํ›จ์”ฌ ๋น ๋ฅด๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.
๊ทธ๋Ÿฌ๋‹ค๋ณด๋ฉด ์–ด๋Š๋ง ๊ทธ๋ƒฅ ๋˜๋‹ค๋ฅธ ์“ฐ๋ ˆ๊ธฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ๋‚˜๋ฅผ ๋ฐœ๊ฒฌํ•œ๋‹ค.
CSS ๋ฐฉ๋ฒ•๋ก ์˜ ์—ญ์‚ฌ
OOCSS
๋‹ˆ์ฝœ ์„ค๋ฆฌ๋ฒˆ(Nicole Sulivan) ์ œ์ฐฝ
โ€ข ๋ ˆ๊ณ ์ฒ˜๋Ÿผ ์ž์œ ๋กœ์šด ์กฐํ•ฉ์ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆ์˜ ์ง‘ํ•ฉ์„ ๋งŒ๋“ค๊ณ 
โ€ข ๊ทธ ๋ชจ๋“ˆ์„ ์กฐํ•ฉํ•ด ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค.
โ€ข ๋”ฐ๋ผ์„œ ์‹ ๊ทœ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์—๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ถ”๊ฐ€์ ์ธ CSS๋ฅผ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†๋‹ค.
โ€ข ๋ชจ๋“ˆ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋‘๊ฐ€์ง€ ์›์น™(์ŠคํŠธ๋Ÿญ์ณ์™€ ์Šคํ‚จ์„ ๋ถ„๋ฆฌ / ์ปจํ…Œ์ด๋„ˆ์™€ ์ฝ˜ํ…์ธ  ๋ถ„๋ฆฌ)์„ ๋”ฐ๋ฅธ๋‹ค.
- Object Oriented CSS(๊ฐ์ฒด ์ง€ํ–ฅ CSS) -
ABOUT OOCSS
์ŠคํŠธ๋Ÿญ์ณ์™€ ์Šคํ‚จ - With, height, padding, margin ๋“ฑ / color, font, background, box-shadow๋“ฑ ์ปจํ…Œ์ด๋„ˆ์™€ ์ฝ˜ํ…์ธ  ๋ถ„๋ฆฌ โ€“ ๋ชจ๋“ˆ์„ ์˜์—ญ์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค
์š”์†Œ
๋ชจ๋“ˆ
OOCSS ์ •๋ฆฌ
์žฅ์ 
โ€ข ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์Œ: OOCSS๋Š” CSS ์ฝ”๋“œ๋ฅผ ๋ชจ๋“ˆ ๋‹จ์œ„๋กœ ๊ตฌ์„ฑํ•˜๋ฏ€๋กœ, ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์–‘์„ ์ค„์ด๊ณ , ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋†’์Œ: OOCSS๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๋ฏ€๋กœ, ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋†’์•„์ง„๋‹ค.
์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ด๋„ ๋ ˆ์ด์•„์›ƒ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ , ๋ ˆ์ด์•„์›ƒ์„ ์ˆ˜์ •ํ•ด๋„ ์Šคํƒ€์ผ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
โ€ข ํ™•์žฅ์„ฑ์ด ๋†’์Œ: OOCSS๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฑ„์šฉํ•˜๋ฏ€๋กœ, ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
์ƒˆ๋กœ์šด ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ๊ธฐ์กด ๋ชจ๋“ˆ์„ ์ˆ˜์ •ํ•ด๋„ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์ด ๋†’์•„์ง„๋‹ค.
๋‹จ์ 
โ€ข ํ•™์Šต ๋‚œ์ด๋„ ๋†’์Œ / ์ฝ”๋“œ์˜ ์–‘์ด ๋Š˜์–ด๋‚จ / ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง
๊ธฐํƒ€์˜๊ฒฌ
โ€ข OOCSS์˜ ์—ญ์‚ฌ๋Š” ๋งค์šฐ ๊ธธ๋ฉฐ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ทœ์น™์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ฒƒ๋„ ๋งŽ์ง€ ์•Š๋‹ค.
โ€ข ๋‹ค๋ฅธ CSS๋ฐฉ๋ฒ•๋ก ๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌOCSS๋ฅผ ์ฐธ์กฐํ•˜๋ฉด์„œ ๊ฐœ์„ ํ•œ ๊ฒƒ
โ€ข ์˜ค๋Š˜๋‚  ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜์˜ ๊ฐœ๋ฐœ์—” OOCSS ํ•œ ๊ฐ€์ง€๋งŒ์œผ๋กœ ์‹ค์งˆ์ ์ธ CSS ์„ค๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋‹ค์ง€ ํ˜„์‹ค์ ์ด์ง€ ์•Š๋‹ค.
CSS ๋ฐฉ๋ฒ•๋ก ์˜ ์—ญ์‚ฌ
SMACSS
- Scalable and Modular Architecture for CSS(ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆํ™”๋œ ์•„ํ‚คํ…์ณ CSS) -
์กฐ๋‚˜๋‹จ ์Šค๋ˆ…(Jonathan Snook) ์ œ์ฐฝ
CSS ์ฝ”๋“œ๋ฅผ ๊ทธ ์—ญํ• ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•œ ๊ฒƒ์ด ํŠน์ง•
โ€ข Base(๋ฒ ์ด์Šค)
โ€ข Layout(๋ ˆ์ด์•„์›ƒ)
โ€ข Module(๋ชจ๋“ˆ)
โ€ข State(์Šคํ…Œ์ดํŠธ)
โ€ข Theme(ํ…Œ๋งˆ)
ABOUT SMACSS
Base(๋ฒ ์ด์Šค) ๊ทœ์น™
โ€ข ํ”„๋กœ์ ํŠธ์˜ ํ‘œ์ค€ ์Šคํƒ€์ผ์˜ ์ •์˜ โ€“ ๋ฐ”ํƒ•ํ™”๋ฉด ์ƒ์ƒ๊ณผ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์— ์ ์šฉ๋˜๋Š” ์Šคํƒ€์ผ๋ง์ž…๋‹ˆ๋‹ค.
โ€ข ๋˜ํ•œ ๋ธŒ๋ผ์šฐ์ €๊ฐ„์˜ ์ฐจ์ด๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฆฌ์…‹ CSS, ๋…ธ๋ฉ€๋ผ์ด์ฆˆ CSS๋„ SMACSS ๊ธฐ์ค€์—๋Š” ๋ฒ ์ด์Šค ๊ทœ์น™์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
โ€ข ์›น์‚ฌ์ดํŠธ์˜ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๋Š” ํฐ ๋ชจ๋“ˆ์— ๊ด€ํ•œ ๊ทœ์น™์ด๋ฉฐ, ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“ˆ์€ ํŠน์ • ํŽ˜์ด์ง€์— ํ•œ์ฐจ๋ก€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋งŽ์œผ๋ฏ€๋กœ ID์…€๋ ‰ํ„ฐ
โ€ข ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“ˆ์˜ ๊ฒฝ์šฐ์—” Class ์…€๋ ‰ํ„ฐ๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค.
โ€ข ๋งŒ์•ฝ ํŠน์ •ํŽ˜์ด์ง€์—์„œ ๋ ˆ์ด์•„์›ƒ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด SMACSS ์—์„œ๋Š” ์†์ž ์…€๋ ‰๋ฅผ ์ด์šฉํ•ด ๋ ˆ์ด์•„์›ƒ ๋ชจ๋“ˆ ์Šคํƒ€์ผ์„ ๋ฎ์–ด์“ธ ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ABOUT SMACSS
Layout(๋ ˆ์ด์•„์›ƒ) ๊ทœ์น™
โ€ข ๋ชจ๋“ˆ์€ ํƒ€์ดํ‹€, ๋ฒ„ํŠผ, ์นด๋“œ, ๋„ค๋น„๊ฒŒ์ด์…˜ ๋“ฑ ์ผ๋ฐ˜์ ์ธ UI์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.
โ€ข ๋ชจ๋“  ๋ชจ๋“ˆ์€ ๋ ˆ์ด์•„์›ƒ ๊ทœ์น™์•ˆ์— ๋ฐฐ์น˜๋˜๋Š” ๊ฒƒ์„ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.
โ€ข ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ ˆ์ด์•„์›ƒ ์•ˆ์— ์‚ฝ์ž…ํ•˜๋”๋ผ๋„ ํ˜•ํƒœ๊ฐ€ ๋ถ€์„œ์ง€๊ฑฐ๋‚˜ ๋‹ฌ๋ผ์ง€์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ€ข ๋ชจ๋“ˆ์€ ํŽ˜์ด์ง€ ๋‚ด์—์„œ ๋ฐ˜๋ณต์‚ฌ์šฉ๋˜๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•˜๋ฏ€๋กœ ๋ฃจํŠธ ์š”์†Œ์—๋Š” ๋ฐ˜๋“œ์‹œ ํด๋ž˜์Šค ์…€๋ ‰ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.(ID์…€๋ ‰ํ„ฐ X)
ABOUT SMACSS
Module(๋ชจ๋“ˆ) ๊ทœ์น™
โ€ข ๊ธฐ์กด ์Šคํƒ€์ผ์„ ๋ฎ์–ด์“ฐ๊ฑฐ๋‚˜ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ€ข ๊ธฐ์กด ์Šคํƒ€์ผ์— ๋ชจ๋‘ ๋ฎ์–ด์จ์„œ ์Šคํ…Œ์ดํŠธ ์Šคํƒ€์ผ์„ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋Œ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” !important ์‚ฌ์šฉ๋„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.
โ€ข ์Šคํ…Œ์ดํŠธ๋Š” ๋ ˆ์ด์•„์›ƒ์ด๋‚˜ ๋ชจ๋“ˆ์— ํ• ๋‹น ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข ์Šคํ…Œ์ดํŠธ ๊ทœ์น™์— ๋”ฐ๋ฅธ ํด๋ž˜์Šค ์ด๋ฆ„์€ ๋ชจ๋‘ is- ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์—ฌ ๋‹ค๋ฅธ ๊ทœ์น™๊ณผ ๊ตฌ๋ณ„ํ•˜๋ฉฐ, ์–ด๋–ค ๋ชจ๋“ˆ์— ์ ์šฉํ•˜๋Š”์ง€๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•œ๋‹ค.
ABOUT SMACSS
State(์Šคํ…Œ์ดํŠธ) ๊ทœ์น™
โ€ข ์‚ฌ์ดํŠธ ๋‚ด ๋ ˆ์ด์•„์›ƒ์ด๋‚˜ ์ƒ‰์ƒ, ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ ๋“ฑ์„ ์ผ์ •ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ(๋ ˆ์ด์•„์›ƒ๊ทœ์น™+์Šคํ…Œ์ดํŠธ๊ทœ์น™)
โ€ข ๊ธฐ์กด์˜ ๋‹ค์–‘ํ•œ ์Šคํƒ€์ผ๋ง์ด ๋ฎ์–ด์“ฐ๊ธฐ์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค.(๋‹คํฌ๋ชจ๋“œ์ „ํ™˜, ํ…Œ๋งˆ ์ปฌ๋Ÿฌ&์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ ๋“ฑ)
โ€ข theme ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ผ ๊ฒƒ์„ ๊ถŒ์žฅ
ABOUT SMACSS
Theme(ํ…Œ๋งˆ) ๊ทœ์น™
SMACSS ์ •๋ฆฌ
์žฅ์ 
โ€ข ๊ณตํ†ต๋œ ๋ถ€๋ถ„์„ ์ •์˜ํ•ด์„œ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅ.
โ€ข ๊ตฌ์กฐ์  ์ƒํ™ฉ์— ๊ด€๊ณ„์—†์ด ๋™์ผํ•œ ํด๋ž˜์Šค๋ผ๋ฉด ๋™์ผํ•œ ์Šคํƒ€์ผ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Œ.
โ€ข ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์œผ๋กœ ์ฝ”๋“œ ์–‘์ด ์ค„์–ด๋“ฌ.
๋‹จ์ 
โ€ข ๊ณตํ†ต๋œ ํด๋ž˜์Šค๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •์ด ๋ฐœ์ƒํ•  ์‹œ ๋ฉ€ํ‹ฐํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ.
โ€ข ๋ฉ€ํ‹ฐํด๋ž˜์Šค๊ฐ€ ๋งŽ์•„์ง์— ๋”ฐ๋ผ ์œ ์ง€๋ณด์ˆ˜์— ์–ด๋ ค์›€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง.
๊ธฐํƒ€์˜๊ฒฌ
โ€ข ํ”„๋กœ์ ํŠธ์—์„œ ๊ณ ๋ คํ•ดํ•˜ ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ CSS ๊ทœ์น™์„ ํฌํ•จ ํ•œ๋‹ค.
โ€ข ๊ฐ ๊ทœ์น™์ด ์—„๊ฒฉํ•˜์ง€ ์•Š์•„ ์œ ์—ฐํ•˜๊ฑฐ๋‚˜, ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๊ทœ์น™์ด ๋„ˆ๋ฌด ์œ ์—ฐํ•˜์—ฌ ์‹ค์ œ ์ฝ”๋“œ์˜ ์ง€์นจ์œผ๋กœ ์‚ผ๊ธฐ ์–ด๋ ต๋‹ค.
โ€ข ๋ชจ๋“ˆ ๊ทœ์น™์— OOCSS๋ฅผ ์ ์šฉํ•˜๊ฑฐ๋‚˜ BEM์˜ ๊ทœ์น™์„ ์ผ๋ถ€ ์ ์šฉํ•˜๋Š” ๋“ฑ ๋‹ค๋ฅธ ์„ค๊ณ„ ๊ธฐ๋ฒ•๊ณผ ์กฐํ•ฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
BEM์ด๋ž€?
- Block, Element, Modifier -
Yandex็คพ(๋Ÿฌ์‹œ์•„)
โ€ข ๋Ÿฌ์‹œ์•„์˜ YANDEX์‚ฌ๊ฐ€ ์ œ์ฐฝํ•œ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์›น ๊ฐœ๋ฐœ ์ ‘๊ทผ๋ฒ•
โ€ข UI๋ฅผ ๋…๋ฆฝ๋œ ๋ธ”๋ก์œผ๋กœ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ๋ณต์žกํ•œ ํŽ˜์ด์ง€๋„ ๊ฐ„๋‹จํ•˜๊ณ  ์‹ ์†ํ•˜๊ฒŒ ๊ฐœ๋ฐœ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ 
โ€ข ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋ชจ๋“ˆ ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ, ๊ทธ ๋‚ด์šฉ์ด ๋‹ค๋ฅธ ์„ค๊ณ„ ๊ธฐ๋ฒ•์— ๋น„ํ•ด ์—„๊ฒฉํ•˜๊ณ  ๊ฐ•๋ ฅํ•˜์—ฌ
์„ธ๊ณ„์ ์œผ๋กœ ์ด๋ฆ„์ด ์•Œ๋ ค์กŒ์œผ๋ฉฐ ์‹ค์ œ๋กœ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค.
BEM
https://en.bem.info/
Smashing Magazine
https://www.smashingmagazine.com/2012/04/a-new-front-end-methodology-bem/
โ€ข ๊ฐœ๋ฐœ, ๋””๋ฒ„๊น…, ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•˜์—ฌ CSS ์„ ํƒ์ž์˜ ์ด๋ฆ„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋ฉฐ, ์†Œ๋ฌธ์ž, ์ˆซ์ž ๋งŒ์„ ์ด์šฉํ•ด์„œ ์ž‘๋ช…ํ•œ๋‹ค.
โ€ข ์—ฌ๋Ÿฌ๋‹จ์–ด์˜ ์กฐํ•ฉ์€ ํ•˜์ดํ”ˆ(-)์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์ž‘๋ช…ํ•œ๋‹ค.
โ€ข BEM์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ID๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, class๋งŒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
โ€ข '์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”๊ฐ€'๊ฐ€ ์•„๋‹ˆ๋ผ '์–ด๋–ค ๋ชฉ์ ์ธ๊ฐ€'์— ๋”ฐ๋ผ ์ด๋ฆ„์„ ์ง“์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋„์šฐ๋Š” P ํƒœ๊ทธ์—๊ฒŒ๋Š” .red๊ฐ€ ์•„๋‹Œ, .error๋ผ๋Š” ์ด๋ฆ„์„ ์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค.
BEM ๊ธฐ๋ณธ ๊ตฌ์กฐ ๋ฐ ์ž‘๋ช…๊ทœ์น™
์ž‘๋ช…๊ทœ์น™
โ€ข BEM์€ Blcok, Element, Modifier๋กœ ๊ตฌ์„ฑ๋œ ๋„ค์ด๋ฐ์„ ํ•˜๋Š” ๊ฒƒ ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ๊ฐ๊ฐ __์™€ --๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ๋ณธ๊ตฌ์กฐ
โ€ข ์œ„ ์ฝ”๋“œ์—์„œ header๋Š” Block, naviagtion์€ Element, navi-text๋Š” Modifier๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
BEM Block
โ€ข ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋…๋ฆฝ์ ์ธ ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ(A functionally independent page component that can be reused)
โ€ข ๋ธ”๋Ÿญ์€ ๋ธ”๋Ÿญ์„ ๊ฐ์Œ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .header>.logo๋Š” header๋ผ๋Š” ๋ธ”๋Ÿญ ์•ˆ์— logo๋ผ๋Š” ๋ธ”๋Ÿญ์ด ๋“ค์–ด๊ฐ„ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.
๋ธ”๋ก์ด๋ž€?
BEM Element
โ€ข ๋ธ”๋Ÿญ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ๋ธ”๋Ÿญ์€ ๋…๋ฆฝ์ ์ธ ํ˜•ํƒœ์ธ ๋ฐ˜๋ฉด, ์—˜๋ฆฌ๋จผํŠธ๋Š” ์˜์กด์ ์ธ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค.
์ž์‹ ์ด ์†ํ•œ ๋ธ”๋Ÿญ ๋‚ด์—์„œ๋งŒ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ธ”๋Ÿญ ์•ˆ์—์„œ ๋–ผ์–ด๋‹ค ๋‹ค๋ฅธ ๋ฐ ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)
โ€ข ์œ„ ์˜ˆ์‹œ์—์„œ .search-form์€ ๋ธ”๋Ÿญ์ด๊ณ , .search-form__input๊ณผ .search-form__button์€ ์—˜๋ฆฌ๋จผํŠธ์ž…๋‹ˆ๋‹ค.
์ € search-form์ด๋ž€ ๋ธ”๋Ÿญ์€ ๋–ผ์–ด๋‚ด์„œ ์š”๊ธฐ์กฐ๊ธฐ ๋งˆ์Œ๊ป ๋ถ™์—ฌ๋„ ๋ฉ๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ๋‚ด๋ถ€์˜ input๊ณผ button์€ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ์ธํ’‹์ฐฝ์ด์ž ๋ฒ„ํŠผ์ด๊ธฐ ๋•Œ๋ฌธ์—, search-form ์•ˆ์—์„œ๋งŒ ์กด์žฌ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ์—˜๋ฆฌ๋จผํŠธ์ž…๋‹ˆ
์—˜๋ฆฌ๋จผํŠธ๋ž€?
BEM Element
โ€ข ์—˜๋ฆฌ๋จผํŠธ๋Š” .block > .block__element1 > .block__element2์™€ ๊ฐ™์ด ์ค‘์ฒฉ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
โ€ข .block_element2๋ฅผ .block_element1์˜ ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ๋กœ ๋ณด์ง€ ์•Š๊ณ  ๋‘˜ ๋‹ค ๋˜‘๊ฐ™์ด .block์˜ ์—˜๋ฆฌ๋จผํŠธ๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค.
๋”ฐ๋ผ์„œ ํด๋ž˜์Šค๋„ค์ž„์— ์บ์Šค์ผ€์ด๋”ฉ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ‘œ์‹œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
์ค‘์ฒฉ์‚ฌ์šฉ
โ€ข ์œ„ ํ˜•ํƒœ๋Š” block-name__element-name์ด๋ž€ ํ˜•์‹์„ ๋”ฐ๋ฅด๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.๋Œ€์‹ ์— ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
BEM Modifier
โ€ข ๋ชจ๋””ํŒŒ์ด์–ด๋Š” ๋ธ”๋Ÿญ์ด๋‚˜ ์—˜๋ฆฌ๋จผํŠธ์˜ ์†์„ฑ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
โ€ข ์ƒ๊ธด ๊ฒŒ ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฑฐ๋‚˜, ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๋ธ”๋Ÿญ์ด๋‚˜ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.
๋ชจ๋””ํŒŒ์ด์–ด๋ž€?
BEM Modifier
โ€ข ์œ„ ์ฝ”๋“œ์—์„œ --focused๊ฐ€ ์ˆ˜์‹์–ด์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ €๋ ‡๊ฒŒ ์ž‘์„ฑ๋œ ๊ฑธ ๋ถˆ๋ฆฌ์–ธ(boolean) ํƒ€์ž…์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ,
๊ทธ ๊ฐ’์ด true๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋ฉฐ โ€œโ€”โ€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋ถˆ๋ฆฌ์–ธ(boolean) ํƒ€์ž…๊ณผ ํ‚ค-๋ฐธ๋ฅ˜(key-value)
โ€ข ์œ„ ์˜ˆ์‹œ์—์„œ color-gray๊ณผ theme-normal๊ฐ€ key-value ํƒ€์ž…์— ํ•ด๋‹นํ•˜๋ฉฐ, ํ•˜์ดํ”ˆ์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
BEM ์ •๋ฆฌ
์žฅ์ 
โ€ข ํด๋ž˜์Šค๋„ค์ž„๋งŒ์œผ๋กœ ๋งˆํฌ์—… ๊ตฌ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋ธ”๋Ÿญ๊ณผ ์—˜๋ฆฌ๋จผํŠธ๋กœ ๊ตฌ๋ถ„๋˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋””์„œ๋ถ€ํ„ฐ ๋–ผ์–ด๋‹ค ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€, ์–ด๋””๋ถ€ํ„ฐ ์ข…์†๋˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข SASS์˜ ๋ถ€๋ชจ์ฐธ์กฐ์ž(&)์™€ ์ฐฐ๋–ก๊ถํ•ฉ! ์“ฐ๊ธฐ๊ฐ€ ๋ฌด์ฒ™ ํŽธํ•ฉ๋‹ˆ๋‹ค.
โ€ข ์ž‘์„ฑ๋œ SASS์—์„œ ์š”์†Œ๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด, .header ์•„๋ž˜์— &__logo, &__search๋กœ ์ž‘์„ฑํ•˜๋ฉด "ํ—ค๋” ์•„๋ž˜ ๋กœ๊ณ ๊ณ  ์ €๊ฑด ํ—ค๋” ์•„๋ž˜ ๊ฒ€์ƒ‰์ด๊ตฌ๋‚˜"๋ž€ ๊ฑธ ๋ฐ”๋กœ ์•Œ ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
โ€ข SASS ์ž‘์„ฑ ์‹œ, ๋Š˜์–ด์ง€๋Š” ์…€๋ ‰ํŒ…์„ ๋ง‰์•„์ค๋‹ˆ๋‹ค. ๊ธฐ์กด์— nested ๋ฐฉ์‹์œผ๋กœ SASS๋ฅผ ์ž‘์„ฑํ•˜๋ฉด, ์ปดํŒŒ์ผ ์‹œ ์…€๋ ‰ํŒ…์ด ๋๋„ ์—†์ด ๊ธธ์–ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์ง€๋งŒ
ex(.header .nav .list .item .link )
๊ทธ๋Ÿฐ๋ฐ BEM ๋ฐฉ์‹์„ ์“ฐ๋ฉด, ๋„ˆ๋„๋‚˜๋„ ์—˜๋ฆฌ๋จผํŠธ๋ผ์„œ ๊ตณ์ด ๊นŠ๊ฒŒ nestedํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง‘๋‹ˆ๋‹ค.
๋‹จ์ 
โ€ข ํด๋ž˜์Šค๋„ค์ž„์ด ๋„ˆ๋ฌด ๊ธธ์–ด์„œ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง
๋งˆํฌ์—…์ด ํ•œ๋ˆˆ์— ๋“ค์–ด์˜ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ชจ๋””ํŒŒ์ด์–ด๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•  ๋•Œ,
classList.add("block-name__element-name--modifier")์ฒ˜๋Ÿผ ๊ธธ๊ฒŒ ์ž‘์„ฑํ•ด์•ผํ•˜๋Š” ๊ฑด ๋ถˆํŽธํ•ด๋ณด์ž…๋‹ˆ๋‹ค.
โ€ข ๋”๋ธ”ํด๋ฆญ ์„ ํƒ์ด ๋ถˆํŽธํ•จ
ํ•˜์ดํ”ˆ๊ณผ ์–ธ๋”๋ฐ”๊ฐ€ ํ˜ผ์žฌ๋˜์–ด ์žˆ์–ด, ๋”๋ธ”ํด๋ฆญํ•ด์„œ ํด๋ž˜์Šค๋„ค์ž„์„ ์„ ํƒํ• ๋•Œ ํ•œ ๋ฒˆ์— ์„ ํƒ์ด ์•ˆ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์š”.
-๋-
๊ธฐํƒ€์˜๊ฒฌ
โ€ข ์ด๋ ‡๊ฒŒ BEM์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.
์žฅ์ ๋„ ๋‹จ์ ๋„ ์žˆ์ง€๋งŒ, ์žฅ์ ์ด ๋” ๋งŽ๊ธฐ์— ๋””์ž์ธ~๋งˆํฌ์—…~ํ”„๋ก ํŠธ์—”๋“œ ๊ฐ„์˜ ์˜์‚ฌ์†Œํ†ต์ด ํ™œ๋ฐœํžˆ ํ•˜๊ณ 
๋งˆํฌ์—… ๋‹จ๊ณ„๋ถ€ํ„ฐ ๊ตฌ์กฐ๋ฅผ ํƒ„ํƒ„ํ•˜๊ฒŒ ์งœ์•ผํ•œ๋‹ค๋ฉด BEM์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค.
โ€ข ๋‹ค์Œ์—” ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

More Related Content

Similar to CSS Convention - BEM

Bootstrap ์‚ดํŽด๋ณด๊ธฐ
Bootstrap ์‚ดํŽด๋ณด๊ธฐBootstrap ์‚ดํŽด๋ณด๊ธฐ
Bootstrap ์‚ดํŽด๋ณด๊ธฐ์˜๋ฐฐ ํ˜„
ย 
XpressEngine : ๋ณด๋“œ์—์„œ CMS๋กœ
XpressEngine : ๋ณด๋“œ์—์„œ CMS๋กœXpressEngine : ๋ณด๋“œ์—์„œ CMS๋กœ
XpressEngine : ๋ณด๋“œ์—์„œ CMS๋กœTaegon Kim
ย 
๋””์ž์ธ ์‹œ์Šคํ…œ ๋””์ž์ธํ•˜๊ธฐ
๋””์ž์ธ ์‹œ์Šคํ…œ ๋””์ž์ธํ•˜๊ธฐ๋””์ž์ธ ์‹œ์Šคํ…œ ๋””์ž์ธํ•˜๊ธฐ
๋””์ž์ธ ์‹œ์Šคํ…œ ๋””์ž์ธํ•˜๊ธฐsangyong lee
ย 
์›นํผ๋ธ”๋ฆฌ์‹ฑ๊ฐ•์˜
์›นํผ๋ธ”๋ฆฌ์‹ฑ๊ฐ•์˜์›นํผ๋ธ”๋ฆฌ์‹ฑ๊ฐ•์˜
์›นํผ๋ธ”๋ฆฌ์‹ฑ๊ฐ•์˜์žฌ์€ ๋ฐ•
ย 
XE ์˜คํ”ˆ ์„ธ๋ฏธ๋‚˜(2014-04-26) - ๊น€๋™ํ˜„ "XE ์ฝ”์–ด ๊ตฌ์กฐ๋ก "
XE ์˜คํ”ˆ ์„ธ๋ฏธ๋‚˜(2014-04-26) - ๊น€๋™ํ˜„ "XE ์ฝ”์–ด ๊ตฌ์กฐ๋ก "XE ์˜คํ”ˆ ์„ธ๋ฏธ๋‚˜(2014-04-26) - ๊น€๋™ํ˜„ "XE ์ฝ”์–ด ๊ตฌ์กฐ๋ก "
XE ์˜คํ”ˆ ์„ธ๋ฏธ๋‚˜(2014-04-26) - ๊น€๋™ํ˜„ "XE ์ฝ”์–ด ๊ตฌ์กฐ๋ก "XpressEngine
ย 
[EWD2014]CLASS05
[EWD2014]CLASS05[EWD2014]CLASS05
[EWD2014]CLASS05JY LEE
ย 
Xe ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ดํ•ด
Xe ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ดํ•ดXe ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ดํ•ด
Xe ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ดํ•ดDong Hyun Kim
ย 
NAVER TECH CONCERT_FE2019_ํ”Œ๋žซํผ UI ๊ฐœ๋ฐœ ์ „๋žต์˜ ๋ชจ๋“  ๊ฒƒ
NAVER TECH CONCERT_FE2019_ํ”Œ๋žซํผ UI ๊ฐœ๋ฐœ ์ „๋žต์˜ ๋ชจ๋“  ๊ฒƒNAVER TECH CONCERT_FE2019_ํ”Œ๋žซํผ UI ๊ฐœ๋ฐœ ์ „๋žต์˜ ๋ชจ๋“  ๊ฒƒ
NAVER TECH CONCERT_FE2019_ํ”Œ๋žซํผ UI ๊ฐœ๋ฐœ ์ „๋žต์˜ ๋ชจ๋“  ๊ฒƒNAVER Engineering
ย 
Web Standards Seminar 2006
Web Standards Seminar 2006Web Standards Seminar 2006
Web Standards Seminar 2006Taeyoung Yoon
ย 
CSS3 ์ฒœ๊ธฐ๋ˆ„์„ค
CSS3 ์ฒœ๊ธฐ๋ˆ„์„คCSS3 ์ฒœ๊ธฐ๋ˆ„์„ค
CSS3 ์ฒœ๊ธฐ๋ˆ„์„คToby Yun
ย 
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟAnselmKim
ย 
20170202 D2 ๋ฐœํ‘œ
20170202 D2 ๋ฐœํ‘œ20170202 D2 ๋ฐœํ‘œ
20170202 D2 ๋ฐœํ‘œSuhjin Park
ย 
C Language II
C Language IIC Language II
C Language IISuho Kwon
ย 
แ„†แ…ฉแ†ผแ„€แ…ฉแ„ƒแ…ตแ„‡แ…ตแ„€แ…ญแ„‹แ…ฒแ†จ1แ„‹แ…ตแ†ฏแ„Žแ…ก
แ„†แ…ฉแ†ผแ„€แ…ฉแ„ƒแ…ตแ„‡แ…ตแ„€แ…ญแ„‹แ…ฒแ†จ1แ„‹แ…ตแ†ฏแ„Žแ…กแ„†แ…ฉแ†ผแ„€แ…ฉแ„ƒแ…ตแ„‡แ…ตแ„€แ…ญแ„‹แ…ฒแ†จ1แ„‹แ…ตแ†ฏแ„Žแ…ก
แ„†แ…ฉแ†ผแ„€แ…ฉแ„ƒแ…ตแ„‡แ…ตแ„€แ…ญแ„‹แ…ฒแ†จ1แ„‹แ…ตแ†ฏแ„Žแ…กseung-hyun Park
ย 
[DevOn 2013] Backbone.jsแ„…แ…ฉ แ„‚แ…ณแ†ผแ„ƒแ…ฉแ†ผแ„Œแ…ฅแ†จ M-V แ„ƒแ…ตแ„Œแ…กแ„‹แ…ตแ†ซ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ต
[DevOn 2013] Backbone.jsแ„…แ…ฉ แ„‚แ…ณแ†ผแ„ƒแ…ฉแ†ผแ„Œแ…ฅแ†จ  M-V แ„ƒแ…ตแ„Œแ…กแ„‹แ…ตแ†ซ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ต[DevOn 2013] Backbone.jsแ„…แ…ฉ แ„‚แ…ณแ†ผแ„ƒแ…ฉแ†ผแ„Œแ…ฅแ†จ  M-V แ„ƒแ…ตแ„Œแ…กแ„‹แ…ตแ†ซ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ต
[DevOn 2013] Backbone.jsแ„…แ…ฉ แ„‚แ…ณแ†ผแ„ƒแ…ฉแ†ผแ„Œแ…ฅแ†จ M-V แ„ƒแ…ตแ„Œแ…กแ„‹แ…ตแ†ซ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ตGyutae Jo
ย 
์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œํ™”
์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œํ™”์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œํ™”
์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œํ™”์˜๊ธฐ ๊น€
ย 
Developer`s Web Standard
Developer`s Web StandardDeveloper`s Web Standard
Developer`s Web StandardSangHoon Han
ย 
Design Pattern Introduction
Design Pattern IntroductionDesign Pattern Introduction
Design Pattern IntroductionBill Kim
ย 
Bounded Context
Bounded ContextBounded Context
Bounded ContextHyeonSeok Choi
ย 
แ„†แ…ฉแ„ƒแ…ฒแ†ฏแ„‰แ…ตแ„‰แ…ณแ„แ…ฆแ†ทแ„€แ…ช webpack
แ„†แ…ฉแ„ƒแ…ฒแ†ฏแ„‰แ…ตแ„‰แ…ณแ„แ…ฆแ†ทแ„€แ…ช webpackแ„†แ…ฉแ„ƒแ…ฒแ†ฏแ„‰แ…ตแ„‰แ…ณแ„แ…ฆแ†ทแ„€แ…ช webpack
แ„†แ…ฉแ„ƒแ…ฒแ†ฏแ„‰แ…ตแ„‰แ…ณแ„แ…ฆแ†ทแ„€แ…ช webpackDataUs
ย 

Similar to CSS Convention - BEM (20)

Bootstrap ์‚ดํŽด๋ณด๊ธฐ
Bootstrap ์‚ดํŽด๋ณด๊ธฐBootstrap ์‚ดํŽด๋ณด๊ธฐ
Bootstrap ์‚ดํŽด๋ณด๊ธฐ
ย 
XpressEngine : ๋ณด๋“œ์—์„œ CMS๋กœ
XpressEngine : ๋ณด๋“œ์—์„œ CMS๋กœXpressEngine : ๋ณด๋“œ์—์„œ CMS๋กœ
XpressEngine : ๋ณด๋“œ์—์„œ CMS๋กœ
ย 
๋””์ž์ธ ์‹œ์Šคํ…œ ๋””์ž์ธํ•˜๊ธฐ
๋””์ž์ธ ์‹œ์Šคํ…œ ๋””์ž์ธํ•˜๊ธฐ๋””์ž์ธ ์‹œ์Šคํ…œ ๋””์ž์ธํ•˜๊ธฐ
๋””์ž์ธ ์‹œ์Šคํ…œ ๋””์ž์ธํ•˜๊ธฐ
ย 
์›นํผ๋ธ”๋ฆฌ์‹ฑ๊ฐ•์˜
์›นํผ๋ธ”๋ฆฌ์‹ฑ๊ฐ•์˜์›นํผ๋ธ”๋ฆฌ์‹ฑ๊ฐ•์˜
์›นํผ๋ธ”๋ฆฌ์‹ฑ๊ฐ•์˜
ย 
XE ์˜คํ”ˆ ์„ธ๋ฏธ๋‚˜(2014-04-26) - ๊น€๋™ํ˜„ "XE ์ฝ”์–ด ๊ตฌ์กฐ๋ก "
XE ์˜คํ”ˆ ์„ธ๋ฏธ๋‚˜(2014-04-26) - ๊น€๋™ํ˜„ "XE ์ฝ”์–ด ๊ตฌ์กฐ๋ก "XE ์˜คํ”ˆ ์„ธ๋ฏธ๋‚˜(2014-04-26) - ๊น€๋™ํ˜„ "XE ์ฝ”์–ด ๊ตฌ์กฐ๋ก "
XE ์˜คํ”ˆ ์„ธ๋ฏธ๋‚˜(2014-04-26) - ๊น€๋™ํ˜„ "XE ์ฝ”์–ด ๊ตฌ์กฐ๋ก "
ย 
[EWD2014]CLASS05
[EWD2014]CLASS05[EWD2014]CLASS05
[EWD2014]CLASS05
ย 
Xe ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ดํ•ด
Xe ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ดํ•ดXe ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ดํ•ด
Xe ๊ตฌ์กฐ์— ๋Œ€ํ•œ ์ดํ•ด
ย 
NAVER TECH CONCERT_FE2019_ํ”Œ๋žซํผ UI ๊ฐœ๋ฐœ ์ „๋žต์˜ ๋ชจ๋“  ๊ฒƒ
NAVER TECH CONCERT_FE2019_ํ”Œ๋žซํผ UI ๊ฐœ๋ฐœ ์ „๋žต์˜ ๋ชจ๋“  ๊ฒƒNAVER TECH CONCERT_FE2019_ํ”Œ๋žซํผ UI ๊ฐœ๋ฐœ ์ „๋žต์˜ ๋ชจ๋“  ๊ฒƒ
NAVER TECH CONCERT_FE2019_ํ”Œ๋žซํผ UI ๊ฐœ๋ฐœ ์ „๋žต์˜ ๋ชจ๋“  ๊ฒƒ
ย 
Web Standards Seminar 2006
Web Standards Seminar 2006Web Standards Seminar 2006
Web Standards Seminar 2006
ย 
CSS3 ์ฒœ๊ธฐ๋ˆ„์„ค
CSS3 ์ฒœ๊ธฐ๋ˆ„์„คCSS3 ์ฒœ๊ธฐ๋ˆ„์„ค
CSS3 ์ฒœ๊ธฐ๋ˆ„์„ค
ย 
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ
[์Šคํ”„๋ง ์Šคํ„ฐ๋”” 1์ผ์ฐจ] ํ…œํ”Œ๋ฆฟ
ย 
20170202 D2 ๋ฐœํ‘œ
20170202 D2 ๋ฐœํ‘œ20170202 D2 ๋ฐœํ‘œ
20170202 D2 ๋ฐœํ‘œ
ย 
C Language II
C Language IIC Language II
C Language II
ย 
แ„†แ…ฉแ†ผแ„€แ…ฉแ„ƒแ…ตแ„‡แ…ตแ„€แ…ญแ„‹แ…ฒแ†จ1แ„‹แ…ตแ†ฏแ„Žแ…ก
แ„†แ…ฉแ†ผแ„€แ…ฉแ„ƒแ…ตแ„‡แ…ตแ„€แ…ญแ„‹แ…ฒแ†จ1แ„‹แ…ตแ†ฏแ„Žแ…กแ„†แ…ฉแ†ผแ„€แ…ฉแ„ƒแ…ตแ„‡แ…ตแ„€แ…ญแ„‹แ…ฒแ†จ1แ„‹แ…ตแ†ฏแ„Žแ…ก
แ„†แ…ฉแ†ผแ„€แ…ฉแ„ƒแ…ตแ„‡แ…ตแ„€แ…ญแ„‹แ…ฒแ†จ1แ„‹แ…ตแ†ฏแ„Žแ…ก
ย 
[DevOn 2013] Backbone.jsแ„…แ…ฉ แ„‚แ…ณแ†ผแ„ƒแ…ฉแ†ผแ„Œแ…ฅแ†จ M-V แ„ƒแ…ตแ„Œแ…กแ„‹แ…ตแ†ซ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ต
[DevOn 2013] Backbone.jsแ„…แ…ฉ แ„‚แ…ณแ†ผแ„ƒแ…ฉแ†ผแ„Œแ…ฅแ†จ  M-V แ„ƒแ…ตแ„Œแ…กแ„‹แ…ตแ†ซ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ต[DevOn 2013] Backbone.jsแ„…แ…ฉ แ„‚แ…ณแ†ผแ„ƒแ…ฉแ†ผแ„Œแ…ฅแ†จ  M-V แ„ƒแ…ตแ„Œแ…กแ„‹แ…ตแ†ซ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ต
[DevOn 2013] Backbone.jsแ„…แ…ฉ แ„‚แ…ณแ†ผแ„ƒแ…ฉแ†ผแ„Œแ…ฅแ†จ M-V แ„ƒแ…ตแ„Œแ…กแ„‹แ…ตแ†ซ แ„€แ…ฎแ„’แ…งแ†ซแ„’แ…กแ„€แ…ต
ย 
์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œํ™”
์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œํ™”์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œํ™”
์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ฒ˜ ๋ฌธ์„œํ™”
ย 
Developer`s Web Standard
Developer`s Web StandardDeveloper`s Web Standard
Developer`s Web Standard
ย 
Design Pattern Introduction
Design Pattern IntroductionDesign Pattern Introduction
Design Pattern Introduction
ย 
Bounded Context
Bounded ContextBounded Context
Bounded Context
ย 
แ„†แ…ฉแ„ƒแ…ฒแ†ฏแ„‰แ…ตแ„‰แ…ณแ„แ…ฆแ†ทแ„€แ…ช webpack
แ„†แ…ฉแ„ƒแ…ฒแ†ฏแ„‰แ…ตแ„‰แ…ณแ„แ…ฆแ†ทแ„€แ…ช webpackแ„†แ…ฉแ„ƒแ…ฒแ†ฏแ„‰แ…ตแ„‰แ…ณแ„แ…ฆแ†ทแ„€แ…ช webpack
แ„†แ…ฉแ„ƒแ…ฒแ†ฏแ„‰แ…ตแ„‰แ…ณแ„แ…ฆแ†ทแ„€แ…ช webpack
ย 

More from Wonjun Hwang

Console API (Kitworks Team Study ๋ฐฑํ˜œ์ธ ๋ฐœํ‘œ์ž๋ฃŒ)
Console API (Kitworks Team Study ๋ฐฑํ˜œ์ธ ๋ฐœํ‘œ์ž๋ฃŒ)Console API (Kitworks Team Study ๋ฐฑํ˜œ์ธ ๋ฐœํ‘œ์ž๋ฃŒ)
Console API (Kitworks Team Study ๋ฐฑํ˜œ์ธ ๋ฐœํ‘œ์ž๋ฃŒ)Wonjun Hwang
ย 
Merge (Kitworks Team Study ์ด์„ฑ์ˆ˜ ๋ฐœํ‘œ์ž๋ฃŒ 240426)
Merge (Kitworks Team Study ์ด์„ฑ์ˆ˜ ๋ฐœํ‘œ์ž๋ฃŒ 240426)Merge (Kitworks Team Study ์ด์„ฑ์ˆ˜ ๋ฐœํ‘œ์ž๋ฃŒ 240426)
Merge (Kitworks Team Study ์ด์„ฑ์ˆ˜ ๋ฐœํ‘œ์ž๋ฃŒ 240426)Wonjun Hwang
ย 
This (Kitworks Team Study ๊น€ํ•œ์†” ๋ฐœํ‘œ์ž๋ฃŒ 2024.4.22)
This (Kitworks Team Study ๊น€ํ•œ์†” ๋ฐœํ‘œ์ž๋ฃŒ 2024.4.22)This (Kitworks Team Study ๊น€ํ•œ์†” ๋ฐœํ‘œ์ž๋ฃŒ 2024.4.22)
This (Kitworks Team Study ๊น€ํ•œ์†” ๋ฐœํ‘œ์ž๋ฃŒ 2024.4.22)Wonjun Hwang
ย 
Bun (KitWorks Team Study ๋…ธ๋ณ„๋งˆ๋ฃจ ๋ฐœํ‘œ 2024.4.22)
Bun (KitWorks Team Study ๋…ธ๋ณ„๋งˆ๋ฃจ ๋ฐœํ‘œ 2024.4.22)Bun (KitWorks Team Study ๋…ธ๋ณ„๋งˆ๋ฃจ ๋ฐœํ‘œ 2024.4.22)
Bun (KitWorks Team Study ๋…ธ๋ณ„๋งˆ๋ฃจ ๋ฐœํ‘œ 2024.4.22)Wonjun Hwang
ย 
์Šคํ† ๋ฆฌ๋ถ(Storybook, Kitworks Team Study ์šฐ์•„๋ผ ๋ฐœํ‘œ)
์Šคํ† ๋ฆฌ๋ถ(Storybook, Kitworks Team Study ์šฐ์•„๋ผ ๋ฐœํ‘œ)์Šคํ† ๋ฆฌ๋ถ(Storybook, Kitworks Team Study ์šฐ์•„๋ผ ๋ฐœํ‘œ)
์Šคํ† ๋ฆฌ๋ถ(Storybook, Kitworks Team Study ์šฐ์•„๋ผ ๋ฐœํ‘œ)Wonjun Hwang
ย 
mysql8 ์ „ํ™˜๊ธฐ (Kitworks Team Study ๊น€์ฒœ๊ทœ ๋ฐœํ‘œ์ž๋ฃŒ)
mysql8 ์ „ํ™˜๊ธฐ (Kitworks Team Study ๊น€์ฒœ๊ทœ ๋ฐœํ‘œ์ž๋ฃŒ)mysql8 ์ „ํ™˜๊ธฐ (Kitworks Team Study ๊น€์ฒœ๊ทœ ๋ฐœํ‘œ์ž๋ฃŒ)
mysql8 ์ „ํ™˜๊ธฐ (Kitworks Team Study ๊น€์ฒœ๊ทœ ๋ฐœํ‘œ์ž๋ฃŒ)Wonjun Hwang
ย 
Open AI SORA (ํ‚คํŠธ์›์Šค ํŒ€์Šคํ„ฐ๋”” ๋ฐœํ‘œ์ž๋ฃŒ ๋ฐ•์ค€๊ธฐ 240315)
Open AI SORA  (ํ‚คํŠธ์›์Šค ํŒ€์Šคํ„ฐ๋”” ๋ฐœํ‘œ์ž๋ฃŒ ๋ฐ•์ค€๊ธฐ 240315)Open AI SORA  (ํ‚คํŠธ์›์Šค ํŒ€์Šคํ„ฐ๋”” ๋ฐœํ‘œ์ž๋ฃŒ ๋ฐ•์ค€๊ธฐ 240315)
Open AI SORA (ํ‚คํŠธ์›์Šค ํŒ€์Šคํ„ฐ๋”” ๋ฐœํ‘œ์ž๋ฃŒ ๋ฐ•์ค€๊ธฐ 240315)Wonjun Hwang
ย 
Nest JS (Kitworks Team Study ์ด๋ณธํ›ˆ ๋ฐœํ‘œ 240315)
Nest JS (Kitworks Team Study ์ด๋ณธํ›ˆ ๋ฐœํ‘œ 240315)Nest JS (Kitworks Team Study ์ด๋ณธํ›ˆ ๋ฐœํ‘œ 240315)
Nest JS (Kitworks Team Study ์ด๋ณธํ›ˆ ๋ฐœํ‘œ 240315)Wonjun Hwang
ย 
JS Event Loop (Kitworks Team Study ๊น€๋™ํ˜„ ๋ฐœํ‘œ)
JS Event Loop (Kitworks Team Study ๊น€๋™ํ˜„ ๋ฐœํ‘œ)JS Event Loop (Kitworks Team Study ๊น€๋™ํ˜„ ๋ฐœํ‘œ)
JS Event Loop (Kitworks Team Study ๊น€๋™ํ˜„ ๋ฐœํ‘œ)Wonjun Hwang
ย 
Java Optional (Kitworks Team Study ๊น€์„ฑํ˜ธ ๋ฐœํ‘œ)
Java Optional (Kitworks Team Study ๊น€์„ฑํ˜ธ ๋ฐœํ‘œ)Java Optional (Kitworks Team Study ๊น€์„ฑํ˜ธ ๋ฐœํ‘œ)
Java Optional (Kitworks Team Study ๊น€์„ฑํ˜ธ ๋ฐœํ‘œ)Wonjun Hwang
ย 
XSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyXSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyWonjun Hwang
ย 
Flutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyFlutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyWonjun Hwang
ย 
์–•์€๋ณต์‚ฌ,๊นŠ์€๋ณต์‚ฌ
์–•์€๋ณต์‚ฌ,๊นŠ์€๋ณต์‚ฌ์–•์€๋ณต์‚ฌ,๊นŠ์€๋ณต์‚ฌ
์–•์€๋ณต์‚ฌ,๊นŠ์€๋ณต์‚ฌWonjun Hwang
ย 
Go์–ธ์–ด๋กœ ๋””์Šค์ฝ”๋“œ ๋ด‡ ๋งŒ๋“ค๊ธฐ
Go์–ธ์–ด๋กœ ๋””์Šค์ฝ”๋“œ ๋ด‡ ๋งŒ๋“ค๊ธฐGo์–ธ์–ด๋กœ ๋””์Šค์ฝ”๋“œ ๋ด‡ ๋งŒ๋“ค๊ธฐ
Go์–ธ์–ด๋กœ ๋””์Šค์ฝ”๋“œ ๋ด‡ ๋งŒ๋“ค๊ธฐWonjun Hwang
ย 
์™„์ „ ์œ ์šฉํ•œ CSS ๋ชจ์Œ
์™„์ „ ์œ ์šฉํ•œ CSS ๋ชจ์Œ์™„์ „ ์œ ์šฉํ•œ CSS ๋ชจ์Œ
์™„์ „ ์œ ์šฉํ•œ CSS ๋ชจ์ŒWonjun Hwang
ย 
2024 ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ
2024 ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ2024 ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ
2024 ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œWonjun Hwang
ย 
๋””๋ฐ”์šด์‹ฑ๊ณผ ์“ฐ๋กœํ‹€๋ง
๋””๋ฐ”์šด์‹ฑ๊ณผ ์“ฐ๋กœํ‹€๋ง๋””๋ฐ”์šด์‹ฑ๊ณผ ์“ฐ๋กœํ‹€๋ง
๋””๋ฐ”์šด์‹ฑ๊ณผ ์“ฐ๋กœํ‹€๋งWonjun Hwang
ย 
์Šค๋งˆํŠธํ•œ ํŒ€ ํ˜‘์—…
์Šค๋งˆํŠธํ•œ ํŒ€ ํ˜‘์—…์Šค๋งˆํŠธํ•œ ํŒ€ ํ˜‘์—…
์Šค๋งˆํŠธํ•œ ํŒ€ ํ˜‘์—…Wonjun Hwang
ย 

More from Wonjun Hwang (20)

Console API (Kitworks Team Study ๋ฐฑํ˜œ์ธ ๋ฐœํ‘œ์ž๋ฃŒ)
Console API (Kitworks Team Study ๋ฐฑํ˜œ์ธ ๋ฐœํ‘œ์ž๋ฃŒ)Console API (Kitworks Team Study ๋ฐฑํ˜œ์ธ ๋ฐœํ‘œ์ž๋ฃŒ)
Console API (Kitworks Team Study ๋ฐฑํ˜œ์ธ ๋ฐœํ‘œ์ž๋ฃŒ)
ย 
Merge (Kitworks Team Study ์ด์„ฑ์ˆ˜ ๋ฐœํ‘œ์ž๋ฃŒ 240426)
Merge (Kitworks Team Study ์ด์„ฑ์ˆ˜ ๋ฐœํ‘œ์ž๋ฃŒ 240426)Merge (Kitworks Team Study ์ด์„ฑ์ˆ˜ ๋ฐœํ‘œ์ž๋ฃŒ 240426)
Merge (Kitworks Team Study ์ด์„ฑ์ˆ˜ ๋ฐœํ‘œ์ž๋ฃŒ 240426)
ย 
This (Kitworks Team Study ๊น€ํ•œ์†” ๋ฐœํ‘œ์ž๋ฃŒ 2024.4.22)
This (Kitworks Team Study ๊น€ํ•œ์†” ๋ฐœํ‘œ์ž๋ฃŒ 2024.4.22)This (Kitworks Team Study ๊น€ํ•œ์†” ๋ฐœํ‘œ์ž๋ฃŒ 2024.4.22)
This (Kitworks Team Study ๊น€ํ•œ์†” ๋ฐœํ‘œ์ž๋ฃŒ 2024.4.22)
ย 
Bun (KitWorks Team Study ๋…ธ๋ณ„๋งˆ๋ฃจ ๋ฐœํ‘œ 2024.4.22)
Bun (KitWorks Team Study ๋…ธ๋ณ„๋งˆ๋ฃจ ๋ฐœํ‘œ 2024.4.22)Bun (KitWorks Team Study ๋…ธ๋ณ„๋งˆ๋ฃจ ๋ฐœํ‘œ 2024.4.22)
Bun (KitWorks Team Study ๋…ธ๋ณ„๋งˆ๋ฃจ ๋ฐœํ‘œ 2024.4.22)
ย 
์Šคํ† ๋ฆฌ๋ถ(Storybook, Kitworks Team Study ์šฐ์•„๋ผ ๋ฐœํ‘œ)
์Šคํ† ๋ฆฌ๋ถ(Storybook, Kitworks Team Study ์šฐ์•„๋ผ ๋ฐœํ‘œ)์Šคํ† ๋ฆฌ๋ถ(Storybook, Kitworks Team Study ์šฐ์•„๋ผ ๋ฐœํ‘œ)
์Šคํ† ๋ฆฌ๋ถ(Storybook, Kitworks Team Study ์šฐ์•„๋ผ ๋ฐœํ‘œ)
ย 
mysql8 ์ „ํ™˜๊ธฐ (Kitworks Team Study ๊น€์ฒœ๊ทœ ๋ฐœํ‘œ์ž๋ฃŒ)
mysql8 ์ „ํ™˜๊ธฐ (Kitworks Team Study ๊น€์ฒœ๊ทœ ๋ฐœํ‘œ์ž๋ฃŒ)mysql8 ์ „ํ™˜๊ธฐ (Kitworks Team Study ๊น€์ฒœ๊ทœ ๋ฐœํ‘œ์ž๋ฃŒ)
mysql8 ์ „ํ™˜๊ธฐ (Kitworks Team Study ๊น€์ฒœ๊ทœ ๋ฐœํ‘œ์ž๋ฃŒ)
ย 
Open AI SORA (ํ‚คํŠธ์›์Šค ํŒ€์Šคํ„ฐ๋”” ๋ฐœํ‘œ์ž๋ฃŒ ๋ฐ•์ค€๊ธฐ 240315)
Open AI SORA  (ํ‚คํŠธ์›์Šค ํŒ€์Šคํ„ฐ๋”” ๋ฐœํ‘œ์ž๋ฃŒ ๋ฐ•์ค€๊ธฐ 240315)Open AI SORA  (ํ‚คํŠธ์›์Šค ํŒ€์Šคํ„ฐ๋”” ๋ฐœํ‘œ์ž๋ฃŒ ๋ฐ•์ค€๊ธฐ 240315)
Open AI SORA (ํ‚คํŠธ์›์Šค ํŒ€์Šคํ„ฐ๋”” ๋ฐœํ‘œ์ž๋ฃŒ ๋ฐ•์ค€๊ธฐ 240315)
ย 
Nest JS (Kitworks Team Study ์ด๋ณธํ›ˆ ๋ฐœํ‘œ 240315)
Nest JS (Kitworks Team Study ์ด๋ณธํ›ˆ ๋ฐœํ‘œ 240315)Nest JS (Kitworks Team Study ์ด๋ณธํ›ˆ ๋ฐœํ‘œ 240315)
Nest JS (Kitworks Team Study ์ด๋ณธํ›ˆ ๋ฐœํ‘œ 240315)
ย 
JS Event Loop (Kitworks Team Study ๊น€๋™ํ˜„ ๋ฐœํ‘œ)
JS Event Loop (Kitworks Team Study ๊น€๋™ํ˜„ ๋ฐœํ‘œ)JS Event Loop (Kitworks Team Study ๊น€๋™ํ˜„ ๋ฐœํ‘œ)
JS Event Loop (Kitworks Team Study ๊น€๋™ํ˜„ ๋ฐœํ‘œ)
ย 
Java Optional (Kitworks Team Study ๊น€์„ฑํ˜ธ ๋ฐœํ‘œ)
Java Optional (Kitworks Team Study ๊น€์„ฑํ˜ธ ๋ฐœํ‘œ)Java Optional (Kitworks Team Study ๊น€์„ฑํ˜ธ ๋ฐœํ‘œ)
Java Optional (Kitworks Team Study ๊น€์„ฑํ˜ธ ๋ฐœํ‘œ)
ย 
XSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team StudyXSS(Cross site scripting) - Kitworks Team Study
XSS(Cross site scripting) - Kitworks Team Study
ย 
Flutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team StudyFlutter & Firebase (2) Kitworks Team Study
Flutter & Firebase (2) Kitworks Team Study
ย 
PWA
PWAPWA
PWA
ย 
์–•์€๋ณต์‚ฌ,๊นŠ์€๋ณต์‚ฌ
์–•์€๋ณต์‚ฌ,๊นŠ์€๋ณต์‚ฌ์–•์€๋ณต์‚ฌ,๊นŠ์€๋ณต์‚ฌ
์–•์€๋ณต์‚ฌ,๊นŠ์€๋ณต์‚ฌ
ย 
Go์–ธ์–ด๋กœ ๋””์Šค์ฝ”๋“œ ๋ด‡ ๋งŒ๋“ค๊ธฐ
Go์–ธ์–ด๋กœ ๋””์Šค์ฝ”๋“œ ๋ด‡ ๋งŒ๋“ค๊ธฐGo์–ธ์–ด๋กœ ๋””์Šค์ฝ”๋“œ ๋ด‡ ๋งŒ๋“ค๊ธฐ
Go์–ธ์–ด๋กœ ๋””์Šค์ฝ”๋“œ ๋ด‡ ๋งŒ๋“ค๊ธฐ
ย 
์™„์ „ ์œ ์šฉํ•œ CSS ๋ชจ์Œ
์™„์ „ ์œ ์šฉํ•œ CSS ๋ชจ์Œ์™„์ „ ์œ ์šฉํ•œ CSS ๋ชจ์Œ
์™„์ „ ์œ ์šฉํ•œ CSS ๋ชจ์Œ
ย 
2024 ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ
2024 ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ2024 ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ
2024 ๊ฐœ๋ฐœ ํŠธ๋ Œ๋“œ
ย 
๋””๋ฐ”์šด์‹ฑ๊ณผ ์“ฐ๋กœํ‹€๋ง
๋””๋ฐ”์šด์‹ฑ๊ณผ ์“ฐ๋กœํ‹€๋ง๋””๋ฐ”์šด์‹ฑ๊ณผ ์“ฐ๋กœํ‹€๋ง
๋””๋ฐ”์šด์‹ฑ๊ณผ ์“ฐ๋กœํ‹€๋ง
ย 
Passkey
PasskeyPasskey
Passkey
ย 
์Šค๋งˆํŠธํ•œ ํŒ€ ํ˜‘์—…
์Šค๋งˆํŠธํ•œ ํŒ€ ํ˜‘์—…์Šค๋งˆํŠธํ•œ ํŒ€ ํ˜‘์—…
์Šค๋งˆํŠธํ•œ ํŒ€ ํ˜‘์—…
ย 

CSS Convention - BEM

  • 1. css naming convention ์ž‘์„ฑ : ๋ฐ•์ค€๊ธฐ
  • 2. ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ตฌ์„ฑ ์š”์†Œ ๋ฐ ์ฝ”๋“œ ๊ณต์œ ๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” CSS๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค. B__E--M
  • 3. BEM ๋ฐฉ๋ฒ•๋ก  ๋„์ž…์˜ ํ•„์š”์„ฑ CSS์—์„œ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ด๋‹ค. ์š”์†Œ๋“ค์„ ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด id์™€ class๋ฅผ ๋‚จ๋ฐœํ•˜๋‹ค๋ณด๋ฉด ์–ด๋””์— ๋ฌด์—‡์ด ์žˆ์—ˆ๋Š”์ง€ ์•Œ๊ธฐ ๋„ˆ๋ฌด ํž˜๋“ค์–ด์ง„๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ๊ณผ์˜ ์ž‘์—… ๊ฒฐ๊ณผ๋ฌผ์„ ํ•ฉ์น˜๋‹ค ๋ณด๋ฉด ์ƒˆ๋กœ ๋งŒ๋“œ๋Š”๊ฒŒ ํ›จ์”ฌ ๋น ๋ฅด๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๋ณด๋ฉด ์–ด๋Š๋ง ๊ทธ๋ƒฅ ๋˜๋‹ค๋ฅธ ์“ฐ๋ ˆ๊ธฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” ๋‚˜๋ฅผ ๋ฐœ๊ฒฌํ•œ๋‹ค.
  • 4. CSS ๋ฐฉ๋ฒ•๋ก ์˜ ์—ญ์‚ฌ OOCSS ๋‹ˆ์ฝœ ์„ค๋ฆฌ๋ฒˆ(Nicole Sulivan) ์ œ์ฐฝ โ€ข ๋ ˆ๊ณ ์ฒ˜๋Ÿผ ์ž์œ ๋กœ์šด ์กฐํ•ฉ์ด ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆ์˜ ์ง‘ํ•ฉ์„ ๋งŒ๋“ค๊ณ  โ€ข ๊ทธ ๋ชจ๋“ˆ์„ ์กฐํ•ฉํ•ด ํŽ˜์ด์ง€๋ฅผ ๊ตฌ์„ฑํ•œ๋‹ค. โ€ข ๋”ฐ๋ผ์„œ ์‹ ๊ทœ ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ์—๋„ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ถ”๊ฐ€์ ์ธ CSS๋ฅผ ๋งŒ๋“ค ํ•„์š”๊ฐ€ ์—†๋‹ค. โ€ข ๋ชจ๋“ˆ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋‘๊ฐ€์ง€ ์›์น™(์ŠคํŠธ๋Ÿญ์ณ์™€ ์Šคํ‚จ์„ ๋ถ„๋ฆฌ / ์ปจํ…Œ์ด๋„ˆ์™€ ์ฝ˜ํ…์ธ  ๋ถ„๋ฆฌ)์„ ๋”ฐ๋ฅธ๋‹ค. - Object Oriented CSS(๊ฐ์ฒด ์ง€ํ–ฅ CSS) -
  • 5. ABOUT OOCSS ์ŠคํŠธ๋Ÿญ์ณ์™€ ์Šคํ‚จ - With, height, padding, margin ๋“ฑ / color, font, background, box-shadow๋“ฑ ์ปจํ…Œ์ด๋„ˆ์™€ ์ฝ˜ํ…์ธ  ๋ถ„๋ฆฌ โ€“ ๋ชจ๋“ˆ์„ ์˜์—ญ์— ์˜์กดํ•˜์ง€ ์•Š๋„๋ก ํ•œ๋‹ค ์š”์†Œ ๋ชจ๋“ˆ
  • 6. OOCSS ์ •๋ฆฌ ์žฅ์  โ€ข ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์Œ: OOCSS๋Š” CSS ์ฝ”๋“œ๋ฅผ ๋ชจ๋“ˆ ๋‹จ์œ„๋กœ ๊ตฌ์„ฑํ•˜๋ฏ€๋กœ, ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ์˜ ์–‘์„ ์ค„์ด๊ณ , ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ๋‹จ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค. โ€ข ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋†’์Œ: OOCSS๋Š” ์ฝ”๋“œ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๋ฏ€๋กœ, ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋†’์•„์ง„๋‹ค. ์Šคํƒ€์ผ์„ ์ˆ˜์ •ํ•ด๋„ ๋ ˆ์ด์•„์›ƒ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๊ณ , ๋ ˆ์ด์•„์›ƒ์„ ์ˆ˜์ •ํ•ด๋„ ์Šคํƒ€์ผ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ฝ”๋“œ๋ฅผ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ๋‹ค. โ€ข ํ™•์žฅ์„ฑ์ด ๋†’์Œ: OOCSS๋Š” ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ์ ‘๊ทผ ๋ฐฉ์‹์„ ์ฑ„์šฉํ•˜๋ฏ€๋กœ, ์ฝ”๋“œ๋ฅผ ์‰ฝ๊ฒŒ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ชจ๋“ˆ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ๊ธฐ์กด ๋ชจ๋“ˆ์„ ์ˆ˜์ •ํ•ด๋„ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์œผ๋ฏ€๋กœ, ์ฝ”๋“œ์˜ ์•ˆ์ •์„ฑ์ด ๋†’์•„์ง„๋‹ค. ๋‹จ์  โ€ข ํ•™์Šต ๋‚œ์ด๋„ ๋†’์Œ / ์ฝ”๋“œ์˜ ์–‘์ด ๋Š˜์–ด๋‚จ / ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง ๊ธฐํƒ€์˜๊ฒฌ โ€ข OOCSS์˜ ์—ญ์‚ฌ๋Š” ๋งค์šฐ ๊ธธ๋ฉฐ ๋ช…ํ™•ํ•˜๊ฒŒ ๊ทœ์น™์ด๋ผ๊ณ  ๋ถˆ๋ฆฌ๋Š” ๊ฒƒ๋„ ๋งŽ์ง€ ์•Š๋‹ค. โ€ข ๋‹ค๋ฅธ CSS๋ฐฉ๋ฒ•๋ก ๋“ค์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํฌOCSS๋ฅผ ์ฐธ์กฐํ•˜๋ฉด์„œ ๊ฐœ์„ ํ•œ ๊ฒƒ โ€ข ์˜ค๋Š˜๋‚  ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜์˜ ๊ฐœ๋ฐœ์—” OOCSS ํ•œ ๊ฐ€์ง€๋งŒ์œผ๋กœ ์‹ค์งˆ์ ์ธ CSS ์„ค๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์€ ๊ทธ๋‹ค์ง€ ํ˜„์‹ค์ ์ด์ง€ ์•Š๋‹ค.
  • 7. CSS ๋ฐฉ๋ฒ•๋ก ์˜ ์—ญ์‚ฌ SMACSS - Scalable and Modular Architecture for CSS(ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ๋ชจ๋“ˆํ™”๋œ ์•„ํ‚คํ…์ณ CSS) - ์กฐ๋‚˜๋‹จ ์Šค๋ˆ…(Jonathan Snook) ์ œ์ฐฝ CSS ์ฝ”๋“œ๋ฅผ ๊ทธ ์—ญํ• ์— ๋”ฐ๋ผ ๋ถ„๋ฅ˜ํ•œ ๊ฒƒ์ด ํŠน์ง• โ€ข Base(๋ฒ ์ด์Šค) โ€ข Layout(๋ ˆ์ด์•„์›ƒ) โ€ข Module(๋ชจ๋“ˆ) โ€ข State(์Šคํ…Œ์ดํŠธ) โ€ข Theme(ํ…Œ๋งˆ)
  • 8. ABOUT SMACSS Base(๋ฒ ์ด์Šค) ๊ทœ์น™ โ€ข ํ”„๋กœ์ ํŠธ์˜ ํ‘œ์ค€ ์Šคํƒ€์ผ์˜ ์ •์˜ โ€“ ๋ฐ”ํƒ•ํ™”๋ฉด ์ƒ์ƒ๊ณผ ๊ฐ™์€ ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์— ์ ์šฉ๋˜๋Š” ์Šคํƒ€์ผ๋ง์ž…๋‹ˆ๋‹ค. โ€ข ๋˜ํ•œ ๋ธŒ๋ผ์šฐ์ €๊ฐ„์˜ ์ฐจ์ด๋ฅผ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๋ฆฌ์…‹ CSS, ๋…ธ๋ฉ€๋ผ์ด์ฆˆ CSS๋„ SMACSS ๊ธฐ์ค€์—๋Š” ๋ฒ ์ด์Šค ๊ทœ์น™์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.
  • 9. โ€ข ์›น์‚ฌ์ดํŠธ์˜ ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๋Š” ํฐ ๋ชจ๋“ˆ์— ๊ด€ํ•œ ๊ทœ์น™์ด๋ฉฐ, ๋ ˆ์ด์•„์›ƒ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“ˆ์€ ํŠน์ • ํŽ˜์ด์ง€์— ํ•œ์ฐจ๋ก€๋งŒ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๋งŽ์œผ๋ฏ€๋กœ ID์…€๋ ‰ํ„ฐ โ€ข ๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋ชจ๋“ˆ์˜ ๊ฒฝ์šฐ์—” Class ์…€๋ ‰ํ„ฐ๋ฅผ ์ด์šฉํ•ฉ๋‹ˆ๋‹ค. โ€ข ๋งŒ์•ฝ ํŠน์ •ํŽ˜์ด์ง€์—์„œ ๋ ˆ์ด์•„์›ƒ์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด SMACSS ์—์„œ๋Š” ์†์ž ์…€๋ ‰๋ฅผ ์ด์šฉํ•ด ๋ ˆ์ด์•„์›ƒ ๋ชจ๋“ˆ ์Šคํƒ€์ผ์„ ๋ฎ์–ด์“ธ ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ABOUT SMACSS Layout(๋ ˆ์ด์•„์›ƒ) ๊ทœ์น™
  • 10. โ€ข ๋ชจ๋“ˆ์€ ํƒ€์ดํ‹€, ๋ฒ„ํŠผ, ์นด๋“œ, ๋„ค๋น„๊ฒŒ์ด์…˜ ๋“ฑ ์ผ๋ฐ˜์ ์ธ UI์ปดํฌ๋„ŒํŠธ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. โ€ข ๋ชจ๋“  ๋ชจ๋“ˆ์€ ๋ ˆ์ด์•„์›ƒ ๊ทœ์น™์•ˆ์— ๋ฐฐ์น˜๋˜๋Š” ๊ฒƒ์„ ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค. โ€ข ๋‹ค๋ฅธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ๋ ˆ์ด์•„์›ƒ ์•ˆ์— ์‚ฝ์ž…ํ•˜๋”๋ผ๋„ ํ˜•ํƒœ๊ฐ€ ๋ถ€์„œ์ง€๊ฑฐ๋‚˜ ๋‹ฌ๋ผ์ง€์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. โ€ข ๋ชจ๋“ˆ์€ ํŽ˜์ด์ง€ ๋‚ด์—์„œ ๋ฐ˜๋ณต์‚ฌ์šฉ๋˜๋Š” ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•˜๋ฏ€๋กœ ๋ฃจํŠธ ์š”์†Œ์—๋Š” ๋ฐ˜๋“œ์‹œ ํด๋ž˜์Šค ์…€๋ ‰ํ„ฐ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.(ID์…€๋ ‰ํ„ฐ X) ABOUT SMACSS Module(๋ชจ๋“ˆ) ๊ทœ์น™
  • 11. โ€ข ๊ธฐ์กด ์Šคํƒ€์ผ์„ ๋ฎ์–ด์“ฐ๊ฑฐ๋‚˜ ํ™•์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โ€ข ๊ธฐ์กด ์Šคํƒ€์ผ์— ๋ชจ๋‘ ๋ฎ์–ด์จ์„œ ์Šคํ…Œ์ดํŠธ ์Šคํƒ€์ผ์„ ๋ฐ˜์˜ํ•˜๋Š” ๊ฒƒ์„ ๊ธฐ๋Œ€ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•„์š”ํ•œ ๊ฒฝ์šฐ์—๋Š” !important ์‚ฌ์šฉ๋„ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค. โ€ข ์Šคํ…Œ์ดํŠธ๋Š” ๋ ˆ์ด์•„์›ƒ์ด๋‚˜ ๋ชจ๋“ˆ์— ํ• ๋‹น ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ€ข ์Šคํ…Œ์ดํŠธ ๊ทœ์น™์— ๋”ฐ๋ฅธ ํด๋ž˜์Šค ์ด๋ฆ„์€ ๋ชจ๋‘ is- ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์—ฌ ๋‹ค๋ฅธ ๊ทœ์น™๊ณผ ๊ตฌ๋ณ„ํ•˜๋ฉฐ, ์–ด๋–ค ๋ชจ๋“ˆ์— ์ ์šฉํ•˜๋Š”์ง€๋ฅผ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•œ๋‹ค. ABOUT SMACSS State(์Šคํ…Œ์ดํŠธ) ๊ทœ์น™
  • 12. โ€ข ์‚ฌ์ดํŠธ ๋‚ด ๋ ˆ์ด์•„์›ƒ์ด๋‚˜ ์ƒ‰์ƒ, ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ ๋“ฑ์„ ์ผ์ •ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ๋ฎ์–ด์“ฐ๋Š” ๊ฒƒ(๋ ˆ์ด์•„์›ƒ๊ทœ์น™+์Šคํ…Œ์ดํŠธ๊ทœ์น™) โ€ข ๊ธฐ์กด์˜ ๋‹ค์–‘ํ•œ ์Šคํƒ€์ผ๋ง์ด ๋ฎ์–ด์“ฐ๊ธฐ์˜ ๋Œ€์ƒ์ด ๋œ๋‹ค.(๋‹คํฌ๋ชจ๋“œ์ „ํ™˜, ํ…Œ๋งˆ ์ปฌ๋Ÿฌ&์ด๋ฏธ์ง€ ๋ณ€๊ฒฝ ๋“ฑ) โ€ข theme ์ ‘๋‘์‚ฌ๋ฅผ ๋ถ™์ผ ๊ฒƒ์„ ๊ถŒ์žฅ ABOUT SMACSS Theme(ํ…Œ๋งˆ) ๊ทœ์น™
  • 13. SMACSS ์ •๋ฆฌ ์žฅ์  โ€ข ๊ณตํ†ต๋œ ๋ถ€๋ถ„์„ ์ •์˜ํ•ด์„œ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅ. โ€ข ๊ตฌ์กฐ์  ์ƒํ™ฉ์— ๊ด€๊ณ„์—†์ด ๋™์ผํ•œ ํด๋ž˜์Šค๋ผ๋ฉด ๋™์ผํ•œ ์Šคํƒ€์ผ์„ ๊ธฐ๋Œ€ํ•  ์ˆ˜ ์žˆ์Œ. โ€ข ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์œผ๋กœ ์ฝ”๋“œ ์–‘์ด ์ค„์–ด๋“ฌ. ๋‹จ์  โ€ข ๊ณตํ†ต๋œ ํด๋ž˜์Šค๊ฐ€ ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ์ˆ˜์ •์ด ๋ฐœ์ƒํ•  ์‹œ ๋ฉ€ํ‹ฐํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•จ. โ€ข ๋ฉ€ํ‹ฐํด๋ž˜์Šค๊ฐ€ ๋งŽ์•„์ง์— ๋”ฐ๋ผ ์œ ์ง€๋ณด์ˆ˜์— ์–ด๋ ค์›€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง. ๊ธฐํƒ€์˜๊ฒฌ โ€ข ํ”„๋กœ์ ํŠธ์—์„œ ๊ณ ๋ คํ•ดํ•˜ ํ•˜๋Š” ๋Œ€๋ถ€๋ถ„์˜ CSS ๊ทœ์น™์„ ํฌํ•จ ํ•œ๋‹ค. โ€ข ๊ฐ ๊ทœ์น™์ด ์—„๊ฒฉํ•˜์ง€ ์•Š์•„ ์œ ์—ฐํ•˜๊ฑฐ๋‚˜, ๊ฒฝ์šฐ์— ๋”ฐ๋ผ ๊ทœ์น™์ด ๋„ˆ๋ฌด ์œ ์—ฐํ•˜์—ฌ ์‹ค์ œ ์ฝ”๋“œ์˜ ์ง€์นจ์œผ๋กœ ์‚ผ๊ธฐ ์–ด๋ ต๋‹ค. โ€ข ๋ชจ๋“ˆ ๊ทœ์น™์— OOCSS๋ฅผ ์ ์šฉํ•˜๊ฑฐ๋‚˜ BEM์˜ ๊ทœ์น™์„ ์ผ๋ถ€ ์ ์šฉํ•˜๋Š” ๋“ฑ ๋‹ค๋ฅธ ์„ค๊ณ„ ๊ธฐ๋ฒ•๊ณผ ์กฐํ•ฉํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค.
  • 14. BEM์ด๋ž€? - Block, Element, Modifier - Yandex็คพ(๋Ÿฌ์‹œ์•„) โ€ข ๋Ÿฌ์‹œ์•„์˜ YANDEX์‚ฌ๊ฐ€ ์ œ์ฐฝํ•œ ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜ ์›น ๊ฐœ๋ฐœ ์ ‘๊ทผ๋ฒ• โ€ข UI๋ฅผ ๋…๋ฆฝ๋œ ๋ธ”๋ก์œผ๋กœ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์จ ๋ณต์žกํ•œ ํŽ˜์ด์ง€๋„ ๊ฐ„๋‹จํ•˜๊ณ  ์‹ ์†ํ•˜๊ฒŒ ๊ฐœ๋ฐœ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์  โ€ข ๊ธฐ๋ณธ์ ์œผ๋กœ๋Š” ๋ชจ๋“ˆ ๊ธฐ๋ฐ˜ ๋ฐฉ๋ฒ•์ด์ง€๋งŒ, ๊ทธ ๋‚ด์šฉ์ด ๋‹ค๋ฅธ ์„ค๊ณ„ ๊ธฐ๋ฒ•์— ๋น„ํ•ด ์—„๊ฒฉํ•˜๊ณ  ๊ฐ•๋ ฅํ•˜์—ฌ ์„ธ๊ณ„์ ์œผ๋กœ ์ด๋ฆ„์ด ์•Œ๋ ค์กŒ์œผ๋ฉฐ ์‹ค์ œ๋กœ ๋„๋ฆฌ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋‹ค. BEM https://en.bem.info/ Smashing Magazine https://www.smashingmagazine.com/2012/04/a-new-front-end-methodology-bem/
  • 15. โ€ข ๊ฐœ๋ฐœ, ๋””๋ฒ„๊น…, ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์œ„ํ•˜์—ฌ CSS ์„ ํƒ์ž์˜ ์ด๋ฆ„์„ ๋ช…ํ™•ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ์ด๋ฉฐ, ์†Œ๋ฌธ์ž, ์ˆซ์ž ๋งŒ์„ ์ด์šฉํ•ด์„œ ์ž‘๋ช…ํ•œ๋‹ค. โ€ข ์—ฌ๋Ÿฌ๋‹จ์–ด์˜ ์กฐํ•ฉ์€ ํ•˜์ดํ”ˆ(-)์œผ๋กœ ์—ฐ๊ฒฐํ•˜์—ฌ ์ž‘๋ช…ํ•œ๋‹ค. โ€ข BEM์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ID๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉฐ, class๋งŒ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. โ€ข '์–ด๋–ป๊ฒŒ ๋ณด์ด๋Š”๊ฐ€'๊ฐ€ ์•„๋‹ˆ๋ผ '์–ด๋–ค ๋ชฉ์ ์ธ๊ฐ€'์— ๋”ฐ๋ผ ์ด๋ฆ„์„ ์ง“์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋„์šฐ๋Š” P ํƒœ๊ทธ์—๊ฒŒ๋Š” .red๊ฐ€ ์•„๋‹Œ, .error๋ผ๋Š” ์ด๋ฆ„์„ ์ค˜์•ผํ•ฉ๋‹ˆ๋‹ค. BEM ๊ธฐ๋ณธ ๊ตฌ์กฐ ๋ฐ ์ž‘๋ช…๊ทœ์น™ ์ž‘๋ช…๊ทœ์น™ โ€ข BEM์€ Blcok, Element, Modifier๋กœ ๊ตฌ์„ฑ๋œ ๋„ค์ด๋ฐ์„ ํ•˜๋Š” ๊ฒƒ ๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์„ ๊ฐ๊ฐ __์™€ --๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๊ธฐ๋ณธ๊ตฌ์กฐ โ€ข ์œ„ ์ฝ”๋“œ์—์„œ header๋Š” Block, naviagtion์€ Element, navi-text๋Š” Modifier๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.
  • 16. BEM Block โ€ข ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๊ธฐ๋Šฅ์ ์œผ๋กœ ๋…๋ฆฝ์ ์ธ ํŽ˜์ด์ง€ ์ปดํฌ๋„ŒํŠธ(A functionally independent page component that can be reused) โ€ข ๋ธ”๋Ÿญ์€ ๋ธ”๋Ÿญ์„ ๊ฐ์Œ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. .header>.logo๋Š” header๋ผ๋Š” ๋ธ”๋Ÿญ ์•ˆ์— logo๋ผ๋Š” ๋ธ”๋Ÿญ์ด ๋“ค์–ด๊ฐ„ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ๋ธ”๋ก์ด๋ž€?
  • 17. BEM Element โ€ข ๋ธ”๋Ÿญ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋‹จ์œ„์ž…๋‹ˆ๋‹ค. ๋ธ”๋Ÿญ์€ ๋…๋ฆฝ์ ์ธ ํ˜•ํƒœ์ธ ๋ฐ˜๋ฉด, ์—˜๋ฆฌ๋จผํŠธ๋Š” ์˜์กด์ ์ธ ํ˜•ํƒœ์ž…๋‹ˆ๋‹ค. ์ž์‹ ์ด ์†ํ•œ ๋ธ”๋Ÿญ ๋‚ด์—์„œ๋งŒ ์˜๋ฏธ๋ฅผ ๊ฐ€์ง€๊ธฐ ๋•Œ๋ฌธ์— ๋ธ”๋Ÿญ ์•ˆ์—์„œ ๋–ผ์–ด๋‹ค ๋‹ค๋ฅธ ๋ฐ ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.) โ€ข ์œ„ ์˜ˆ์‹œ์—์„œ .search-form์€ ๋ธ”๋Ÿญ์ด๊ณ , .search-form__input๊ณผ .search-form__button์€ ์—˜๋ฆฌ๋จผํŠธ์ž…๋‹ˆ๋‹ค. ์ € search-form์ด๋ž€ ๋ธ”๋Ÿญ์€ ๋–ผ์–ด๋‚ด์„œ ์š”๊ธฐ์กฐ๊ธฐ ๋งˆ์Œ๊ป ๋ถ™์—ฌ๋„ ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๋ถ€์˜ input๊ณผ button์€ ๊ฒ€์ƒ‰์„ ์œ„ํ•œ ์ธํ’‹์ฐฝ์ด์ž ๋ฒ„ํŠผ์ด๊ธฐ ๋•Œ๋ฌธ์—, search-form ์•ˆ์—์„œ๋งŒ ์กด์žฌ ์˜๋ฏธ๊ฐ€ ์žˆ๋Š” ์—˜๋ฆฌ๋จผํŠธ์ž…๋‹ˆ ์—˜๋ฆฌ๋จผํŠธ๋ž€?
  • 18. BEM Element โ€ข ์—˜๋ฆฌ๋จผํŠธ๋Š” .block > .block__element1 > .block__element2์™€ ๊ฐ™์ด ์ค‘์ฒฉ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. โ€ข .block_element2๋ฅผ .block_element1์˜ ํ•˜์œ„ ์—˜๋ฆฌ๋จผํŠธ๋กœ ๋ณด์ง€ ์•Š๊ณ  ๋‘˜ ๋‹ค ๋˜‘๊ฐ™์ด .block์˜ ์—˜๋ฆฌ๋จผํŠธ๋กœ ์ทจ๊ธ‰ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํด๋ž˜์Šค๋„ค์ž„์— ์บ์Šค์ผ€์ด๋”ฉ์„ ์—ฌ๋Ÿฌ๋ฒˆ ํ‘œ์‹œํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์ค‘์ฒฉ์‚ฌ์šฉ โ€ข ์œ„ ํ˜•ํƒœ๋Š” block-name__element-name์ด๋ž€ ํ˜•์‹์„ ๋”ฐ๋ฅด๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.๋Œ€์‹ ์— ์•„๋ž˜์™€ ๊ฐ™์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
  • 19. BEM Modifier โ€ข ๋ชจ๋””ํŒŒ์ด์–ด๋Š” ๋ธ”๋Ÿญ์ด๋‚˜ ์—˜๋ฆฌ๋จผํŠธ์˜ ์†์„ฑ์„ ๋‹ด๋‹นํ•ฉ๋‹ˆ๋‹ค. โ€ข ์ƒ๊ธด ๊ฒŒ ์กฐ๊ธˆ ๋‹ค๋ฅด๊ฑฐ๋‚˜, ๋‹ค๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋Š” ๋ธ”๋Ÿญ์ด๋‚˜ ์—˜๋ฆฌ๋จผํŠธ๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋””ํŒŒ์ด์–ด๋ž€?
  • 20. BEM Modifier โ€ข ์œ„ ์ฝ”๋“œ์—์„œ --focused๊ฐ€ ์ˆ˜์‹์–ด์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ์ €๋ ‡๊ฒŒ ์ž‘์„ฑ๋œ ๊ฑธ ๋ถˆ๋ฆฌ์–ธ(boolean) ํƒ€์ž…์ด๋ผ๊ณ  ํ•˜๋Š”๋ฐ, ๊ทธ ๊ฐ’์ด true๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋ฉฐ โ€œโ€”โ€๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋ถˆ๋ฆฌ์–ธ(boolean) ํƒ€์ž…๊ณผ ํ‚ค-๋ฐธ๋ฅ˜(key-value) โ€ข ์œ„ ์˜ˆ์‹œ์—์„œ color-gray๊ณผ theme-normal๊ฐ€ key-value ํƒ€์ž…์— ํ•ด๋‹นํ•˜๋ฉฐ, ํ•˜์ดํ”ˆ์œผ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • 21. BEM ์ •๋ฆฌ ์žฅ์  โ€ข ํด๋ž˜์Šค๋„ค์ž„๋งŒ์œผ๋กœ ๋งˆํฌ์—… ๊ตฌ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ธ”๋Ÿญ๊ณผ ์—˜๋ฆฌ๋จผํŠธ๋กœ ๊ตฌ๋ถ„๋˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋””์„œ๋ถ€ํ„ฐ ๋–ผ์–ด๋‹ค ์“ธ ์ˆ˜ ์žˆ๋Š”์ง€, ์–ด๋””๋ถ€ํ„ฐ ์ข…์†๋˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. โ€ข SASS์˜ ๋ถ€๋ชจ์ฐธ์กฐ์ž(&)์™€ ์ฐฐ๋–ก๊ถํ•ฉ! ์“ฐ๊ธฐ๊ฐ€ ๋ฌด์ฒ™ ํŽธํ•ฉ๋‹ˆ๋‹ค. โ€ข ์ž‘์„ฑ๋œ SASS์—์„œ ์š”์†Œ๋ฅผ ์‰ฝ๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, .header ์•„๋ž˜์— &__logo, &__search๋กœ ์ž‘์„ฑํ•˜๋ฉด "ํ—ค๋” ์•„๋ž˜ ๋กœ๊ณ ๊ณ  ์ €๊ฑด ํ—ค๋” ์•„๋ž˜ ๊ฒ€์ƒ‰์ด๊ตฌ๋‚˜"๋ž€ ๊ฑธ ๋ฐ”๋กœ ์•Œ ์ˆ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. โ€ข SASS ์ž‘์„ฑ ์‹œ, ๋Š˜์–ด์ง€๋Š” ์…€๋ ‰ํŒ…์„ ๋ง‰์•„์ค๋‹ˆ๋‹ค. ๊ธฐ์กด์— nested ๋ฐฉ์‹์œผ๋กœ SASS๋ฅผ ์ž‘์„ฑํ•˜๋ฉด, ์ปดํŒŒ์ผ ์‹œ ์…€๋ ‰ํŒ…์ด ๋๋„ ์—†์ด ๊ธธ์–ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์ง€๋งŒ ex(.header .nav .list .item .link ) ๊ทธ๋Ÿฐ๋ฐ BEM ๋ฐฉ์‹์„ ์“ฐ๋ฉด, ๋„ˆ๋„๋‚˜๋„ ์—˜๋ฆฌ๋จผํŠธ๋ผ์„œ ๊ตณ์ด ๊นŠ๊ฒŒ nestedํ•  ํ•„์š”๊ฐ€ ์—†์–ด์ง‘๋‹ˆ๋‹ค. ๋‹จ์  โ€ข ํด๋ž˜์Šค๋„ค์ž„์ด ๋„ˆ๋ฌด ๊ธธ์–ด์„œ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง ๋งˆํฌ์—…์ด ํ•œ๋ˆˆ์— ๋“ค์–ด์˜ค์ง€ ์•Š๋Š”๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์Šคํฌ๋ฆฝํŠธ๋กœ ๋ชจ๋””ํŒŒ์ด์–ด๋ฅผ ๋ณ€๊ฒฝํ•ด์•ผํ•  ๋•Œ, classList.add("block-name__element-name--modifier")์ฒ˜๋Ÿผ ๊ธธ๊ฒŒ ์ž‘์„ฑํ•ด์•ผํ•˜๋Š” ๊ฑด ๋ถˆํŽธํ•ด๋ณด์ž…๋‹ˆ๋‹ค. โ€ข ๋”๋ธ”ํด๋ฆญ ์„ ํƒ์ด ๋ถˆํŽธํ•จ ํ•˜์ดํ”ˆ๊ณผ ์–ธ๋”๋ฐ”๊ฐ€ ํ˜ผ์žฌ๋˜์–ด ์žˆ์–ด, ๋”๋ธ”ํด๋ฆญํ•ด์„œ ํด๋ž˜์Šค๋„ค์ž„์„ ์„ ํƒํ• ๋•Œ ํ•œ ๋ฒˆ์— ์„ ํƒ์ด ์•ˆ ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์–ด์š”.
  • 22. -๋- ๊ธฐํƒ€์˜๊ฒฌ โ€ข ์ด๋ ‡๊ฒŒ BEM์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์žฅ์ ๋„ ๋‹จ์ ๋„ ์žˆ์ง€๋งŒ, ์žฅ์ ์ด ๋” ๋งŽ๊ธฐ์— ๋””์ž์ธ~๋งˆํฌ์—…~ํ”„๋ก ํŠธ์—”๋“œ ๊ฐ„์˜ ์˜์‚ฌ์†Œํ†ต์ด ํ™œ๋ฐœํžˆ ํ•˜๊ณ  ๋งˆํฌ์—… ๋‹จ๊ณ„๋ถ€ํ„ฐ ๊ตฌ์กฐ๋ฅผ ํƒ„ํƒ„ํ•˜๊ฒŒ ์งœ์•ผํ•œ๋‹ค๋ฉด BEM์„ ์ถ”์ฒœํ•ฉ๋‹ˆ๋‹ค. โ€ข ๋‹ค์Œ์—” ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ž‘์„ฑํ•ด๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.