Skip to content

Latest commit

Β 

History

History
186 lines (147 loc) Β· 3.78 KB

CSS_METHODOLOGY.md

File metadata and controls

186 lines (147 loc) Β· 3.78 KB

CSS λ°©λ²•λ‘ μ΄λž€?

CSS 방법둠은 CSSμ½”λ“œλ₯Ό λ¬΄μ§ˆμ„œ ν•˜κ²Œ μž‘μ„± ν•  λ•Œ μ˜€λŠ” λ¬Έμ œμ λ“€μ„ 보완 ν•˜κ³ μž μΌκ΄€λ˜κ³  체계적인 방법을 μ œμ‹œν•˜λŠ” 방법둠이닀.

CSS에도 μž‘μ„±λœ μ½”λ“œλ₯Ό μ‰½κ²Œ νŒŒμ•…ν•˜κ³  μœ μ§€λ³΄μˆ˜μ„± κΉŒμ§€ κ³ λ €ν•œλ‹€λ©΄ λͺ…ν™•ν•˜κ³  μΌκ΄€μ„±μžˆλŠ” κ·œμΉ™μ΄ ν•„μš”ν•˜λ‹€. BEM, SMACSS, OOCSSλŠ” μΌκ΄€λ˜κ³  체계적인 방법을 가진 CSS 방법둠듀이닀.

3가지 방법둠은 μž‘μ„±λ°©μ‹μ΄ 달라도 μ•„λž˜ μ„Έκ°€μ§€λŠ” κ³΅ν†΅μ μœΌλ‘œ μ€‘μš”μ‹œν•œλ‹€.

  • μ›ν™œν•œ μœ μ§€λ³΄μˆ˜λ₯Ό μœ„ν•¨
  • μ½”λ“œμ˜ μž¬μ‚¬μš©μ„±μ„ 높이기 μœ„ν•¨
  • 클래슀λͺ… λ§ŒμœΌλ‘œλ„ 무슨 λ‚΄μš©μΈμ§€ μ˜ˆμΈ‘ν•  수 있게 함

BEM (Block Element Modifier)

블둝(Block), μš”μ†Œ(Element), μƒνƒœ(Modifier)둜 κ΅¬λΆ„ν•˜μ—¬ 클래슀 μž‘μ„±ν•˜λ©° μ—„κ²©ν•œ 넀이밍 κ·œμΉ™μ„ 가진닀. μ½”λ“œλ₯Ό μ§κ΄€μ μœΌλ‘œ νŒŒμ•…ν• μˆ˜ μžˆμ§€λ§Œ 이름이 κΈΈκ³  λ³΅μž‘ν•΄ 질수 μžˆλ‹€.

Block : μž¬μ‚¬μš© κ°€λŠ₯ν•œ μ˜μ—­(header, footer, navigation…), ν•˜λ‚˜μ˜ 단어λ₯Ό μ‚¬μš©ν•˜λ˜ κΈΈμ–΄μ§ˆ 경우 (-)λ₯Ό μ‚¬μš©

.header {
  ...;
}
.block {
  ...;
}

Element : λΈ”λ‘μ˜ λ‚΄λΆ€ ꡬ성을 ν‘œν˜„, λ‘κ°œμ˜ underscores(__)둜 ν‘œκΈ°

.header {
  ...;
}
.header__link {
  ...;
}
.header__tap {
  ...;
}
.header__tap__item {
  ...;
}

Modifier : μš”μ†Œμ˜ μƒνƒœλ₯Ό ν‘œν˜„, λ‘κ°œμ˜ hyphen(-)둜 ν‘œκΈ°

.header--hide {
  ...;
}
.header__tap--big {
  ...;
}
.header__tap--big {
  ...;
}

SMACSS(Scalable Modular Architecture CSS)

