웹표준 DOCTYPE과 DTD 그리고 Quirks Mode

황제낙엽 2011.02.10 11:44 조회 수 : 960

sitelink1 http://zine.standardmag.org/ 
sitelink3 http://1 
sitelink4 http://ko 
extra_vars6 sitelink1 

Quirks Mode

웹을 사용할 수 있도록 해주는 브라우저.
이 시장을 장악하려는 브라우저 벤더들의 노력은 웹 사이트 제작자들의 코드까지 바꿔놓았다.
브라우저 제작사의 무기인 Quirks Mode란 무엇인지, 왜 중요한지 알아본다.

...

DOCTYPE 선언하지 않는다면 브라우저는 현재 페이지가 어떠한 HTML 버전을 사용하고 있는지 인식할 수 없기 때문에 호환모드(quirks mode)로 변환을 해서 rendering(화면구현)하게 된다.
브라우저가 알아서 호환모드로 변환하여 rendering하는 것을 어찌보면 브라우저가 똑똑하다고 생각할 수 있겠지만 실제론 그 반대이다. 마크업과 스타일시트의 조합으로 멋진 사이트를 제작했다 하더라도 호환모드로 rendering한 브라우저는 매번 똑같은 화면묘사를 보여준다는 보장을 할 수 없기때문에 사용자에게 큰 혼란을 가져다 줄 수도 있기 때문이다.

다음 코드는 W3C에서 권장하는 DOCTYPE 의 종류이다. (참고 : http://www.w3.org/QA/2002/04/valid-dtd-list.html)

HTML 4.01

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">

XHTML 1.0

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

XHTML 1.1

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

 ...

대부분의 랜더링 모드 이슈는 인터넷 익스플로러의 것만을 논하고 있는데 이는 인터넷 익스플로러의 표준, 호환모드가 랜더링에 있어서 가장 차이가 크기 때문이다.(부연 참고) 보통 알려져 있는 것 같이 패딩과 보더의 구현이 확연하게 다르고 모드의 변화에 따라서 몇몇 버그도 수정이 되기 때문에 인터넷 익스플로러를 위해서 랜더링 모드를 주의해서 선택해야 한다.
...

솔루션이 웹 에디터를 가지고 있으면 이 웹 에디터가 표준 랜더링 모드를 지원하는지, 표준 랜더링 모드에서 정상적으로 작동하는지를 미리 체크해 봐야 한다. 외산의 웹 에디터들의 경우 표준/호환 모드 양쪽에서 잘 작동하는 경우가 대부분이지만 국산 웹 에디터의 경우 호환 모드만 사용해야 하고 표준모드를 사용할 경우 화면이 제대로 출력이 되지 않고 기능이 작동하지 않는 경우가 대부분이다.
...

호환모드에서만 작동하는 스크립트 기능들이 있는지 검토해 보아야 한다. 가장 대표적인 예는 화면 옆에서 스크롤에 따라서 같이 움직이는 배너와 같은 기능이 있다. 화면의 스크롤이나 화면 크기를 참조해서 작동하는 스크립트의 경우 호환모드에서만 작동할 가능성이 높다. 마우스 클릭을 하면 레이어를 띄우는 스크립트나 달력에서 날짜를 선택하게 하는 스크립트 등도 이러한 경우에 속한다. 스크립트가 간단하면 표준모드에서 작동할 수 있게 수정해서 써도 되지만 그렇지 않은 경우에는 충분히 고려해야 한다.
...

DTD의 선택

1. Strict 이냐? Transitional 이냐?

2. HTML 이냐? XHTML 이냐?

 


- 부연 -

다음과 같은 메타 태그로 browser 의 document mode 를 설정할 수 있다.

<meta content="IE=Edge" http-equiv="X-UA-Compatible"/>

content 속성내의 IE 에 설정할 수 있는 값은 다음과 같다

  - 6 : IE6

  - 7 : IE7

  - 8 : IE8

  - 9 : IE9

  - Quirks : IE5

  - Edge : browser 버전에 따른다

 

스크립트로 정의한 meta 의 정보를 살펴볼 수 있다.

  -> document.getElementsByTagName('meta');

단, meta 정보는 페이지가 로드되면서 초기화되기 때문에 스크립트에서 조작할 수는 없다.

번호 제목 글쓴이 날짜 조회 수
128 Web Speech API Example (HTML5 STT & TTS) file 황제낙엽 2025.04.14 731
127 모바일과 데스크톱을 포괄하는 사용자의 터치 이벤트(onPointerTap) 황제낙엽 2025.04.09 648
126 Web RTC 에 관하여 황제낙엽 2024.11.20 626
125 div와 span의 차이점 (from Bing) 황제낙엽 2023.06.16 685
124 flexbox (flexible box layout) 황제낙엽 2023.02.27 641
123 characters from ISO 8859-1 황제낙엽 2020.11.10 36946
122 HTML FRAMESET 태그 예제 황제낙엽 2020.11.06 718
121 스마트 기기에서 여러 단말기의 해상도에 대응하기 위해 사용하는 HTML viewport meta tag 황제낙엽 2020.11.06 644
120 네이버의 무료 나눔 글꼴 황제낙엽 2020.05.06 1762
119 서버의 이미지나 txt 파일을 웹브라우저에서 다운로드하기 황제낙엽 2019.05.13 867
118 When to encode space to plus (+) or %20? (application/x-www-form-urlencoded) 황제낙엽 2019.04.15 917
117 HTTP/2 소개 황제낙엽 2018.10.12 693
116 글자, 문자, 텍스트, 글꼴, 서체, 폰트와 관련한 속성들 / font-size , 크기 단위(em, px, pt, rem), 절대 단위, 상대 단위 황제낙엽 2018.04.18 842
115 Pragma와 Cache-Control 황제낙엽 2018.03.28 845
114 로드밸런싱(L4)+아파치를 운영시 etag제거로 캐시 성능 최적화 file 황제낙엽 2018.03.28 944
113 HTTP 요청 헤더 III - If-Match, If-Modified-Since, If-None-Match file 황제낙엽 2018.03.27 726
112 재미난 로그인 페이지 만들기 file 황제낙엽 2018.03.26 1592
111 HTTP Cache-Control 요청 지시어 황제낙엽 2018.03.09 713
110 내 웹사이트의 속도를 빠르게! file 황제낙엽 2018.03.07 859
109 성능을 위한 초간단 HTTP 304 Not Modified 구현 방법 file 황제낙엽 2018.03.07 816