Normalize.css와 Reset CSS의 차이점은 무엇입니까?


565

CSS 재설정이 무엇인지 알고 있지만 최근에 Normalize.css라는 새로운 내용에 대해 들었습니다.

Normalize.cssReset CSS 의 차이점은 무엇입니까 ?

CSS 정규화와 CSS 재설정의 차이점은 무엇입니까?

CSS 재설정에 대한 새로운 유행어입니까?

답변:


800

normalize.css에서 작업합니다.

주요 차이점은 다음과 같습니다.

  1. Normalize.css는 모든 것을 "스타일링 해제"하는 대신 유용한 기본값을 유지합니다. 예를 들면, 원하는 요소 sup또는 subnormalize.css 포함 후 "바로 작업"(실제로는보다 강력한 이루어진다)가 포함 reset.css 후에 정상적인 텍스트와 시각적으로 구별 할 수있는 반면. 따라서 normalize.css는 시각적 시작점 (균질성)을 강요하지 않습니다. 이것은 모든 사람의 취향에 맞지 않을 수 있습니다. 가장 좋은 방법은 둘 다 실험하고 원하는 젤을 확인하는 것입니다.

  2. Normalize.css는 reset.css의 범위를 벗어난 몇 가지 일반적인 버그를 수정합니다. reset.css보다 넓은 범위를 가지며 HTML5 요소의 표시 설정, font양식 요소에 의한 상속 부족 , font-size렌더링 수정 pre, IE9의 SVG 오버플로 및 buttoniOS 의 스타일링 버그 와 같은 일반적인 문제에 대한 버그 수정을 제공합니다 .

  3. Normalize.css는 개발 도구를 어지럽히 지 않습니다. reset.css를 사용할 때 일반적인 자극은 브라우저 CSS 디버깅 도구에 표시되는 큰 상속 체인입니다. 대상 지정 스타일로 인해 normalize.css에서는 이러한 문제가 아닙니다.

  4. Normalize.css는 더 모듈화되어 있습니다. 이 프로젝트는 상대적으로 독립적 인 섹션으로 분류되므로 웹 사이트에서 필요하지 않은 섹션을 알고 있으면 양식 정규화와 같은 섹션을 쉽게 제거 할 수 있습니다.

  5. Normalize.css에 더 나은 설명서가 있습니다. normalize.css 코드는 GitHub Wiki 에서 인라인으로보다 포괄적으로 문서화되어 있습니다 . 즉, 각 코드 행이 수행하는 작업, 포함 된 이유, 브라우저 간의 차이점을 파악하고보다 쉽게 ​​자체 테스트를 실행할 수 있습니다. 이 프로젝트는 기본적으로 브라우저가 기본적으로 요소를 렌더링하는 방법을 교육하고 개선 사항 제출에 더 쉽게 참여할 수 있도록하는 데 도움이됩니다.

normalize.css 에 대한 기사에서 이에 대해 더 자세히 작성했습니다.


19
종종, 당신은 그것들을 0으로 두지 않고 (리셋을 사용할 때) 실제로 적은 코드를 작성합니다. 일부 값을 제로화하려는 경우 해당 스타일이 해당 요소에 연결되며 디버깅이 쉬워집니다.
necolas

8
그리고 그것은 모든 것을 제로화하면 브라우저 속도가 느려진다는 사실을 포함하여 많은 재설정에서 중요한 문제입니다.
Rob

4
그리고 그것은 또한 리셋의 장점입니다 -github.com/yahoo/pure/issues/395
Daniel Sokolowski 님이

4
일반적으로 패딩과 여백을 0으로하고 싶지 않지만 기본값을 원하지 않는다고 생각할 때 요점을 놓치게됩니까?
guioconnor

9
개인적으로 나는 여전히 사용하지만 Normalize를 벗어났습니다. 여기의 많은 부분이 실제로 과장되었습니다 (더 나은 문서 ...?). 정규화는 의견이 많으므로 시각적으로 시작점을 강요합니다 (이 답변의 내용에도 불구하고). 구식이 될 수도 있습니다. Reset.css는 사용한 후에는 구식이 될 수 없습니다. 그리고 당신이 생각할 수있는 다른 숫자보다 여백과 패딩이 0이되기를 원할 것이므로 실제로 개발할 때 모든 것이 재설정되는 것이 도움이됩니다. 그러나 정상화는 브라우저 문제에 적합하며 이것이 내가 사용하는 주된 이유입니다.
Chuck Le Butt

255

가장 큰 차이점은 다음과 같습니다.

  • CSS 재설정은 모든 내장 브라우저 스타일 을 제거 하는 것을 목표로 합니다 . H1-6, p, strong, em 등과 같은 표준 요소는 장식이 전혀없이 정확하게 똑같이 보입니다. 그런 다음 모든 장식을 직접 추가해야합니다 .

  • CSS 정규화 는 브라우저 간에 내장 브라우저 스타일을 일관되게 유지 하는 것을 목표로 합니다. H1-6과 같은 요소는 브라우저에서 일관된 방식으로 대담하고 더 크게 나타납니다. 그런 다음 디자인에 필요한 장식 의 차이 만 추가 해야합니다.

