크로스브라우징(웹표준과 핵(hack), 기본값 초기화(reset))
HTML과 CSS를 공부하면서 웹표준, 크로스 브라우징(Cross Brwosing),
웹접근성, 핵(hack), 리셋(reset)이라는 단어를 자주 보는데요
HTML 기초 강좌를 처음 시작할 때만해도 이 단어에 대한 그림이 잘 그려지지 않았어요.
그래서 글쓰기를 망설이다가 중간 정리 차원해서 한 번 정리해 보았습니다
HTML 표준
한국에서는 서울말, 전라도말, 제주도말, 부산말 등이 있는데
서울말을 표준말이라고 정하고, 공식적인 문서에서 이 표준말로 의사소통을 합니다.
HTML언어 역시 마찬가지인데요. HTML은 여러 가지 방식으로 코드를 구현할 수 있기 때문에
여러 방언이 많았고, 그래서 W3C를 통해 HTML 공통 표준을 만들고자 하는 노력이 예전부터 있었답니다.
*W3C- HTML, CSS, 자바스크립트 등 웹 표준을 만드는 기관
브라우저
브라우저란 HTML언어를 번역해서 보여주는 도구라고 했습니다.
초기에는 넷스케이프(Netscape)라는 유료 브라우저가 90% 이상 시장 점유율을 보였는데,
이때 NS는 HTML 표준에 신경 쓸 필요가 없었겠죠.
오히려, 넷스케이프에서만 지원하는 요소들을 개발했다고 합니다..(다른 브라우저에서는 작동하지 않는)
나중에 마이크로소프트가 인터넷 익스플로러(Internet Explorer)로 브라우저 경쟁에 뛰어 들었는데
브라우저를 무료로 배포하면서 IE가 90%이상 시장을 점유하게 됩니다
IE 역시 초반에는 HTML 표준에 신경쓰지 않다가 IE 4, 5버전부터 점점 HTML 표준을 지원합니다..
하지만 IE 브라우저만 지원하는 요소들이 여전히 존재하고, 이건 모질라, 오페라, 넷스케이프 같은
다른 브라우저 역시 마찬가지라고 합니다
HTML 기초 (markup, 브라우저 종류/ XHTML, XML, HTML5, DHTML 차이)
웹 표준을 준수
W3C 표준을 따른다는 것은 모든 브라우저에서 볼 수 있는 웹사이트를 만든다는 의미입니다..
웹 표준은 HTML 접근성과 시멘틱 HTML 가이드라인을 충족해야 하는데,
웹 접근성은 W3C의 '웹 콘텐츠 접근성 가이드라인'에 기반합니다.
오늘날 HTML 표준은 HTML4와 XHTML인데, 현재 모든 브라우저가 HTML4를 지원합니다.
가장 최신 버전으로는 HTML5가 있는데, 대부분의 브라우저가 HTML5의 대부분의 특징들을 지원하고 있습니다.
크로스 브라우징(Cross Browsing)과 버전 호환성(backward compatibility)
크로스 브라우징이란 브라우저 간의 상호 호환성을 말하며
버전 호환성은, 예를 들어 IE7, IE8, IE9같은 버전 간의 호환성이라고 보면 됩니다.
버전 호환성이란 예전에 사용하는 기능을 계속 유지할 수 있도록 해주는 것.
컴퓨터마다 운영체제(OS)나 HTML를 렌더링하는 방식 등이 다르므로
모든 브라우저에서 100% 똑같은 화면을 보이게 하는 것은 불가능한데요.
아래를 준수하면 어느 정도 통일된 화면을 만들 수 있습니다.
1)웹표준 준수
2)브라우저 기본값의 초기화(reset)
브라우저 기본값의 초기화 리셋(reset.css)의 개념
3)핵(hack) 또는 조건부 주석(Conditional comments)의 사용
위의 1) 2) 방법을 해도 안 될 경우 사용하는 것이 바로 핵(hack)인데요
예를 들어 IE일 경우는 A 스타일
FireFox일 경우 B스타일
Opera일 경우 C 스타일을 적용하는 코드를 작성하는 것입니다.
/***** 선택자 핵의 예(Selector Hacks) ******/
/* IE6 and below */
* html #uno { color: red }
/* IE7 */
*:first-child+html #dos { color: red }
/* IE7, FF, Saf, Opera */
html>body #tres { color: red }
/* IE8, FF, Saf, Opera (Everything but IE 6,7) */
html>/**/body #cuatro { color: red }
/* Opera 9.27 and below, safari 2 */
html:first-child #cinco { color: red }
/***** Selector Hacks ******/
/***** 속성 핵의 예(Attribute Hacks) ******/
/* IE6 */
#once { _color: blue }
/* IE6, IE7 */
#doce { *color: blue; /* or #color: blue */ }
/* Everything but IE6 */
#diecisiete { color/**/: blue }
/* IE6, IE7, IE8 */
#diecinueve { color: blue\9; }
Conditional comments(조건부 주석)
CC는 IE에서만 작동합니다
IE 구 버전들은 화면을 올바로 표시하기 위해 이 조건적 주석을 첨가하는 것이 좋다고 하네요.
(조건부 주석은 이 목적으로 고안되었으니까요)
하지만 CC는 IE9까지만 지원하며 IE10이상에서는 CC를 인식하지 못합니다.
CC는 엄밀히 말해서는 HACK이지만(일부 브라우저에 특별한 스타일을 주도록 하는 목적이기에)
CC는 브라우저 핵에 기초하지 않고 의도된 특징에 기초하기에, 사용하기에 더 안전하다고 합니다.
되도록 CSS를 통해 해결 방법을 찾아본 후 방법이 없을 때 이 CC와 HACK을 이용하는 게 좋다고 합니다.
Conditional comments(조건적 주석) 구문
1.기본 구조는 html 주석과 같음
<!-- -->
html, css, javascript 주석 처리 방법
2. 다른 브라우저에서는 이 부분을 주석으로 보고 무시하지만
IE는 이 부분을 인식하도록 프로그램 되어 있음.
<!-- [if IE]>
만일 IE라면 이란 뜻..
3. CC 구문은 html 주석 구조이기 때문에 css가 아닌 html에 포함되어야 함.
4. 하지만 <link> 태그를 이용해 외부 스타일 시트를 참조할 수도 있음.
예:
<!--[if IE]>
<link rel="stylesheet" type="text/css" href="all-ie-only.css" />
<![endif]-->
[html 기초] head 에 들어가는 태그 (title, style, script, meta 태그)
Conditional comments(조건적 주석) 사용 예
<p>
<!--[if IE]>
이 브라우저는 IE입니다<br />
<![endif]-->
<!--[if IE 6]>
이 브라우저는 IE 6입니다<br />
<![endif]-->
<!--[if IE 7]>
이브라우저는 IE 7입니다<br />
<![endif]-->
<!--[if IE 8]>
이 브라우저는 IE 8입니다<br />
<![endif]-->
<!--[if IE 9]>
이 브라우저는 IE 9입니다<br />
<![endif]-->
<!--[if gte IE 8]>
이 브라우저는 IE 8이상 입니다<br />
<![endif]-->
<!--[if lt IE 9]>
이 브라우저는 IE 9 미만입니다<br />
<![endif]-->
<!--[if lte IE 7]>
이브라우저는 IE 7 이하입니다<br />
<![endif]-->
<!--[if gt IE 6]>
이브라우저는IE 6 초과입니다<br />
<![endif]-->
<!--[if !IE]> -->
이 브라우저는 IE 5-9가 아닙니다<br />
<!-- <![endif]-->
</p>
설명☞
! = not
!IE = not IE
gt = greater than 보다 큰
gte = greater than or equal 보다 크거나 같은
lt = less than 작은
lte = less than or equal 작거나 같은
위 코드를 실행하면 다음과 같이 나옵니다.
구글 크롬 실행 화면
인터넷 익스플로러 실행화면
크로스브라우징과 웹표준과 핵(hack)에 대해 간략하게 살펴보았는데요
다음 글에서는 핵 사용법에 대해 자세히 다뤄 보겠습니다~
「 참조 사이트 」
http://www.quirksmode.org/css/condcom.html
http://css-tricks.com/snippets/css/browser-specific-hacks/
http://www.websitecodetutorials.com/code/ie/safe-ie6-ie7-ie8-ie9-css-hacks.php
http://www.mozilla.or.kr/docs/web-developer/standard/crossbrowsing.pdf
http://html.net/tutorials/html5/lesson14.php
「 관련글 」
비표준 모드quirks mode, 표준 모드 standards mode 차이와 DOCTYPE
DOCTYPE 선언하는 이유와 버전별 선언 정리 (HTML5, HTML 4, XHTML)
'html' 카테고리의 다른 글
[html/css] iframe 태그 사용법 (1) | 2014.07.04 |
---|---|
[HTML,CSS 작성 규칙] 네이버는 이렇게 한다! HTML/CSS 코딩 컨벤션 (1) | 2014.06.22 |
[html/css]문서를 연결하는 a 태그 (href, title, target 속성) (9) | 2014.04.07 |
[html 기초] b, strong, em, i, cite, small 태그 (0) | 2014.03.18 |
[html 기초] 제목 태그 h1, h2, h3, h4, h5, h6 (0) | 2014.03.18 |
댓글