노트

CSS 리셋

CSS Reset

프런트엔드#css · 연결된 개념 4개

쉽게 말하면

CSS 리셋은 그림을 그리기 전에 브라우저마다 다르게 칠해진 바탕을 하얗게 맞추는 일이에요. 제목 여백, 목록 들여쓰기처럼 제각각인 기본 스타일을 지워 모두 같은 출발점에서 시작하죠.

비유가 깨지는 곳 다 지워야만 리셋인 건 아니에요. Normalize.css는 쓸모 있는 기본값은 살리고 차이만 맞춰요. 그리고 리셋은 가장 약한 레이어에 둬야 다른 스타일을 방해하지 않아요.

브라우저마다 다른 기본 스타일(제목 여백, 목록 들여쓰기 등)을 지우거나 맞춰서, 같은 출발점에서 스타일링하게 하는 기법.

  • 전체 선택자(Universal Selector) 리셋: * { margin: 0; padding: 0; box-sizing: border-box }. 가장 단순하다. box-sizing이 무엇을 바꾸는지는 CSS 박스 모델을 본다
  • Eric Meyer의 Reset CSS: 많은 요소의 기본값을 명시적으로 0으로 돌리는 고전적인 리셋
  • Normalize.css: 지우지 않고, 쓸모 있는 기본값은 살리면서 브라우저 간 차이만 맞춘다
  • 현대식 최소 리셋: 필요한 몇 줄만 둔다
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
body { line-height: 1.5; }
img, picture, video, canvas, svg { display: block; max-width: 100%; }
input, button, textarea, select { font: inherit; }

Tailwind는 Preflight라는 자체 리셋을 기본으로 넣는다. Tailwind를 붙이자마자 h1이 본문 글자와 같은 크기가 되고 목록 기호가 사라지는 이유가 이것이다. 리셋은 가장 약한 레이어(Tailwind v4에서는 base)에 두어야 다른 스타일을 방해하지 않는다. 레이어 밖에 둔 전역 태그 스타일은 레이어 안의 규칙을 모두 이기므로 주의한다.

참고: Eric Meyer — CSS Tools: Reset CSS · Normalize.css · Tailwind CSS — Preflight

연결된 개념

이 노트를 가리키는 문서

뜻이 가까운 노트

  • CSS-in-JS와 빌드 타임 CSS

    JS(JavaScript) 안에서 스타일을 정의하고, 렌더링할 때 라이브러리가 클래스를 만들어 style 태그로 주입하는 방식. styled-components와 Emotion이 대표다. React 18 이후 서버 컴포넌트(React Server Components)·스트리밍 SSR(Streaming Server-Side Rendering)이 자리 잡으면서 런타임에 CSS를 만드는 방식은 줄고, 빌드할 때 CSS를 뽑는 방식이 늘었다(2026 기준).

  • Sass와 PostCSS

    둘 다 CSS를 변환하는 빌드 도구지만 출발점이 다르다. Sass(Syntactically Awesome Style Sheets)는 자기 언어(SCSS, Sassy CSS)를 CSS로 번역하는 전처리기(Preprocessor)이고, PostCSS는 표준 CSS를 받아 플러그인 체인으로 변환하는 도구다.

  • CSS 캐스케이드

    같은 요소의 같은 속성에 여러 규칙이 값을 줄 때, 브라우저가 어느 값을 쓸지 정하는 규칙. 흔히 명시도(Specificity)만 떠올리지만 그보다 앞서 비교하는 기준들이 있다.

  • 속성 선택자와 형제 선택자

    대괄호 []로 HTML 속성을 기준으로 요소를 고르는 선택자와, +·~로 형제 관계를 따라 고르는 선택자. CSS뿐 아니라 querySelectorAll에서도 똑같이 쓴다.

  • CSS 명시도

    캐스케이드에서 레이어까지 비겼을 때, 선택자가 요소를 얼마나 구체적으로 가리키는지로 승부를 내는 점수. (A, B, C) 세 자리로 매기고 앞자리부터 비교한다.

보기 옵션