설계 경우 a)는 타이포그래피 등등, 및 공통 규칙은 다음과 B)를 Normalize.css는 쓰기에 자신의 CSS는 더 작고 더 빠른 것 Normalize.CSS 대신 CSS 리셋을 사용하여 귀하의 타겟 고객을 위해 작동합니다.


6
@Jitendra Vyas :-실제로 한 가지 방법이 있습니다 : 잘 작성된 Normalize.CSS 코드를 읽고 그것이 귀하의 요구에 맞는지 결정하십시오. github.com/necolas/normalize.css/blob/master/normalize.css
Jesper M

또 다른 참고 사항 : Normalize.css는 가능한 한 눈에 거슬리지 않기 때문에 개발자는 특이성 충돌과 싸우지 않고도 코드를 쉽게 작성할 수 있습니다.
zzzzBov

개발할 때 리셋을 사용하고 싶다고 가정 해 봅시다. 그리고 일단 완료되면 normalize.css 또는 브라우저에서 변경되지 않은 모든 것을 취하는 JS를 원합니다. 또는 변경했으며 변경 후 브라우저에서와 동일하게 변경되어 클라이언트 측에서 제거했습니다. 따라서 재설정은 더 빠른 클라이언트 측에서 해당 '프로그램'을 개발하는 동안 도움이 될 것입니다. 둘 다 행복합니다. 그리고 훨씬 더 똑똑한 생활 방법.
Muhammad Umer

실제로 어쨌든 모든 노멀 라이즈 스타일을 덮어 씁니다. 이론은 훌륭하지만이 OOCSS 세계에서는 실제로 그런 식으로 작동하지 않습니다.
Chuck Le Butt

40

Normalize.css는 주로 제작자가보기에 좋을 것으로 생각한 브라우저를 기준으로 일관성있게 보이도록하는 스타일 모음입니다. Reset은 기본적으로 요소에서 스타일을 제거하므로 모든 스타일을보다 효과적으로 제어 할 수 있습니다.

둘 다 사용합니다.

재설정의 일부 스타일, Normalize.css의 일부 스타일 예를 들어, Normalize.css에는 모든 입력 요소가 동일한 글꼴을 갖도록하는 스타일이 있습니다 (텍스트 입력과 텍스트 영역 사이). Reset에는 이러한 스타일이 없으므로 입력에 다른 글꼴이 있으므로 일반적으로 원하지 않습니다.

따라서 기본적으로 두 개의 CSS 파일을 사용하면 모든 것을 '등화'하는 것이 더 좋습니다.)

문안 인사!


1
이것은 좋은 실용적인 답변입니다. 반드시 하나 또는 다른 것은 아닙니다. 원하는 것을 각각 가져 가십시오. 나는 완전한 리셋을 좋아하지만 Normalizer는 멋진 비트와 조각을 제공합니다.
Undistraction

3
@ ricmetalster, reset.css와 normalize.css의 기능을 결합하기 위해 자신의 CSS를 다시 작성해야 했습니까?
ayjay

2
두 가지를 모두 사용하려면 먼저 "재설정"을 나열한 다음 "정규화"를 한 다음 스타일을 맨 위에 추가 할 수 있습니까?
Craig

내가 가지고 접근 방식 "을 통해 그것을 생각하지 않는다"모두를 사용하여 내 SASS 수입에 포함로 그들에게 전화 @import '_normalize'&& '_reset'
killscreen

6

첫 번째 reset.css는 사용할 수있는 최악의 라이브러리입니다. HTML의 표준 구조를 제거하고 여백 패딩 및 기타 속성 값을에 할당 한 후 작성한 모든 내용을 텍스트로 표시하기 때문 0입니다. 예를 들어 <H1>,와 동일 하다는 것을 알 수 있습니다 <H6>.

반면에 Normalize.css표준 구조를 사용하고 그 안에 존재하는 거의 모든 오류를 수정합니다. 예를 들어 한 브라우저에서 다른 브라우저로 양식을 표시 할 때 발생하는 문제를 해결합니다. 정규화는이 기능을 수정하여이 문제를 해결하므로 모든 브라우저에서 요소가 동일하게 표시됩니다.


1
사용 사례에 따라 다릅니다. 귀하의 예를 고려할 때 프로젝트의 모든 제목 태그의 글꼴 스타일을 수정 해야하는 경우 실제로 기본값을 사용하지 않을 것입니까? 자신의 프로젝트에서 용도를 찾을 수 없기 때문에 라이브러리를 "가장 최악"으로 분류해서는 안됩니다.
Debojyoti Ghosh

재설정의 주요 목적 중 하나는 매우 유용한 브라우저 적용 스타일에서 발생하는 문제를 해결하는 것입니다. 또한 도서관으로 간주해서는 안된다고 생각합니다.
Isaac Pak

