html - 조건부 주석
조건부 주석이란 HTML을 이용해 웹 사이트를 마크업할 때에 크로스 브라우징(모든 웹 브라우저간에 동일한 페이지를 출력하기 위하여 마크업을 편집하거나 CSS의 핵을 이용하는 방법 등을 말한다.)을 할 경우에 HTML의 주석 태그를 이용하여서 인터넷 익스플로러에 대해 적용하기 위한 특수한 형식의 주석이다.
목차[숨기기] |
[편집]조건부 주석 사용 예제
다음은 조건부 주석을 사용하여 마크업한 예제이다.
<!--[If IE 6]>
<script type="text/javascript">
alert("Please Upgrade Your BROWSER !");
</script>
<![endif]-->
[편집]조건부 주석 사용을 위한 문법
| 주석의 형식 | 문법에 맞게 마크업한 예제 |
|---|---|
| 표준적인 주석의 형식 | <!-- 주석의 내용--> |
| 조건부 주석 미지원 브라우저에 대해서 조건부 주석을 표시하지 않는 형태 | <!--[If 조건]> 마크업할 내용 <[endif]--> |
| 조건부 주석 미지원 브라우저에 대해서 조건부 주석을 그대로 출력하는 형태 | <![If 조건]> 마크업할 내용 <[endif]> |
조건부 주석을 이용하면 주석 내부에 있는 내용은 지원하는 브라우저에서 조건이 참이면 마크업된 내용은 브라우저에 렌더링된다. 다음은 조건부 주석을 사용하기 위하여 조건부 주석의 조건에 대해서 안내한 표이다.
| 조건의 내용 | 예제 | 조건에 대한 설명 |
|---|---|---|
| IE | [If IE] | 버전의 높고 낮음을 막론하고 모든 버전의 IE에 대해서 참 값을 가지게 하는 조건이다. |
| IE Version | [If IE 7] | 특정 버전의 IE에서만 참 값을 가지게 하는 조건이다. |
| WindowsEdition | [If WindowsEdition] | 윈도에서 구동하는 IE라면 참 값을 가지게 하는 조건이다. |
| WindowsEdition Version | [If WindowsEdition 1] | 특정 버전의 IE에서만 참 값을 가지게 하는 조건이다. |
| true | [If true] | 항상 참 값을 가진다. |
| false | [If false] | 항상 거짓 값을 가진다. |
조건부 주석은 위의 표에 나열된 조건 외에도 세부적인 조건을 사용할 수가 있다. 다음은 그러한 조건들에 대하여 안내한 표이다.
| 조건의 내용 | 예제 | 조건에 대한 설명 |
|---|---|---|
| ! | [If !IE] | IE가 아닐 경우에 참 값을 가진다. |
| lt | [If lt IE 9] | 이 조건은 버전 값을 항상 필요로 하며 해당 버전 미만의 버전의 IE에서 항상 참 값을 가진다. (lt = less than) |
| lte | [If lte IE 9] | 이 조건 역시 버전 값을 항상 필요로 하며 해당 버전 이하의 버전에서 항상 참 값을 가진다. (lte = less than or equal) |
| gt | [If gt IE 6] | 이 조건은 버전 값을 항상 필요로 하며 해당 버전을 초과하는 버전의 IE에서 항상 참 값을 가진다. (gt = greater than) |
| gte | [If gte IE 6] | 이 조건 역시 버전 값을 항상 필요로 하며 해당 버전 이상의 버전의 IE에서 항상 참 값을 가진다. (gte = greater than or equal) |
| () | [If !(IE 7)] | 세부적인 표현을 위한 형식이다. 수학의 계산과 프로그래밍과 동일하게 괄호 안의 표현식부터 먼저 처리된다. |
| & | [if (gt IE 5)&(lt IE 7)] | 프로그래밍에서의 &&와 동일하게 "그리고"를 의미한다. |
| | | [if (IE 6)|(IE 8)] | 프로그래밍에서의 ||와 동일하게 "또는"을 의미한다. |
[편집]자바스크립트를 이용한 조건부 주석
Internet Explorer 4 이상에서는 자바스크립트를 이용한 조건부 주석을 지원한다. 다음은 그에 대한 예제이다.
<script type="text/javascript">
/*@cc_on
var Text = "당신은 IE 4 또는 그 이상의 버전을 사용중이군요 !";
document.writeln(Text);
@**/
</script>
다음은 IE의 Javascript 처리 엔진의 버전을 이용한 기법이다. 다음에 나오는 스크립트는 윈도 XP 서비스 팩 3에서의 IE 6일 경우의 엔진 버전이다.
@_jscript_version == 5.7
다음은 모든 버전에 IE에 적용하기 위하여 엔진의 버전을 이용하여 표현한 방법이다.
<script type="text/javascript">
/*@cc_on
@if (@_jscript_version == 10)
document.write("IE 10");
@elif (@_jscript_version == 9)
document.write("IE 9");
@elif (@_jscript_version == 5.8)
document.write("IE 8");
@elif (@_jscript_version == 5.7 && window.XMLHttpRequest)
document.write("IE 7");
@elif (@_jscript_version == 5.7 && !window.XMLHttpRequest)
document.write("IE 6"); // 엔진의 버전은 올라갔으나 엔진 내에 Ajax를 위한 기본 객체가 없는 경우이므로 IE 6에 해당한다.
@elif (@_jscript_version == 5.6)
document.write("IE 6");
@elif (@_jscript_version == 5.5)
document.write("IE 5.5");
@else
document.write("IE 5.5 이하의 버전의 브라우저를 사용중입니다. 업그레이드를 권장합니다.");
@end
@*/
</script>
[편집]함께 보기
출처 - http://ko.wikipedia.org/wiki/%EC%A1%B0%EA%B1%B4%EB%B6%80_%EC%A3%BC%EC%84%9D
IE 조건부 주석
출처 - http://www.oops4u.com/1823
ie에서는 html의 일부분을 다른 모든 브라우져에서는 인식되지 않고 ie의 특정버젼에서만 인식되게 하는 기능이 있습니다.
조건부 주석의 내용은 다른 브라우져에서는 무시되고 주석의 형태에 따라 ie의 각 버젼에서만 인식됩니다.
조건부 주석은 html에서만 넣을 수 있지만, 스타일시트를 ie 특정버젼에서만 인식되게 하려면 html문서의 head안에 link 요소 앞에 조건부 주석을 넣으면 됩니다.
그럼 조건부 주석의 원리를 볼까요? html 주석의 형태는 다음과 같습니다.
<!-- 이것을 주석입니다. -->
조건부 주석은 일반석 주석 문법에 추가적으로 인터넷 익스플로러에게 주석의 내용을 적용하거나 무시하라는 명령을 넣은 것입니다. 다른 브라우져는 일반 주석과 마찬가지로 이 조건부 주석을 무시하고 진행합니다. 조건부 주석은 html 주석의 시작 문법뒤에 대상 브라우져를 대괄호로 묶는 형태로 작성합니다. 예컨대 ie6만 대상으로 하려면 주석을 다음과 같은 형태로 작성해야 합니다.
<!-- [if IE 6] >
<link rel="stylesheet" type="text/css" href="ie6style.css">
<![endif]-->
조건부 주석 안에 넣을 수 있는 대상은 다음과 같습니다.
*[if IE] - ie5 이상의 모든 버젼을 대상으로 합니다.(조건부 주석 기능은 ie5 버젼부터 생겼습니다.)
*[if IE 5],[if IE 7] 등 - ie 라는 글자와 버젼 숫자 사이에 빈칸이 있습니다, 이것은 특정브라우져 버젼 한개를 대상으로 합니다.
*[if gt IE 6] - gt는 초과라는 뜻입니다. 이 예는 ie6 초과 버젼을 대상으로 합니다.
*[if gte IE 7] - gte는 이상 이라는 뜻입니다. 이 예는 ie7 이상 버젼을 대상으로 합니다.
*[if lt IE 8] - it는 미만 이라는 뜻입니다. 이 예는 ie8 미만 버젼을 대상으로 합니다.
*[if lte IE 6] - lte는 이하 라는 뜻입니다. 이 예는 ie6이하 버젼을 대상으로 합니다.
조건부 주석은 html안에서만 사용할 수 있고 css에는 이런 식으로 조건에 따른 주석을 넣을 수 없습니다. 그래서 링크된 스타일 시트 안에는 다음과 같은 조건부 주석을 넣지 못합니다.
<!-- [if IE 6] >
p {width:160px;}
<![endif]-->
출처 - http://siraon.com/xe/314