본문 바로가기

CSS

CSS 기본 사용법

Inline 방식 : 태그 안에 style 정의

<p style="color: red; font-size: 20px;">This is a red paragraph.</p>

장점

  • 간편함: 특정 요소에만 스타일을 적용해야 할 때 빠르게 적용할 수 있음
  • 직관적: 코드만으로 해당 요소의 스타일을 쉽게 파악할 수 있음

단점

  • 유지보수 어려움: 여러 요소에 동일한 스타일을 적용할 때, 일일이 수정해야 하므로 관리가 힘듦
  • 재사용성 낮음: 동일한 스타일을 여러 곳에 적용할 수 없음
  • 가독성 저하: HTML과 CSS 코드가 섞여 있어 문서의 가독성이 떨어짐

 

Internal 방식 : style 태그로 지정

<head>
  <style>
    p {
      color: blue;
      font-size: 18px;
    }
  </style>
</head>
<body>
  <p>This is a blue paragraph.</p>
</body>

장점

  • 문서 전반에 걸쳐 스타일 적용: 한 문서 내의 여러 요소에 동일한 스타일을 쉽게 적용할 수 있음
  • 별도의 파일 불필요: 외부 CSS 파일을 불러올 필요가 없으므로 간단한 프로젝트에서 유용

단점

  • 재사용성 제한: 한 문서 내에서만 스타일이 적용되므로, 여러 HTML 문서에 동일한 스타일을 적용 시 비효율
  • 문서 크기 증가: 많은 CSS 코드가 문서에 포함되면, 문서의 크기가 커짐
  • 가독성 저하: HTML과 CSS가 같은 파일에 포함되어 있어 코드가 복잡

 

External 방식 : 외부 css파일로 만들기

제일 사용하기에 편하고 장점이 많은 방식

<head>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <p>This is a paragraph styled by external CSS.</p>
</body>
p {
  color: green;
  font-size: 16px;
}

 

장점

  • 재사용성 높음: 여러 HTML 문서에서 동일한 CSS 파일을 사용 가능
  • 유지보수 용이: CSS를 한 곳에서 관리하므로, 스타일 변경 시 모든 문서에 적용
  • 가독성 향상: HTML과 CSS가 분리되어 코드가 명확
  • 성능 향상: CSS 파일이 한 번만 로드되므로, 여러 페이지에서 캐시를 활용할 수 있어 성능 향상

단점

  • 외부 파일 의존성: CSS 파일이 로드되지 않으면 스타일이 적용되지 않으며, 파일 경로를 잘못 설정하면 문제가 발생

CSS Cascading

여러 스타일 규칙이 동일한 요소에 적용될 때, 브라우저가 어떤 규칙을 최종적으로 적용할지 결정하는 메커니즘

이 과정은 스타일의 우선순위를 따져 가장 적합한 스타일을 선택하는 방식

 

1. 선언 방식에 따른 우선순위 (Cascade Order)

  • Inline 스타일 (style 속성): 가장 높은 우선순위
  • Internal 및 External 스타일: Inline 스타일 다음으로 높은 우선순위

2. Specificity(구체성)

CSS에서 구체성은 어떤 스타일 규칙이 다른 규칙보다 우선하는지를 결정하는 중요한 요소인데, 구체성은 선택자의 유형에 따라 계산됨

  • ID 선택자 (#id)는 가장 높은 구체성
  • 클래스 선택자 (.class), 속성 선택자 ([attr]), 가상 클래스 (:hover 등)는 중간 수준의 구체성
  • 태그 선택자 (element)와 가상 요소 (::before, ::after)는 가장 낮은 구체성
#id {
  color: red; /* 구체성: 100 */
}

.class {
  color: blue; /* 구체성: 10 */
}

div {
  color: green; /* 구체성: 1 */
}
 

3. 선언 순서 (Source Order)

구체성과 우선순위가 동일한 경우, 선언된 순서에 따라 스타일이 결정

나중에 선언된 스타일이 이전에 선언된 스타일을 덮어씀

4. 중요 스타일 (!important)

어떤 스타일을 무조건 우선 적용하고 싶을 때 !important를 사용할 수 있음

이는 가장 높은 우선순위를 가지며, 구체성과 상관없이 해당 스타일을 적용

 

하지만 !important는 코드의 유지보수성을 떨어뜨릴 수 있으므로, 꼭 필요할 때만 사용하는 것이 좋음

 

결론

  1. 출처에 따른 우선순위 (Inline > Internal/External > 브라우저 기본)
  2. 구체성 (ID > 클래스 > 태그)
  3. 선언된 순서 (나중에 선언된 것이 우선)
  4. !important 규칙 (가장 우선)

'' 카테고리의 다른 글

Express와 Nest  (0) 2024.08.27
DOM  (0) 2024.08.21
CSS Selector  (0) 2024.08.21
HTML 태그 및 속성  (0) 2024.08.19
웹 브라우저 DOM 파서  (0) 2024.07.18