@gdebojyoti 몇 가지 사용 사례가 있지만 각각의 글꼴 스타일에 관계없이 모든 제목의 크기가 거의 같은 경우는 거의 없습니다.
James Beninger

5

설명에 따르면 재설정과 마찬가지로 모든 기본 스타일을 제거하지 않고 모든 브라우저에서 사용자 에이전트의 기본 스타일을 일관성있게 유지하려고합니다.

많은 CSS 재설정과 달리 유용한 기본값을 유지 합니다.


재설정보다 정규화 CSS를 사용하는 것이 더 낫습니까?
Jitendra Vyas

3
@Jitendra Vyas — 아니요. 도구는 서로 다르거 나 나쁘지 않습니다. 가장 좋은 문제를 해결하는 데 도움이되는 것을 선택하십시오.
Quentin

8
정규화 재설정하는 것보다 낫다고 주장해야 합니다. 이는 와이어로 전송되는 CSS가 줄어들고 UA 기본값을 더 잘 사용하며 요소가 표시 되는 방법을 더 잘 이해 하게 합니다.
Ryan Kinal

5

재설정은 특히 복잡한 비 보일러 플레이트 유형 설계 프로젝트에서 사용자 정의 설계 사양을 충족해야 할 것으로 보입니다. 정규화는 순전히 웹 프로그래밍을 염두에 두는 좋은 방법 인 것처럼 들리지만 종종 웹 사이트는 웹 프로그래밍과 UI / UX 디자인 규칙 사이의 결혼입니다.


사용 사례의 99 %를 과도하게 사용합니다.
Michael

@ 마이클 어느 쪽? 재설정 또는 정상화? (그 주제에 대한 사람들의 마음을 이해하려고
노력함

1
@Breset과 Normalize가 모두 가능합니다. 각 요소의 기본 CSS 값을 아는 것은 훌륭한 프론트 엔드 개발자의 일부입니다. 나는 그것들을 불필요한 무차별 대입 방법으로 본다.
Michael

4
@Michael> Knowing the default CSS values for each element is part of being a good front end developer-이것은 당신이 프로그래밍 언어가 아닌 전자와 함께 일할 것이라고 말하는 것과 비슷하다. 그것이 좋은 개발자가되기 때문이다. 도구를 사용하여 효율적으로 사람에게 좋은 개발자를 만드는 다른 방법은 주위에 일반적으로 시간 낭비 광신자의 범주에 빠진다
nicholaswmin

1

때로는 가장 좋은 해결책은 두 가지를 모두 사용하는 것입니다. 때로는 둘 다 사용하지 않는 경우도 있습니다. 때로는 하나 또는 다른 것을 사용해야합니다. 모든 브라우저에서 여백 및 패딩 재설정을 포함한 모든 스타일을 원하면 reset.css를 사용하십시오. 그런 다음 모든 장식과 스타일을 직접 적용하십시오. 내장 스타일링을 좋아하지만 브라우저 간 동기화, 즉 표준화와 같은 더 많은 것을 원한다면 normalize.css를 사용하십시오. 그러나 reset.css와 normalize.css를 모두 사용하기로 선택한 경우, reset.css 스타일 시트를 먼저 연결 한 다음 normalize.css 스타일 시트 (즉시)를 연결하십시오. 때로는 어느 것이 더 나은지 항상 문제는 아니지만 둘 중 어느 것을 사용해야 할 때와 둘 다를 사용해야 할 때와 둘 다 사용하지 않을 때. 이모.


0

이 질문은 이미 여러 차례 답변되었습니다 .2019 년 9 월 기준으로 각각에 대한 간단한 요약과 예를 들어 보겠습니다.

  • Normalize.css- 이름에서 알 수 있듯이 사용자 에이전트의 브라우저에서 스타일을 정규화 합니다. 즉, 기본적으로 스타일이 약간 다르기 때문에 모든 브라우저에서 동일하게 만듭니다.

: 기본적으로 Google 크롬의 <h1>내부 태그 <section>는 "예상" <h1>태그 크기보다 작습니다 . 반면에 Microsoft Edge는 "예상 된"크기의 <h1>태그를 만들고 있습니다. Normalize.css는 일관성을 유지합니다.

현재 상태 : npm 저장소는 normalize.css 패키지 가 현재 주당 5 만 회 이상 다운로드 되었음을 보여줍니다 . 저장소 프로젝트의 GitHub 스타는 36k 이상입니다.

  • CSS 재설정 -이름에서 알 수 있듯이 모든 스타일을 재설정 합니다. 즉, 모든 브라우저의 사용자 에이전트 스타일을 제거합니다.

: 아래와 같은 작업을 수행합니다.

html, body, div, span, ..., audio, video {  
   margin: 0;  
   padding: 0;  
   border: 0;  
   font-size: 100%;  
   font: inherit;  
   vertical-align: baseline; 
}

현재 상태 : Normalize.css보다 훨씬 덜 인기있는 reset-css 패키지는 일주일에 약 26k 다운로드 한 것으로 표시합니다. GitHub 스타는 프로젝트의 저장소 에서 알 수 있듯이 200 개에 불과 합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.