λ²”μ£Όν™”(categorization)둜 νŒ¨ν„΄ν™” ν•˜κ³ μž ν•˜λŠ” 방법둠이닀. κΈ°λ³Έ(base), λ ˆμ΄μ•„μ›ƒ(layout), λͺ¨λ“ˆ(module), μƒνƒœ(state), ν…Œλ§ˆ(theme) λ‹€μ„―κ°€μ§€μ˜ λ²”μ£Όλ₯Ό μ œμ‹œν•œλ‹€.

⚠ SMACSS μ‚¬μš©μ‹œμ—λŠ” λŒ€ν‘œμ μœΌλ‘œ μ•„λž˜μ˜ 4가지 μœ μ˜μ‚¬ν•­λ“€μ΄ μ‘΄μž¬ν•œλ‹€.

  • νŒŒμƒλœ CSSμ…€λ ‰ν„° μ‚¬μš©κΈˆμ§€
  • Id μ…€λ ‰ν„° μ‚¬μš©κΈˆμ§€
  • !Important μ‚¬μš©κΈˆμ§€
  • λ‹€λ₯Έ κ°œλ°œμžλ“€μ΄ 이해할 수 μžˆλ„λ‘ class 이름을 의미있게 지어야 함

Base : μŠ€νƒ€μΌ μ΄ˆκΈ°ν™” (reset.css)

body,
p,
table,
form,
fieldset,
legend,
input,
button ... {
  margin: 0;
  padding: 0;
}

layout : μ£Όμš” μš”μ†Œ(id), ν•˜μœ„ μš”μ†Œ(class)둜 κ΅¬λΆ„ν•˜κ³  접두사λ₯Ό μ‚¬μš©

#header {
  width: 400px;
}
#aside {
  width: 30px;
}

.layout-width #header {
  width: 600px;
  padding: 10px;
}
.layout-width #aside {
  width: 100px;
}

module : μž¬μ‚¬μš© κ°€λŠ₯ν•œ κ΅¬μ„±μš”μ†Œ

.stick {
  ...;
}
.stick-name {
  ...;
}
.stick-number {
  ...;
}

state : μš”μ†Œμ˜ μƒνƒœ λ³€ν™”λ₯Ό ν‘œν˜„ν•˜κ³  접두사 μ‚¬μš©

.is-error {
  ...;
}
.is-hidden {
  ...;
}
.is-disabled {
  ...;
}

theme : μ‚¬μš©μžκ°€ 선택 κ°€λŠ₯ ν•˜λ„λ‘ μŠ€νƒ€μΌμ„ μž¬μ„ μ–Έν•˜μ—¬ μ‚¬μš©

/* base.css */
.header {
  background-color: green;
}

/* theme.css */
.header {
  background-color: red;
}

OOCSS(Object Oriented CSS)

쀑볡을 μ΅œμ†Œν™”ν•˜κ³  μΊ‘μŠν™”λ₯Ό μ›μΉ™μœΌλ‘œ ν•œλ‹€. κ³΅ν†΅λœ 뢀뢄을 μ°Ύμ•„ μ–΄λ””μ„œλ‚˜ μž¬ν™œμš© ν• μˆ˜ μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€. λ°˜λ©΄μ— 닀쀑 클래슀 μ‚¬μš©μœΌλ‘œ μœ μ§€λ³΄μˆ˜μ˜ 어렀움과 가독성이 λ–¨μ–΄μ§ˆμˆ˜ μžˆλ‹€.

μ»¨ν…Œμ΄λ„ˆμ™€ 컨텐츠λ₯Ό 뢄리

<div class="header common-width">Header</div>
<div class="footer common-width">Footer</div>

.header{
    position: fixed;
    top: 0;
}
.footer{
    position: absolute;
    bottom: 0;
}
.common-width{
    width: 700px;
    margin: 0;
}

ꡬ쑰와 λͺ¨μ–‘을 뢄리 λ˜λŠ” κ²°ν•©

<div class="btn skin tel">tel</div>
<div class="btn skin">email</div>
.btn{곡톡 μŠ€νƒ€μΌ μ •μ˜}
.skin{곡톡 μŠ€νƒ€μΌ μ •μ˜}

Reference


Back