쿼크모드(Quirks mode)와 표준모드(Standard mode) > JQuery & JavaScript

STUDY ROOM

JQuery & JavaScript

쿼크모드(Quirks mode)와 표준모드(Standard mode)

페이지 정보

작성자 JMStudy 작성일14-09-12 10:53 조회8,723회 댓글0건

본문

웹 브라우저는 두 가지 렌더링 모드를 지니고 있는데 쿼크모드(Quirks mode)와 표준모드(Standard mode)이다.

즉 브라우저는 선언된 doctype에 따라 렌더링할 모드를 선택하게 되는데 이 과정을 doctype sniffing 또는 doctype switching이라고 한다.
 
브라우저가 출력하고자 하는 문서가 최신이라고 판단하면 표준모드(standard mode)로 렌더링을 하는데 CSS2 스펙에 따라 CSS가 적용되었다는 것을 의미한다.

반면 브라우저가 예전문서라고 판단을 하면 쿼크 모드(quirks mode)로 렌더링을 하게 된다. 이 모드에서는 이전 세대의 브라우저에 맞는 비표준적 방법의 CSS를 적용한다.
즉 쿼크모드의 목적은 오래된 웹페이지들이 최신 버전의 브라우저에서 깨져 보이지 않으려는 것에 있다.

*Opera(7.5
이상), Firefox, 그리고 Safari는 위에 언급된 두 가지 모드 외에 almost standard mode라고 불리는
하나의 모드를 더 지원하고 있는데, 이 모드일 경우 테이블 셀 안에 있는 이미지 레이아웃은 CSS2의 스펙을 따르지 않고 스
모드로 구현되어 있다. 이런 부분을 제외하고는 표준모드와 동일하다고 볼 수 있다.


그렇다면 브라우저는 문서가 최신인지 오래된 문서인지 어떻게 판단할까?
바로 문서 상단에 있는 DTD(Document Type Defination)를 보고 쿼크모드 혹은 표준모드로 렌더링한다.

먼저 DTD의 구성은 PUBLIC 문자열과 FPI(formal public identifier), FSI(formal system identifier) 로 이루어져 있다. 

1. FPI와 FSI 모두를 포함하는 doctype 선언 예
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
 
2. FPI만 선언되어있는 doctype 선언 예

 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

  

1번처럼 FPI와 FSI가 동시에 기술되어 있을 경우 브라우저는 표준모드를 선택하고
2번처럼 FSI가 기술되어있지 않은 경우 브라우저는 쿼크모드로 렌더링한다. 또 아예 DTD를 적지 않는 경우도 브라우저는 쿼크모드를 선택한다.
세가지 모드를 지원하는 브라우저는 모드를 선택하기 전에 DTD 레퍼런스를 조사한다.
일반적으로 HTML 4.0 Strict, HTML 4.01 Strict, XHTML 1.0 Strict에 대한 DTD는 표준모드로 동작을 한다.
Transitional DTD는 almost standard mode로 동작을 한다.
다음은 각 브라우저별로 여러가지 DTD들이 어떻게 렌더링되는지 나와있는 표다
Q : 쿼크모드(Quirks mode)
S : 표준모드(Standard mode)
A : Almost Standard mode 
DTD Switching에 따른 웹 브라우저별 렌더링 모드 전환 표(참조문서)
DTD의 종류
IE6,7
FF2
OP9
SF2
None
DTD가 없는 경우
Q
Q
Q
Q
HTML 4.01
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
Q
Q
Q
Q
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
A
A
A
A
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> - 표준 에러 출력 대기
A
S
S
S
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
A
S
S
S
XHTML 1.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
A
A
A
A
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
A
S
S
S

 

여기서 한 가지 주의할 점은 Quirks Mode라고 해서 모든 브라우저가 동일하게 렌더링 하는것은 아니라는 점 이다. 브라우저마다 Quirks Mode 상태일때 호환시키려고 하는 요소들이 각각 다르다.

예를들면 Quirks Mode 상태일때 IE Box Model을 잘못 해석하지만 나머지 브라우저들은 Quirks Mode 상태라고 할지라도 Box Model에 대하여 표준을 준수하기 때문이다.  

 

Rendering Mode(Quirks & Strict)에 따른 주요 이슈별 표준 지원 현황.

렌더링 모드(DTD)를 전환했을 때 화면에 차이가 발생한다는 것은 해당 브라우저가 어떤 속성을 Quirks Mode 상태로 렌더링 했다는 뜻이고 렌더링 모드(DTD)가 전환될 때 렌더링의 차이가 없는 경우도 있다이런 경우는 해당 브라우저가 Quirks Mode 상태라고 할지라도 해당 속성에 대하여 W3C표준을 지원한다는 뜻이다.
 

S : W3C Standard
N : None Standard
 
Rendering Mode에 따른 주요 이슈별 표준 지원 현황(참조문서)
Browser
IE6
IE7
FF2
OP9
SF2
Mode
Quirks
Strict
Quirks
Strict
Quirks
Strict
Quirks
Strict
Quirks
Strict
width & padding, border
width값에 padding, border값이 포함되지 않는것이 표준
N
S
N
S
S
S
S
S
S
S
margin:0 auto
width값이 적용된 block-lebel 요소는 가운데로 정렬되는 것이 표준
N
S
N
S
S
S
S
S
S
S
.test:hover
가상선택자는 모든 선택자(type selector, id selector, class selector)와 조합될 수 있음
N
N
N
S
N
S
S
S
S
S


[출처] HERSHEY'S WEB PLANET  [HTML]What's the difference between standard mode and quirks mode?
댓글목록

등록된 댓글이 없습니다.