<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>NARADESIGN:BLOG &#187; 자바스크립트</title>
	<atom:link href="http://naradesign.net/wp/category/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://naradesign.net/wp</link>
	<description>웹표준, 웹접근성, 유니버설디자인, HTML, CSS, UI, UX, UD</description>
	<lastBuildDate>Fri, 12 Mar 2010 18:20:04 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CSS Tab Navigation + List Item Navigation.</title>
		<link>http://naradesign.net/wp/2010/03/11/1216/</link>
		<comments>http://naradesign.net/wp/2010/03/11/1216/#comments</comments>
		<pubDate>Thu, 11 Mar 2010 12:54:56 +0000</pubDate>
		<dc:creator>정찬명</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[웹 디자인]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[웹 표준]]></category>
		<category><![CDATA[자바스크립트]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Tab Design]]></category>
		<category><![CDATA[웹접근성]]></category>
		<category><![CDATA[웹표준]]></category>
		<category><![CDATA[유니버설디자인]]></category>

		<guid isPermaLink="false">http://naradesign.net/wp/2010/03/11/1216/</guid>
		<description><![CDATA[HTML/CSS와 jQuery를 이용하여 비교적 단순하지만 상당히 빈번하게 사용되는 Tab Navigation을 마크업 했습니다. 선으로 처리된 탭, 면으로 처리된 탭, 최근 게시물을 보여주는 목록 아이템 형태의 탭 디자인 입니다.&#160;
Lined Tab Navigation
Lined Tab Navigation : 예제를 새 창으로 보기
Faced Tab Navigation
Faced Tab Navigation : 예제를 새 창으로 보기
List Item Navigation
List Item Navigation : 예제를 새 창으로 보기
Tab Navigation [...]]]></description>
			<content:encoded><![CDATA[<p>HTML/CSS와 jQuery를 이용하여 비교적 단순하지만 상당히 빈번하게 사용되는 Tab Navigation을 마크업 했습니다. 선으로 처리된 탭, 면으로 처리된 탭, 최근 게시물을 보여주는 목록 아이템 형태의 탭 디자인 입니다.&nbsp;</p>
<h3 id="h1268310897684">Lined Tab Navigation</h3>
<div class="iframe" style="display: block; "><iframe frameborder="0" width="100%" style="display: block; height: 114px; " src="http://naradesign.net/ouif/uio/navigation/horizontal/linedTab/xhtml.html" title="Lined Tab Navigation : 예제를 새 창으로 보기"></iframe><span><a target="_blank" href="http://naradesign.net/ouif/uio/navigation/horizontal/linedTab/xhtml.html">Lined Tab Navigation : 예제를 새 창으로 보기</a></span></div>
<h3 id="h1268311287656">Faced Tab Navigation</h3>
<div class="iframe" style="display: block; "><iframe frameborder="0" width="100%" style="display: block; height: 127px; " src="http://naradesign.net/ouif/uio/navigation/horizontal/facedTab/xhtml.html" title="Faced Tab Navigation : 예제를 새 창으로 보기"></iframe><span><a target="_blank" href="http://naradesign.net/ouif/uio/navigation/horizontal/facedTab/xhtml.html">Faced Tab Navigation : 예제를 새 창으로 보기</a></span></div>
<h3 id="h1268311652478">List Item Navigation</h3>
<div class="iframe" style="display: block; "><iframe frameborder="0" width="100%" style="display: block; height: 215px; " src="http://naradesign.net/ouif/uio/navigation/horizontal/listTab/xhtml.html" title="List Item Navigation : 예제를 새 창으로 보기"></iframe><span><a target="_blank" href="http://naradesign.net/ouif/uio/navigation/horizontal/listTab/xhtml.html">List Item Navigation : 예제를 새 창으로 보기</a></span></div>
<h3 id="h1268311837046">Tab Navigation 예제의 특징</h3>
<ul>
<li>중첩 목록(ul&gt;li&gt;ul&gt;li)을 이용한 탭 네비게이션 예제.</li>
<li>목록의 계층 구조가 논리적으로 마크업 되어 있다.</li>
<li>키보드만으로도 접근이 가능하고 키보드 접근 순서가 논리적으로 처리되어 있다.</li>
<li>jQuery 사용.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://naradesign.net/wp/2010/03/11/1216/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Vertical CSS Navigation Bar.</title>
		<link>http://naradesign.net/wp/2010/03/10/1212/</link>
		<comments>http://naradesign.net/wp/2010/03/10/1212/#comments</comments>
		<pubDate>Wed, 10 Mar 2010 13:15:47 +0000</pubDate>
		<dc:creator>정찬명</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[웹 디자인]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[웹 표준]]></category>
		<category><![CDATA[자바스크립트]]></category>
		<category><![CDATA[CSS Navigation Bar]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://naradesign.net/wp/2010/03/10/1212/</guid>
		<description><![CDATA[얼마 전 공유했던 &#8216;CSS Navigation Bar&#8216;는 &#8216;수평+서브메뉴 드롭다운&#8217; 네비게이션 이었는데요. 오늘 공유하는 것은 &#8216;수직+서브메뉴 드롭다운&#8217; 네비게이션 입니다. 수평 메뉴보다 수직 메뉴가 모든 면(HTML/CSS/JS)에서 코드가 더 간결하고 만들기도 쉽네요.
예제를 새 창에서 보기
특징

중첩 목록(ul&#62;li&#62;ul&#62;li) 구조로 마크업 했습니다.
키보드만으로도 조작이 가능하고 키보드의 접근 순서는 논리적으로 처리되어 있습니다.
서브메뉴 토글에 jQuery의 .slideDown() 및 .slideUp() 효과를 사용 했습니다.
이미지를 한 번 사용 했습니다.

유의사항
간혹 [...]]]></description>
			<content:encoded><![CDATA[<p>얼마 전 공유했던 &#8216;<a target="_self" href="http://naradesign.net/wp/2010/02/11/1185/">CSS Navigation Bar</a>&#8216;는 <b>&#8216;수평+서브메뉴 드롭다운&#8217;</b> 네비게이션 이었는데요. 오늘 공유하는 것은 <b>&#8216;수직+서브메뉴 드롭다운&#8217;</b> 네비게이션 입니다. 수평 메뉴보다 수직 메뉴가 모든 면(HTML/CSS/JS)에서 코드가 더 간결하고 만들기도 쉽네요.</p>
<div style="display: block;" class="iframe"><iframe frameborder="0" width="100%" title="예제를 새 창에서 보기" src="http://naradesign.net/ouif/uio/navigation/vertical/bar/xhtml.html" style="display: block; height: 331px;"></iframe><span><a target="_blank" href="http://naradesign.net/ouif/uio/navigation/vertical/bar/xhtml.html">예제를 새 창에서 보기</a></span></div>
<h3 id="h1268225323246">특징</h3>
<ul>
<li>중첩 목록(ul&gt;li&gt;ul&gt;li) 구조로 마크업 했습니다.</li>
<li>키보드만으로도 조작이 가능하고 키보드의 접근 순서는 논리적으로 처리되어 있습니다.</li>
<li>서브메뉴 토글에 jQuery의 .slideDown() 및 .slideUp() 효과를 사용 했습니다.</li>
<li>이미지를 한 번 사용 했습니다.</li>
</ul>
<h3 id="h1268225579696">유의사항</h3>
<p>간혹 이런 수직 메뉴의 서브 메뉴 펼침 동작을 <b>onmouseover</b> 이벤트 헨들러로 처리하는 경우가 있는데요. 그런 경우 사용성이나 접근성이 정말 나빠집니다.&nbsp;</p>
<p>사용성이 나빠지는 이유는 아래쪽에 있는 메뉴를 선택하기 위하여 링크 위를 <b>onmouseover</b> 하는 순간 해당 링크의 서브 메뉴가 펼쳐지는데 이는 보통 원치 않는 동작이기 때문입니다.&nbsp;</p>
<p>접근성이 나빠지는 이유는 마우스와 동등하게 키보드가 접근할 수 있도록 <b>onmouseover</b> 헨들러와 <b>onfocus</b> 헨들러를 병행해서 작성하지 않는 경우 입니다. 이런 경우 키보드가 서브 메뉴를 펼칠 수 없기 때문에 키보드 사용자는 서브 메뉴에 접근할 수 없습니다. <b>onmouseover</b> 헨들러를 사용했다면 반드시 <b>onfocus</b> 헨들러를 병행 작성하여 동등한 기능을 처리할 수 있도록 해야 합니다.</p>
<p>따라서 수직 메뉴를 드롭다운 형태로 열고 닫는 오늘의 예제와 같은 경우&nbsp;<b>onmouseover</b> 이벤트 헨들러 사용은 절대적으로 피하는 것이 좋고 <b>onmouseover</b> 이벤트 헨들러 사용은 보편적인 다른 모든 경우에도 최소화 하는 것이 좋습니다.</p>
]]></content:encoded>
			<wfw:commentRss>http://naradesign.net/wp/2010/03/10/1212/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		</item>
		<item>
		<title>Modal Windowed Login UI.</title>
		<link>http://naradesign.net/wp/2010/03/04/1199/</link>
		<comments>http://naradesign.net/wp/2010/03/04/1199/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 14:47:40 +0000</pubDate>
		<dc:creator>정찬명</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[XE]]></category>
		<category><![CDATA[웹 기획]]></category>
		<category><![CDATA[웹 디자인]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[웹 표준]]></category>
		<category><![CDATA[자바스크립트]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[웹접근성]]></category>
		<category><![CDATA[웹표준]]></category>
		<category><![CDATA[유니버설디자인]]></category>

		<guid isPermaLink="false">http://naradesign.net/wp/2010/03/04/1199/</guid>
		<description><![CDATA[오늘은 XE에 사용하려고 모달 윈도우 처리된 로그인 UIO(User Interface Object)를 하나 만들었습니다. jQuery를 이용해서 스크립트도 직접 작성해 봤는데 잘 한건지 한 번 봐주시면 좋겠네요.&#160;
미리 알려드립니다만 저는 주로 인터렉션을 프로토타이핑 해서 보여줄 목적으로 자바스크립트를 작성하기 때문에 제 블로그에서 보여드리는 예제 코드가 모두 XE에 반영되는 것은 아닙니다.

예제를 새 창으로 보기
HTML

&#8216;LOG-IN&#8217; 링크에 accesskey 속성을 사용. &#8216;Alt+L&#8217; 또는 &#8216;Alt+Shift+L&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>오늘은 XE에 사용하려고 모달 윈도우 처리된 로그인 UIO(User Interface Object)를 하나 만들었습니다. jQuery를 이용해서 스크립트도 직접 작성해 봤는데 잘 한건지 한 번 봐주시면 좋겠네요.&nbsp;</p>
<p>미리 알려드립니다만 저는 주로 인터렉션을 프로토타이핑 해서 보여줄 목적으로 자바스크립트를 작성하기 때문에 제 블로그에서 보여드리는 예제 코드가 모두 XE에 반영되는 것은 아닙니다.</p>
<div style="display: block;" class="iframe"><iframe frameborder="0" width="100%" title="예제를 새 창으로 열기" src="http://naradesign.net/ouif/uio/login/mw/xhtml.html" style="display: block; height: 336px;"></iframe></div>
<p><a target="_blank" href="http://naradesign.net/ouif/uio/login/mw/xhtml.html">예제를 새 창으로 보기</a></p>
<h3 id="h1267712226002">HTML</h3>
<ul>
<li>&#8216;LOG-IN&#8217; 링크에 accesskey 속성을 사용. &#8216;Alt+L&#8217; 또는 &#8216;Alt+Shift+L&#8217; 키를 사용하면 링크에 직접 접근.</li>
<li>논리적인 키보드 접근 순서. 로그인 레이어를 열거나 닫더라도 포커스는 초기화 되지 않고 문맥에 알맞게 순서를 유지.</li>
</ul>
<h3 id="h1267711812402">CSS</h3>
<ul>
<li>화면 전체를 덮는 반투명 레이어.</li>
<li>로그인 상자를 화면의 정 중앙에 배치.</li>
<li>서밋 버튼을 텍스트로 처리해서 텍스트를 교체할 수 있음.</li>
</ul>
<h3 id="h1267711822626">Javascript</h3>
<ul>
<li>&#8216;LOG-IN&#8217; 링크를 클릭해서 모달 윈도우 처리된 레이어 띄우기.</li>
<li>인풋에 포커스가 들어가거나 빠질 때 &#8216;레이블&#8217; 텍스트를 숨기거나 보여주기.</li>
<li>&#8216;로그인 유지&#8217; 항목에 체크하면 경고문 보여주기.</li>
<li>&#8216;ID/PW&#8217;를 입력하지 않았을 때 상황에 맞는 알럿 띄우기.</li>
<li>&#8216;Open ID&#8217; 링크를 클릭하면 오픈 아이디 화면으로 전환하기.</li>
<li>&#8216;ESC&#8217;키를 누르거나 &#8216;여백&#8217; 또는 &#8216;X&#8217; 버튼을 클릭하면 창 닫기.</li>
</ul>
<h3 id="h1267713492795">P.S.</h3>
<p>저는 얼마 전부터 <a target="_self" href="http://www.textyle.kr/">텍스타일</a>에서 글을 쓰고 있습니다. 여러분이 만약 이 글을 <a target="_self" href="http://naradesign.net/">제 워드프레스</a>에서 보셨다면 배달된 글을 보고 계신 겁니다. 텍스타일에서 작성한 글은 워드프레스, 미투데이, 트위터 등으로 자동으로 배달 된답니다. 번거롭게 퍼다 나르고 다닐 일이 없어서 좋네요. 텍스타일 한 번 사용해 보세요. 즐거운 글쓰기 경험도 해 볼겸 해서 말이죠. ^^</p>
]]></content:encoded>
			<wfw:commentRss>http://naradesign.net/wp/2010/03/04/1199/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>CSS Drop Down : Emulate Select/Option.</title>
		<link>http://naradesign.net/wp/2010/02/18/1192/</link>
		<comments>http://naradesign.net/wp/2010/02/18/1192/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 17:37:28 +0000</pubDate>
		<dc:creator>정찬명</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[웹 기획]]></category>
		<category><![CDATA[웹 디자인]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[웹 표준]]></category>
		<category><![CDATA[자바스크립트]]></category>

		<guid isPermaLink="false">http://naradesign.net/wp/2010/02/18/1192/</guid>
		<description><![CDATA[서식 제어 요소(Form Control Element)를 디자인 하는 것은 상황에 따라 접근성을 떨어뜨리는 경우가 있기 때문에 제한되어야 하고 신중하게 사용해야 합니다. 이미 이전에 포스팅을 했지만 다시 한번 환기하는 차원에서 제한되어야 하는 서식 요소들은 어떤 것들이 있는지 살펴보겠습니다.
&#160;

스타일 변경이 제한된 서식 제어 요소들


HTML Markup
View




input type=&#34;checkbox&#34;




input type=&#34;radio&#34;




input type=&#34;file&#34;




input type=&#34;hidden&#34;
화면 출력 안됨


select, option


       [...]]]></description>
			<content:encoded><![CDATA[<p>서식 제어 요소(Form Control Element)를 디자인 하는 것은 <a href="http://naradesign.net/wp/2008/10/11/159/" target="_self">상황에 따라 접근성을 떨어뜨리는 경우가 있기 때문에 제한되어야</a> 하고 신중하게 사용해야 합니다. 이미 이전에 포스팅을 했지만 다시 한번 환기하는 차원에서 제한되어야 하는 서식 요소들은 어떤 것들이 있는지 살펴보겠습니다.</p>
<p>&nbsp;</p>
<table border="1" style="border-width: 1px 0px 0px 1px; border-top: 1px solid rgb(204, 204, 204); border-left: 1px solid rgb(204, 204, 204); font-family: AppleGothic,나눔고딕,NanumGothic,'맑은 고딕','Malgun Gothic',돋움,Dotum,굴림,Gulim,sans-serif; font-size: 1em; margin-bottom: 15px;">
<caption style="padding: 0px 0px 0.5em; text-align: left; font-weight: bold;">스타일 변경이 제한된 서식 제어 요소들</caption>
<thead>
<tr>
<th style="border-width: 0px 1px 1px 0px; border-right: 1px solid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); padding: 2px 5px; text-align: left; vertical-align: top; background-color: rgb(244, 244, 244);" scope="col">HTML Markup</th>
<th style="border-width: 0px 1px 1px 0px; border-right: 1px solid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); padding: 2px 5px; text-align: left; vertical-align: top; background-color: rgb(244, 244, 244);" scope="col">View</th>
</tr>
</thead>
<tbody>
<tr>
<th style="border-width: 0px 1px 1px 0px; border-right: 1px solid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); padding: 2px 5px; text-align: left; vertical-align: top; background-color: rgb(244, 244, 244);" scope="row">input type=&quot;checkbox&quot;</th>
<td style="border-width: 0px 1px 1px 0px; border-right: 1px solid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); padding: 2px 5px; text-align: left; vertical-align: top;">
<input type="checkbox" style="font-family: AppleGothic,나눔고딕,NanumGothic,'맑은 고딕','Malgun Gothic',돋움,Dotum,굴림,Gulim,sans-serif; font-size: 1em;" /></td>
</tr>
<tr>
<th style="border-width: 0px 1px 1px 0px; border-right: 1px solid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); padding: 2px 5px; text-align: left; vertical-align: top; background-color: rgb(244, 244, 244);" scope="row">input type=&quot;radio&quot;</th>
<td style="border-width: 0px 1px 1px 0px; border-right: 1px solid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); padding: 2px 5px; text-align: left; vertical-align: top;">
<input type="radio" style="font-family: AppleGothic,나눔고딕,NanumGothic,'맑은 고딕','Malgun Gothic',돋움,Dotum,굴림,Gulim,sans-serif; font-size: 1em;" /></td>
</tr>
<tr>
<th style="border-width: 0px 1px 1px 0px; border-right: 1px solid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); padding: 2px 5px; text-align: left; vertical-align: top; background-color: rgb(244, 244, 244);" scope="row">input type=&quot;file&quot;</th>
<td style="border-width: 0px 1px 1px 0px; border-right: 1px solid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); padding: 2px 5px; text-align: left; vertical-align: top;">
<input type="file" style="font-family: AppleGothic,나눔고딕,NanumGothic,'맑은 고딕','Malgun Gothic',돋움,Dotum,굴림,Gulim,sans-serif; font-size: 1em;" /></td>
</tr>
<tr>
<th style="border-width: 0px 1px 1px 0px; border-right: 1px solid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); padding: 2px 5px; text-align: left; vertical-align: top; background-color: rgb(244, 244, 244);" scope="row">input type=&quot;hidden&quot;</th>
<td style="border-width: 0px 1px 1px 0px; border-right: 1px solid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); padding: 2px 5px; text-align: left; vertical-align: top;">화면 출력 안됨</td>
</tr>
<tr>
<th style="border-width: 0px 1px 1px 0px; border-right: 1px solid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); padding: 2px 5px; text-align: left; vertical-align: top; background-color: rgb(244, 244, 244);" scope="row">select, option</th>
<td style="border-width: 0px 1px 1px 0px; border-right: 1px solid rgb(204, 204, 204); border-bottom: 1px solid rgb(204, 204, 204); padding: 2px 5px; text-align: left; vertical-align: top;">
<select style="font-family: AppleGothic,나눔고딕,NanumGothic,'맑은 고딕','Malgun Gothic',돋움,Dotum,굴림,Gulim,sans-serif; font-size: 1em;" name="select">
            <option>Option</option></select>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<h3 id="h1266424559111">서식 제어 요소의 디자인을 제한하는 이유</h3>
<p>이런 서식 제어 요소들의 디자인을 변경하는 것은 일단 브라우저들이 지원하지 않습니다. 이런 이유 때문에 이것을 디자인 하려는 시도는 실제로는 기능하지 않는 가짜 마크업을 남발하게되고 웹 접근성을 떨어뜨리는 요인으로 작용합니다. 하나의 콘트롤을 디자인 하기 위하여 화면에 보이는 마크업과 실제로 기능을 수행하는 마크업을 각각 따로 작성하게 되면 화면낭독기 사용자들은 화면 표시를 위한 가짜 마크업 때문에 곤경에 빠지는 상황이 연출됩니다.</p>
<p>그리고 간혹 단순한 텍스트 링크 기능을 수행함에도 불구하고<br />
<input type="radio" />라디오 버튼을 장식적인 요소로 사용한 다음 라디오 콘트롤에 자바스크립트를 입혀서 페이지 이동을 처리하는 고품격(?) 사용자 경험을 제공하기도 하는데 매우 잘못된 방법중의 하나 입니다.</p>
<p>모든 서식 제어 요소들은 사용자가 &#8216;전송&#8217; 버튼을 누르기 직전까지 아무짓도 하지 않고 기다려야 할 의무가 있습니다. 왜냐하면 그것이 바로 서식 제어 요소들의 올바른 사용법이고 시각 장애인들은 그런 표준화된 그리고 전통적인 사용자 인터렉션에 의지해서 웹을 탐색하고 있기 때문입니다.</p>
<blockquote class="citation">
<p>&quot;라디오 버튼을 눌렀을 뿐인데 페이지가 이동할 줄은 몰랐어요. 저는 전송 버튼을 누르지도 않았거든요.&quot;</p>
</blockquote>
<h3 id="h1266424626801">&lt;select&gt; 콘트롤을 본래 목적에 맞게 사용하기</h3>
<p>한편 서식 제어 요소를 사용할 때 사용자 입력을 전송하는데 쓰지 않았다고 해서 무조건 틀렸다고 말할 수도 없습니다. CSS가 일반적으로 널리 퍼지기 이전에 서식 제어 요소들은 다른 HTML 요소들이 흉내낼 수 없는 효과적인 UI 콘트롤을 제공했기 때문에 그 이점만을 취하기 위한 활용사례가 많았습니다. 현재까지도 흔하게 볼 수 있는 예가 바로 &lt;select&gt; 콘트롤 입니다. 본래의 목적은 단일 또는 다중 선택된 사용자의 선택값을 서버측에 전송하기 위한 목적이었지만 &#8216;패밀리 사이트 바로가기, 유관 기관으로 이동&#8217;과 같이 단순하게 텍스트 링크로 처리해도 될만한 UI에 지금까지도 여전히 &lt;select&gt; 요소를 사용하고 있습니다. 이 때 자바스크립트로 URL 값을 처리해서 넘기는 경우도 있고 서버측 스크립트로 값을 처리해서 넘기는 경우도 있는데 어느편이 더 유니버설한 설계 방법인지는 여러분이 직접 판단해 보시기 바랍니다.</p>
<p>하지만 한 발 더 나아가 저는 더 이상 &lt;select&gt; 콘트롤을 이용하여 페이지 이동하는 기법을 사용할 필요가 없다고 생각합니다. 자바스크립트나 서버측 스크립트를 작성해서 페이지를 이동하는 방법보다 더 쉬운 방법이 있기 때문입니다. CSS 배워서 이런데 써먹을 수 있습니다. &lt;select&gt; 콘트롤은 이제 그만 휴가 보내고 CSS에게 일을 시켜 보세요. &lt;select&gt; 요소의 드롭다운 콘트롤은 고작 &#8216;숨은 링크 목록&#8217;을 토글해서 보이거나 숨기는 인터렉션일 뿐입니다.</p>
<h3 id="h1266425081963">그럼에도 불구하고 &lt;select&gt; 콘트롤이 사랑받는 이유</h3>
<p>요소 본래의 목적에 맞지 않는 마크업과 복잡한 스크립트의 사용을 유발함에도 불구하고 &lt;select&gt; 콘트롤은 여전히 기획자, 디자이너, 개발자에게 사랑받고 있습니다. 왜 그럴까요?</p>
<ul>
<li>좁은 공간을 효과적으로 사용할 수 있기 때문에</li>
<li>클릭하면 숨은 목록을 볼 수 있는 전통적인 인터페이스로써 이미 대중에게 학습되었기 때문에</li>
<li>오랜 세월에 걸쳐 잘 작성된 레거시 코드가 있고 새로 만들 때 복사 후 붙여넣기만 하면 되니까</li>
</ul>
<p>정도로 요약할 수 있겠습니다. 결국 우리는 &lt;select&gt; 라는 콘트롤을 본래의 목적에 맞게 사용하되 &#8216;긴 직사각형의 우측 끝에 화살표가 달린 모양&#8217;만 취하면 되는 겁니다.</p>
<h3 id="h1266425651963">결론 : &lt;select&gt; 형태는 취하고 마크업은 버리자</h3>
<div style="display: block;" class="iframe"><iframe frameborder="0" width="100%" title="" src="http://naradesign.net/ouif/uio/select/xhtml.html" style="display: block; height: 230px;"></iframe></div>
<p><a href="http://naradesign.net/ouif/uio/select/xhtml.html" target="_blank">예제를 새 창에서 보기</a></p>
<p>위의 두 예제는 같은 모양을 하고 있지만 첫 번째 예제는 링크이고 두 번째 예제는 단일 선택을 위한 폼 콘트롤 입니다. 폼 콘트롤 우측에 &#8216;GO&#8217; 버튼이 보이시나요? &#8216;사용자가 폼을 전송하기 전까지는 아무짓도 하지 않아야 한다&#8217;는 원칙을 실천하기 위하여 존재하는 버튼 입니다. &#8216;GO&#8217; 버튼이 없으면 어떻게 되냐구요? 아마도 키보드 사용자는 다른 항목을 선택할 기회를 갖지 못하고 첫 번째 항목을 선택하는 순간 이미 다른 페이지로 이동되어 있거나 또는 전송 버튼을 찾느라 곤경에 빠질 것입니다. 저 &#8216;GO&#8217; 버튼이 있음으로 인해서 마우스를 사용하는 대부분의 사용자들은 불편함을 느낄 수도 있을 것입니다. 하지만 &#8216;누구나 사용&#8217;할 수 있도록 유니버설하게 개선되었기 때문에 &#8216;인류 행복의 총량&#8217;에는 큰 변화가 없을 것입니다.&nbsp;</p>
<p>다행히도 저렇게 단일 선택 옵션이 하나만 존재하는 경우 폼 대신 첫 번째 예제와 같이 링크로 처리할 수 있는 경우가 거의 대부분 입니다. 폼 대신 링크로 처리하게 되면 &#8216;GO&#8217; 버튼이 필요가 없기 때문에 모든 사람들이 더 기뻐할 것입니다. 링크 목록은 클릭하기 전까지 펼침 상태로 존재하고 Enter 키를 받아야만 페이지 이동을 하기 때문에 &#8216;GO&#8217; 버튼이 없어도 키보드만으로 제어를 할 수가 있죠.</p>
<p>위 제시된 예제는 처리해야 할 콘텐츠가 &#8216;링크&#8217; 인지 또는 &#8216;진짜 폼의 선택&#8217;을 위한 것인지 명확하게 이해한 다음 사용해야 합니다. 단순히 링크로 처리해야 할(처리해도 될) 항목을 두 번째 예제로 마크업 한다면 오늘 제 포스팅은 말짱 도루묵 입니다. 부디 의미와 목적에 맞는 마크업을 선택해서 사용해 주실것을 부탁 드립니다. 이번 예제도 <a href="http://mygony.com/" target="_self">행복한고니</a>로부터 도움을 받았습니다. 요즈음은 행복한고니가 짬짬이 알려주는 jQuery 덕분에 아주 즐거운 나날들을 보내고 있답니다. ^^</p>
]]></content:encoded>
			<wfw:commentRss>http://naradesign.net/wp/2010/02/18/1192/feed/</wfw:commentRss>
		<slash:comments>44</slash:comments>
		</item>
		<item>
		<title>CSS Navigation Bar.</title>
		<link>http://naradesign.net/wp/2010/02/11/1185/</link>
		<comments>http://naradesign.net/wp/2010/02/11/1185/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 15:38:46 +0000</pubDate>
		<dc:creator>정찬명</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[XE]]></category>
		<category><![CDATA[웹 기획]]></category>
		<category><![CDATA[웹 디자인]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[웹 표준]]></category>
		<category><![CDATA[자바스크립트]]></category>

		<guid isPermaLink="false">http://naradesign.net/wp/2010/02/11/1185/</guid>
		<description><![CDATA[최근 저희 팀에서는 ProjectXE 라는 것을 준비하고 있습니다. 이슈트래커 또는 버그 트래킹 시스템이라고 불리우는 종류의 프로그램이죠. 현재&#160;issuetrackerXE 라는 이름으로 배포되고 있는 모듈의 기능과 디자인을 조금 더 개선시킨 패키지 버전이라고 볼 수 있습니다. 제가 직접 기획도 했으니까 나중에 배포가 시작되면 피드백도 부탁드려야 겠네요.
이번에는 운이 좋게도 디자인팀으로부터 지원을 받았는데요. 이렇게 디자인팀으로부터 지원을 받은 디자인은 품질이 상당히 좋아서 [...]]]></description>
			<content:encoded><![CDATA[<p>최근 저희 팀에서는 ProjectXE 라는 것을 준비하고 있습니다. 이슈트래커 또는 버그 트래킹 시스템이라고 불리우는 종류의 프로그램이죠. 현재&nbsp;<a target="_self" href="http://issuetracker.xpressengine.net/">issuetrackerXE</a> 라는 이름으로 배포되고 있는 모듈의 기능과 디자인을 조금 더 개선시킨 패키지 버전이라고 볼 수 있습니다. 제가 직접 기획도 했으니까 나중에 배포가 시작되면 피드백도 부탁드려야 겠네요.</p>
<p>이번에는 운이 좋게도 디자인팀으로부터 지원을 받았는데요. 이렇게 디자인팀으로부터 지원을 받은 디자인은 품질이 상당히 좋아서 한 번 쓰고 말기에는 정말 아깝더라구요. 재 활용 가치가 있는 UI 콤포넌트는 가끔 처음부터 재 사용을 염두해 두고 설계를 합니다. 물론 시간이 무척 오래 걸리는 단점은 있지만 다른 누군가의 시간을 분명히 단축해 줄꺼라 믿고 있습니다.</p>
<p>오늘 공유해 드릴 UI 콤포넌트는 평범한 네비게이션 바 입니다. 이런 종류의 네비게이션은 너무 흔해서 일년에 열두번도 더 코딩을 하지만 항상 재 사용을 염두하지는 않았기 때문에 할 때마다 새로 만들고 처음부터&nbsp;다르게 코딩 합니다. 물론 디자인이 조금씩 달라지는 것도 이유가 있겠지만 다소 소모적인 부분이 있었던 것도 사실입니다. 보기에 평범해 보이지만 재 사용과 보편적 설계를 위해서 제가 이 네비게이션 바에 얼마나 많은 정성을 쏟았는지 한 번 설명드려 보겠습니다.</p>
<div class="iframe" style="display: block;"><iframe frameborder="0" width="100%" style="display: block; height: 200px;" src="http://naradesign.net/ouif/uio/navigation/horizontal/bar/xhtml.html" title="CSS Navigation Bar. 새 창으로 보기"></iframe><span>CSS Navigation Bar. <a target="_blank" href="http://naradesign.net/ouif/uio/navigation/horizontal/bar/xhtml.html">새 창으로 보기</a></span></div>
<h3 id="h1265811047234">보편적이고 사용성이 좋은</h3>
<p>수평 네비게이션은 보편적인 형태지만 하위 메뉴를 처리하는 방법에는 크게 두 가지 형태가 있습니다. 하위 메뉴를 <a target="_self" href="http://www.president.go.kr/kr/index.php">수평으로 늘어뜨리거나</a> 또는 위 예제와 같이 <a target="_self" href="http://www.whitehouse.gov/">수직으로 늘어뜨리거나</a>. 그런데 이 두 가지 형태의 메뉴 구조는 사용성이 크게 다릅니다. 하위 메뉴를 수직으로 늘어뜨리는 것이 사용성과 확장성이 훨씬 좋습니다.</p>
<p>하위 메뉴를 수평으로 열게 되면 사용자는 정확하게 선택하기 위하여 &#8216;L&#8217;자 모양으로 마우스 포인터를 이동시켜야 합니다. 게다가 하위 메뉴 영역을 벗어날 때 하위 메뉴가 사라지도록 처리하는 경우 사용성은 더 나빠집니다. 원하는 메뉴 링크까지 이동하려면 조심스럽게 마우스 포인터를 옮겨야 하니까요. 하위 메뉴를 수직으로 펼치면 마우스의 이동 괘적은 &#8216;I&#8217;자 모양을 그리게 되고 마우스를 옮기는 과정에서 메뉴가 닫힐 위험은 사라집니다.&nbsp;</p>
<h3 id="h1265811982648">웹 표준과 접근성을 지키는</h3>
<p>이런 메뉴 구조를 테이블 &lt;table&gt; 요소를 사용해서 마크업하면 의미에도 맞지 않고 접근성도 떨어집니다. 네비게이션 요소는 HTML로 표현할 때 &#8216;목록&#8217; 요소 &lt;ul&gt;, &lt;li&gt;로 마크업 해야 합니다. 동등한 수준의 내용이 같은 계층에서 여러번 반복 된다면 &#8216;목록&#8217;입니다. 시각장애인이 사용하는 화면 낭독기는 이런 목록에 대하여 목록의 &#8216;시작, 끝, 단계 그리고 항목의 개수&#8217;를 음성으로 알림으로써 목록에 대한 이해를 돕습니다. 상기 예제에서 &#8216;CSS X&#8217; 버튼을 누르면 네비게이션이 어떤 HTML 구조로 마크업 되어 있는지 확인할 수 있습니다. 이렇게 코딩된 네비게이션 바는 다음과 같은 장점을 갖습니다.</p>
<ul>
<li>상-하위 계층 관계가 논리적으로 처리되어 CSS를 지원하지 않거나 걷어낸 장치(예:모바일)에서도 이해하기 쉽습니다.</li>
<li>모든 항목에 키보드 접근이 가능하고 키보드 접근 순서가 의미있게 처리되어 있습니다.</li>
</ul>
<p>이 네비게이션 바는 키보드만을 사용할 수 밖에 없는 시각장애인과 지체장애인도 사용할 수 있습니다. 키보드만으로 탐색을 시도해 보세요.</p>
<h3 id="h1265813663055">유연하고 확장하기 좋은</h3>
<p>하위 메뉴의 개수가 상당히 많이 늘어나는 상황에서 수평으로 열리는 하위 메뉴는 필연적으로 줄바꿈을 동반하거나 메뉴의 개수를 제한하게 되지만 수직으로 열리는 메뉴는 그럴 필요가 없기 때문에 메뉴 데이터가 가변적인 상황에서 확장성이 더 좋습니다.</p>
<p>메뉴의 전체적인 너비는 레이아웃에 맞게 가변폭으로 조절되고 메뉴 항목의 너비도 메뉴 이름의 길이에 따라 모두 가변폭으로 처리되어 있습니다. 디자인 때문에 글자 개수를 자르거나 제한 할 필요가 없습니다.</p>
<p>네비게이션 바의 색상을 바꾸기 위해 새로 이미지를 컷팅할 필요가 없습니다. CSS 편집을 통해 배경색과 보더 색상만 변경해 주면 끝입니다. 은은하게 처리된 그라디언트 효과는 배경색상 위에 반투명 흰색 그라디언트 PNG 이미지를 덧붙이는 기법으로 처리 했습니다.</p>
<h3 id="h1265813998132">이미 널리 쓰이고 있는</h3>
<p><a target="_self" href="http://jquery.com/">jQuery</a> 자바스크립트 프레임웍을 사용했기 때문에 약간의 자바스크립트 코드를 추가하거나 변형하면 누구나 쉽게 사용할 수 있습니다. 물론 지금 그대로 사용해도 될만큼 이미 스크립트가 잘 처리되어 있습니다. 자바스크립트는 <a target="_self" href="http://mygony.com/">행복한고니</a>에 의해 처리 되었습니다.</p>
<h3 id="h1265815149574">브라우저 호환성</h3>
<p>다음과 같은 브라우저에서 테스트 되었고 호환성이 확보되어 있습니다.</p>
<ul>
<li>Internet Explorer 6</li>
<li>Internet Explorer 7</li>
<li>Internet Explorer 8</li>
<li>Firefox 3</li>
<li>Chrome 4</li>
<li>Safari 4</li>
<li>Opera 10</li>
</ul>
<p>이 네비게이션을 처리하기 위하여 테스트 했던 거의 모든 브라우저들의 버그를 다 만났던것 같습니다. 여러분이 보시기에 HTML 코드에 &#8216;이건 왜 이렇게 마크업을 했지?&#8217; 라고 의문이 든다면 그 부분이 바로 그 흔적 입니다. 특히 IE7 브라우저의 경우 링크 영역(width)을 제대로 렌더링하지 못하는 버그 때문에 상당히 고전을 했는데 결국 방법을 찾지 못하고 자바스크립트의 도움을 받아서 디버깅 했습니다. 코딩하는데 1.5일이 걸렸고 디버깅하는 시간도 1.5일이나 걸렸습니다. 3일동안 쳐다보고 있으니 아주 지겨워 죽겠더라구요.</p>
]]></content:encoded>
			<wfw:commentRss>http://naradesign.net/wp/2010/02/11/1185/feed/</wfw:commentRss>
		<slash:comments>57</slash:comments>
		</item>
		<item>
		<title>HTML DTD 명세서 읽기.</title>
		<link>http://naradesign.net/wp/2010/01/28/1165/</link>
		<comments>http://naradesign.net/wp/2010/01/28/1165/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 19:11:02 +0000</pubDate>
		<dc:creator>정찬명</dc:creator>
				<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[웹 표준]]></category>
		<category><![CDATA[자바스크립트]]></category>
		<category><![CDATA[DTD]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[xhtml]]></category>
		<category><![CDATA[웹표준]]></category>

		<guid isPermaLink="false">http://naradesign.net/wp/?p=1165</guid>
		<description><![CDATA[목차

명세의 시작과 끝
명세의 주석
연산 기호들
등장하는 용어들
본체와 변수
요소와 속성
요소 명세 읽기
속성 명세 읽기
참고

DTD에 표시된 URI(예: loose.dtd 또는 xhtml1-transitional.dtd)를 내려받아서 명세를 한 번이라도 열어보신 분들이라면 알 수 없는 낯선 문자들에 대한 당혹스러움을 감출 수 없었을 것입니다. HTML/XHTML의 문법 규칙들이 포함되어 있고 브라우저가 이것을 어떻게 해석해야 하는지에 대한 단서가 기록되어 있습니다. 만약 DTD가 없다면 여러분은 &#60;address&#62; 요소 안쪽에 [...]]]></description>
			<content:encoded><![CDATA[<h2>목차</h2>
<ol>
<li><a href="#a1">명세의 시작과 끝</a></li>
<li><a href="#a2">명세의 주석</a></li>
<li><a href="#a3">연산 기호들</a></li>
<li><a href="#a4">등장하는 용어들</a></li>
<li><a href="#a5">본체와 변수</a></li>
<li><a href="#a6">요소와 속성</a></li>
<li><a href="#a7">요소 명세 읽기</a></li>
<li><a href="#a8">속성 명세 읽기</a></li>
<li><a href="#a9">참고</a></li>
</ol>
<p>DTD에 표시된 URI(예: <a href="http://www.w3.org/TR/html401/loose.dtd">loose.dtd</a> 또는 <a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">xhtml1-transitional.dtd</a>)를 내려받아서 명세를 한 번이라도 열어보신 분들이라면 알 수 없는 낯선 문자들에 대한 당혹스러움을 감출 수 없었을 것입니다. HTML/XHTML의 문법 규칙들이 포함되어 있고 브라우저가 이것을 어떻게 해석해야 하는지에 대한 단서가 기록되어 있습니다. 만약 DTD가 없다면 여러분은 &lt;address&gt; 요소 안쪽에 어떤 요소가 허용되는지 알 수 없을 것입니다. &lt;address&gt; 요소 안쪽에는 블럭 요소를 허용하지 않지만 예외적으로 HTML 4.01 호환 모드(Transotional) DTD에서 블럭 요소인 &lt;p&gt; 요소를 허용합니다. 문법 검사기(<a href="http://validator.w3.org/">HTML Validator</a>)는 DTD를 근거로 문법을 검사하기 때문에 호환 모드에서 &lt;address&gt; 요소 안쪽의 &lt;p&gt;를 적법하다고 간주하며 HTML 4.01 엄격 모드(<a href="http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">strict.dtd</a>)에서는 적법하지 않다고 오류 메시지를 보여줄 것입니다. DTD는 HTML/XHTML 문서에 대한 가장 기초적인 명세로써 웹 브라우저가 HTML을 해석하는 기준이 되고 문법 검사기가 유효성을 판단하는 기준이 됩니다.&nbsp;</p>
<p>지금부터는 이해를 돕기 위하여 HTML 4.01 호환모드 DTD인 <a href="http://www.w3.org/TR/html4/loose.dtd">http://www.w3.org/TR/html4/loose.dtd</a>&nbsp;파일을 내려받은 후 화면에 열어놓거나 또는 <a href="http://www.w3.org/TR/1999/REC-html401-19991224/sgml/loosedtd.html ">웹 페이지 버전의 loose.dtd 페이지</a>(추천)를 열어놓은 다음  이 글과 번갈아 보면서 내용을 천천히 정독해 주시기 바랍니다. HTML 4.01 Transitional DTD를 기준으로 설명하겠습니다. 이 포스트는 내용은 조금 어렵지만 몇가지 낮선 단어들과 규칙들을 익힘으로써 HTML과 XHTML 명세를 다른 사람에게 물어보지 않고도 스스로 터득할 수 있는 근본적인 지식이 될 것입니다.</p>
<h2 id="a1">명세의 시작과 끝</h2>
<p>DTD에서 HTML 요소 및 속성에 대한 명세 구문은 여는 꺽쇠와 느낌표(&lt;!)로 시작하여 닫는 꺽쇠(&gt;)로 끝납니다.</p>
<blockquote><p>&lt;!&nbsp;<u>이곳에 명세가 들어갑니다</u>&nbsp;&gt;</p></blockquote>
<h2 id="a2">명세의 주석</h2>
<p>명세의 주석은 &#8212; 2회 연속 작성된 하이픈 &#8212; 문자 안쪽에 기술합니다. 주석 안쪽에 포함된 내용은 기계적으로 해석되지 않고 사람이 읽을 수 있도록 자연어 문장으로 처리되어 있습니다. 아래 첫 번째 주석은 순수한 주석문이고 두 번째 주석은 명세 안에 포함된 주석문 입니다. 주석은 한 줄 또는 여러줄이 될 수 있습니다.</p>
<blockquote><p>&lt;!&#8211; <u>이곳에 주석의 내용이 들어갑니다</u> &#8211;&gt;<br />
&lt;!&nbsp;이곳에 명세가 들어갑니다&nbsp;<strong>&#8211;</strong>&nbsp;<u>이곳에 주석의 내용이 들어갑니다</u>&nbsp;&#8211;&gt;</p></blockquote>
<h2 id="a3">연산 기호들</h2>
<p>연산 기호들은 주로 특정 요소가 자식 요소로써 어떤 요소들을 어떻게 허용하는지 정의할 때 사용합니다. 예를 들어 &lt;a&gt; 요소는 다른 인라인 요소들은 모두 허용하지만 예외적으로 자신과 동일한 요소인 &lt;a&gt; 요소만은 자식으로 둘 수 없다고 -(A) 선언되어 있는데 이러한 선언은 모두 연산자를 통해 표시 됩니다.&nbsp;</p>
<ul>
<li><strong>( &#8230; ) :</strong>&nbsp;연산 그룹의 범위</li>
<li><strong>A :</strong>&nbsp;A는 필수적이며 한 번만 사용할 수 있다</li>
<li><strong>A+ :</strong>&nbsp;A는 필수적이며 한 번 이상 사용해야 한다</li>
<li><strong>A? :</strong>&nbsp;A는 생략하거나 한 번만 사용할 수 있다</li>
<li><strong>A* :</strong>&nbsp;A는 생략하거나 한 번 이상 사용할 수 있다</li>
<li><strong>+(A) :</strong>&nbsp;추가적으로 A를 사용할 수 있다</li>
<li><strong>-(A) :</strong>&nbsp;예외적으로 A는 사용할 수 없다</li>
<li><strong>A | B :</strong>&nbsp;A 또는 B로써 순서에 무관하게 사용할 수 있다</li>
<li><strong>A, B :</strong>&nbsp;A 그리고 B는 순서를 지켜야 한다</li>
<li><strong>A &amp; B :</strong>&nbsp;A 그리고 B는 순서에 무관하다</li>
</ul>
<h2 id="a4">등장하는 용어들</h2>
<ul>
<li><strong>#PCDATA(Parsed Character Data)</strong><br />
    XML 해석기에 의하여 해석되는 문자 데이터를 의미 합니다. 텍스트와 HTML 요소들을 있는 그대로 브라우저로 보내는 것이 아니라 적절하게 렌더링하기 위하여 변환합니다. 예를 들면 &#8216;&lt;, &gt;&#8217; 기호는 요소의 시작 또는 끝으로 해석하고 &#8216;&amp;&#8217; 기호는 HTML 문자의 본체(Entity)가 시작되는 것으로 간주 합니다. 따라서 #PCDATA 안쪽에서 &#8216;&amp;&#8217; 기호를 해석하지 않고 화면에 그대로 표시하려면 HTML Entity 형식을 빌어 &#8216;&amp;amp;&#8217; 와 같이 작성해야 합니다.</li>
<li><strong>CDATA(Character Data)</strong><br />
    XML 해석기에 의하여 해석되지 않는 문자 데이터를 의미 합니다. CDATA 안쪽에서 표기하는 모든 문자는 해석기가 해석하지 않기 때문에 브라우저에 그대로 전달 됩니다. 부등호(&lt;, &gt;)와 연산자(&amp;) 사용이 많은 &lt;script&gt; 요소 안쪽에서 웹 브라우저가 이 기호들을 HTML 요소 또는 Entity가 시작되는 것으로 오해하는 것을 예방하기 위하여 CDATA 형식을 선언 &lt;![CDATA[ ... ]]&gt; 하기도 합니다.</li>
<li><strong>#REQUIRED</strong><br />
    반드시 요구되는.</li>
<li><strong>#IMPLIED</strong><br />
    생략 가능한. (생략하는 대신 웹 브라우저가 기본 값을 제공하거나 부모로부터 상속을 받기도 함)</li>
<li><strong>#FIXED</strong><br />
    주어진 값만 사용할 수 있는.</li>
</ul>
<h2 id="a5">본체와 변수</h2>
<p>DTD에서는 본체(Entity)와 변수(Parameter) 개념을 사용합니다. 본체란 변수의 실체(원래 모습)이며 변수는 본체를 대체하는 문자 입니다. &lt;!ENTITY&gt; 구문 안쪽에 선언된 내용들은 본체와 변수에 관한 선언 입니다.</p>
<blockquote><p>&lt;!<strong>ENTITY</strong>&nbsp;% &nbsp;<u>변수 이름</u>&nbsp;&nbsp;&quot;<u>변수의 실체</u>&quot;&gt;</p></blockquote>
<p>예를 들어 &lt;h1&gt;~&lt;/h6&gt; 요소는 %heading; 이라는 변수 이름의 실체 입니다. &lt;h1&gt;~&lt;h6&gt; 요소는 각각의 이름만 다를 뿐 각각의 요소는 모두 동일한 속성과 콘텐츠 모델(자식 요소)을 갖습니다. DTD에서는 같은 내용을 일일이 반복해서 열거하는 것을 피하기 위하여 &lt;h1&gt;~&lt;/h6&gt; 요소에 대하여 %heading; 이라는 변수를 선언했습니다. %heading;에 대한 실체는 문서 상단에 한 번 선언해 놓고 본문에서는 &lt;h1&gt;~&lt;h6&gt; 요소 대신에 %heading; 이라는 변수를 사용합니다. 다음 구문은 %heading; 이라는 변수와 본체를 선언하는 구문 입니다.</p>
<blockquote><p>&lt;!<strong>ENTITY</strong>&nbsp;% heading &quot;H1|H2|H3|H4|H5|H6&quot;&gt;</p></blockquote>
<p>다음 구문은 DTD 본문에서 %heading; 이라는 변수를 사용한 예 입니다. 퍼센트 &#8216;<strong>%</strong>&#8216; 기호로 시작하여 세미콜론 &#8216;<strong>;</strong>&#8216; 기호로 끝나는 것은 모두 변수이며 모든 변수들은 각각의 실체에 해당하는 본체가 문서 상단에 기술되어 있습니다. (%heading;)의 본체는 (H1|H2|H3|H4|H5|H6) 이므로 아래 구문은 &lt;h1&gt;~&lt;h6&gt; 요소의 명세를 기술하는 구문 입니다.</p>
<blockquote><p>&lt;!ELEMENT (<strong>%heading;</strong>)&gt;</p></blockquote>
<h2 id="a6">요소와 속성</h2>
<p>요소에 대한 명세는 &lt;!ELEMENT&gt; 안쪽에 선언되고 이 요소의 속성에 대한 명세는 &lt;!ATTLIST&gt; 안쪽에 선언 됩니다. &lt;!ELEMENT&gt; 구문이 등장하면 곧 관련된 &lt;!ATTLIST&gt; 구문이 자연스럽게 등장합니다.</p>
<blockquote><p>&lt;!<strong>ELEMENT</strong>&nbsp;이곳에 요소의 명세가 들어갑니다&gt;<br />
&lt;!<strong>ATTLIST</strong>&nbsp;이곳에 속성의 명세가 들어갑니다&gt;</p></blockquote>
<h2 id="a7">요소 명세 읽기</h2>
<p>요소의 명세는 다음과 같은 순서로 기술하는데 띄어쓰기를 이용해서 각각을 구분 합니다.&nbsp;</p>
<blockquote><p>&lt;!ELEMENT &nbsp;<u>요소 이름</u>&nbsp;&nbsp;<u>시작 명세</u>&nbsp;&nbsp;<u>종료 명세</u>&nbsp;&nbsp;<u>자식 명세</u>&nbsp;&nbsp;&#8211;&nbsp;<u>주석</u>&nbsp;&#8211;&gt;</p></blockquote>
<p>&#8216;시작 명세&#8217;와 &#8216;종료 명세&#8217;는 단순히 태그가 &#8216;필수(-)&#8217;적인지 또는 &#8216;생략(O)&#8217;할 수 있는지를 선언합니다. &#8216;자식 명세&#8217;는 다른말로 표현해서 &#8216;허용하는 자식 요소의 형태&#8217;라고 이해해도 됩니다. 조금 더 구체적으로 이해하기 위하여 문단을 의미하는 &lt;p&gt; 요소의 명세를 보여 드리겠습니다.&nbsp;</p>
<blockquote><p>&lt;!ELEMENT P &#8211; O (%inline;)* &#8212; paragraph &#8211;&gt;</p></blockquote>
<p>&lt;p&gt; 요소의 명세를 사람이 이해할 수 있는 자연어로 번역하면 다음과 같습니다. %inline; 이라는 변수가 연산을 위한 괄호() 안에 포함되었고 별표 연산자 &#8216;*&#8217;를 통해서 몇 번 사용할 수 있는지도 설명 되었습니다.</p>
<blockquote><p><u>P</u>&nbsp;요소는&nbsp;<u>시작 태그</u>가 반드시 필요(-)하고&nbsp;<u>종료 태그</u>는 선택적(O)이다.&nbsp;<u>인라인 콘텐츠만</u>(%inline;)을 자식으로 가질 수 있는데 이를&nbsp;<u>생략하거나 한 번 이상 사용</u>(*)할 수 있다. &#8212; 문단을 의미한다. &#8211;</p></blockquote>
<p>&lt;p&gt; 요소에 대하여 웹 브라우저 또는 문법 검사기는 다음과 같이 해석할 것입니다.</p>
<blockquote>
<ol>
<li>ELEMENT : 요소에 관한 명세임</li>
<li>P : 요소 이름은 P</li>
<li>- : 시작 태그는 필수적</li>
<li>O : 종료 태그는 선택적</li>
<li>(%inline;) : 자식 요소로써 인라인 콘텐츠만 허용</li>
<li>* : 자식 요소는 생략하거나 한 번 이상 사용 할 수 있음</li>
<li>&#8211; paragraph &#8212; : 문단임</li>
</ol>
</blockquote>
<p>요소 이름 다음에 등장하는 기호 하이픈(-) 또는 알파벳(O)는 시작 태그 또는 종료 태그가 필수적인지 선택적인지를 기술하는데 하이픈(-)은 태그의 선언이 필수적임을 의미하며 알파벳(O)는 선택적으로 생략할 수도 있다(can be&nbsp;<strong>O</strong>mitted)는 것을 의미 합니다. 만약 시작과 종료 태그가 모두 필수적이라면 &#8216;P &#8211; -&#8217; 이라고 표기 될 것이며 모두 필수적이지 않다면 &#8216;P O O&#8217; 라고 표기 했을 것입니다.</p>
<p>시작 태그와 종료 태그 다음에 등장하는 &#8216;자식 명세&#8217;는 자식 요소로써 무엇을 허용할 것인지에 대한 내용이 선언됩니다. 예를 들어 HTML/XHTML 호환모드에서 &lt;address&gt; 요소는 기본적으로 인라인 요소만을 허용하나 &nbsp;예외적으로 &lt;p&gt; 요소도 허용하고 있는데 DTD 명세는 이것을 어떻게 설명하는지 확인해 보겠습니다.</p>
<blockquote><p>&lt;!ELEMENT ADDRESS &#8211; - ((%inline;)|P)* &nbsp;&#8211; information on author &#8211;&gt;</p></blockquote>
<blockquote><p>&lt;address&gt; 요소는 시작과 종료 태그가 모두 필수적이고 인라인(%inline;)요소 또는(|) 문단 요소 &lt;p&gt;를 사용할 수 있다. 자식 요소들은 모두 생략이 가능하고 한 번 이상 사용할 수 있다.</p></blockquote>
<p>&lt;img&gt; 요소와 같이 자식 요소를 포함하지 않는 요소들은 어떻게 선언할까요? &#8216;자식 명세&#8217;를 정의하는 곳에 EMPTY 라고 적혀 있는 경우 자식 요소를 가질 수 없다는 의미 입니다.</p>
<blockquote><p>&lt;!ELEMENT IMG &#8211; O EMPTY &#8212; Embedded image &#8211;&gt;</p></blockquote>
<blockquote><p>&lt;img&gt; 요소는 시작태그는 필수적이지만 종료태그는 생략 가능한데 자식 요소는 비어(EMPTY)있다.</p></blockquote>
<h2 id="a8">속성 명세 읽기</h2>
<p>속성에 관한 명세는 항상 관련 요소에 대한 명세 다음에 등장하지만 어떤 요소에 대한 설명인지 보다 명확히 하기 위하여 명세 안쪽에 명시적으로 관련 요소 이름을 지명 하고 있습니다. 속성의 명세는 다음과 같은 구조를 갖습니다.</p>
<blockquote><p>&lt;!ATTLIST &nbsp;<u>관련 요소 이름을 지명</u><br />
&nbsp;&nbsp; &nbsp;<u>속성 이름</u>&nbsp;&nbsp;<u>속성의 값</u>&nbsp;&nbsp;<u>속성의&nbsp;기본 값 또는&nbsp;필수적인지 아닌지</u>&nbsp;&nbsp;&#8211; 설명 &#8211;<br />
&gt;</p></blockquote>
<p>좀더 구체적으로 이해하기 위하여 &lt;input&gt; 요소에 대한 속성 명세를 예제로 옮겨 왔습니다. 일단 어떤 모양인지 눈여겨 봐 주세요. 이해하기 쉽게 몇 가지 속성만 추렸고 각각을 분리해서 설명드리겠습니다.</p>
<blockquote><p>&lt;!ATTLIST INPUT&nbsp;<br />
%attrs;&nbsp;&nbsp; &nbsp;&#8211; %coreattrs, %i18n, %events &#8211;&nbsp;<br />
type&nbsp;&nbsp; &nbsp;%InputType;&nbsp;&nbsp; &nbsp;TEXT&nbsp;&nbsp; &nbsp;&#8211; 타입 &#8211;&nbsp;<br />
name&nbsp;&nbsp; &nbsp;CDATA&nbsp;&nbsp; &nbsp;#IMPLIED&nbsp;&nbsp; &nbsp;&#8211; 서버측에 넘겨주는 이름 &#8211;<br />
&gt;</p></blockquote>
<p>어떤 요소의 속성에 관한 명세인지 지명하는 부분은 다음과 같이 명세의 첫 번째 줄에 등장 합니다. &lt;input&gt; 요소에 관한 속성 목록을 나열하겠다는 의미로 해석하면 됩니다.</p>
<blockquote><p>&lt;!ATTLIST INPUT</p></blockquote>
<p>다음 구문은 온통 퍼센트 %기호로 시작하여 세미콜론; 으로 끝나는 &#8216;변수&#8217;로만 작성되어 있습니다. 이런 경우에는 변수가 무엇을 의미하는지 해석해야 합니다. %attrs; 라는 변수에는 다른 HTML 요소에서도 공통으로 사용되는 전역 속성들의 목록(예를 들면 id, class, style, title과 같은)이 포함되어 있습니다. 그런데 &#8212; 주석 &#8212; 안쪽에는 %attrs;라는 변수가 또 다른 변수들의 집합이라는 것을 설명하고 있네요.</p>
<blockquote><p>%attrs;&nbsp;&nbsp; &nbsp;&#8211; %coreattrs, %i18n, %events &#8211;</p></blockquote>
<p><strong>%coreattrs;</strong> 라는 변수는 모든 HTML 요소들의 핵심(core) 속성에 해당하는 id, class, style, title 속성을 하나의 변수로 만든것 입니다.&nbsp;</p>
<p><strong>%i18n;</strong> 이라는 변수는 국제화 속성으로써 lang, dir 속성을 하나의 변수로 만들었습니다. %i18n; 이라는 변수 이름은 본래 %internationalization;(%국제화;)이라는 용어가 너무 길어서 알파벳 첫 글자 &#8216;i&#8217;와 마지막 글자 &#8216;n&#8217; 사이에 있는 18개의 알파벳을 모두 표기하지 않고 숫자로 바꿔 표기한 것입니다. 국제화 속성의 하나인 lang 속성은 콘텐츠의 자연어가 어떤 언어인지(예를 들면 영어인지 한국어인지) 지정하는 속성이고 dir 이라는 속성은 문자의 방향(direction)에 관한 속성 입니다. 대부분의 언어가 왼쪽에서 오른쪽으로(<strong>L</strong>eft <strong>T</strong>o <strong>R</strong>ight) 읽고 쓰기 때문에 기본값은 dir=&quot;ltr&quot; 이고 모든 요소에서 생략되어 있습니다. 만약 아랍어라면 dir=&quot;rtl&quot; (<strong>R</strong>ight <strong>T</strong>o <strong>L</strong>eft) 으로 지정하여 기본 &#8216;ltr&#8217; 으로 설정된 방향 속성을 &#8216;rtl&#8217; 으로 덮어쓰기 해야 할 것입니다. &nbsp;</p>
<p><strong>%events;</strong> 라는 변수는 자바스크립트 이벤트 핸들러들의 집합으로써 다음과 같습니다.&nbsp;</p>
<ul>
<li>onclick &nbsp; &nbsp; &#8212; 버튼을 누른 후 뗌 &#8211;</li>
<li>ondblclick &nbsp; &nbsp; &#8212; 버튼을 연달아 두 번 클릭 &#8211;</li>
<li>onmousedown&nbsp;&nbsp; &nbsp; &#8212; 버튼 누름 &#8211;</li>
<li>onmouseup&nbsp;&nbsp; &nbsp; &#8212; 버튼 뗌 &#8211;</li>
<li>onmouseover&nbsp;&nbsp; &nbsp; &#8212; 마우스 포인터가 위에 있는 &#8211;</li>
<li>onmousemove&nbsp;&nbsp; &nbsp; &#8212; 마우스 포인터가 움직임 &#8211;</li>
<li>onmouseout&nbsp;&nbsp; &nbsp; &#8212; 마우스 포인터가 벗어남 &#8211;</li>
<li>onkeypress&nbsp;&nbsp; &nbsp; &#8212; 키를 누른 후 뗌 &#8211;</li>
<li>onkeydown&nbsp;&nbsp; &nbsp; &#8212; 키를 누름 &#8211;</li>
<li>onkeyup&nbsp;&nbsp; &nbsp; &#8212; 키를 뗌 &#8211;</li>
</ul>
<p>다음은 type 이라는 속성에 관한 명세 부분 입니다. &#8216;속성 이름, 속성의 값, 속성의 기본 값&#8217; 순으로 명시되어 있습니다. 속성이 &#8216;필수적인지 아닌지&#8217;의 여부는 표시되지 않았는데 왜냐하면 &#8216;속성의 기본 값&#8217;이 표기되어 있기 때문입니다. 속성에 기본 값이 있다는 것은 속성을 생략할 수 있다는 의미로 해석이 가능하기 때문에 #IMPLIED라는 설명은 생략되었습니다.</p>
<blockquote><p>&nbsp;type&nbsp;&nbsp; &nbsp;%InputType;&nbsp;&nbsp; &nbsp;TEXT&nbsp;&nbsp; &nbsp;&#8211; 타입 &#8211;</p></blockquote>
<p>사람이 이해할 수 있는 말로 type 속성에 관한 명세를 풀어보면 다음과 같이 해석할 수 있습니다.</p>
<blockquote><p>&lt;input&gt; 요소에는 말이지 type 이라는 속성이 있어<br />
type 이라는 속성은 %InputType; 이라는 값을 가질 수 있는데<br />
%InputType;은 TEXT | PASSWORD | CHECKBOX | RADIO | SUBMIT | RESET | &nbsp; &nbsp;FILE | HIDDEN | IMAGE | BUTTON 이런 값들을 가질 수 있지<br />
그리고 이 많은 값 가운데 기본값은 TEXT 란다<br />
type=&quot;text&quot; 이것이 &lt;input&gt; 요소의 기본 값이라는 거지<br />
속성에 대한 기본 값이 있기 때문에 이 속성은 생략(#IMPLIED)할 수도 있단다</p></blockquote>
<p>다음은 name 속성에 관한 명세 입니다.</p>
<blockquote><p>name&nbsp;&nbsp; &nbsp;CDATA&nbsp;&nbsp; &nbsp;#IMPLIED&nbsp;&nbsp; &nbsp;&#8211; 서버측에 넘겨주는 이름 &#8211;</p></blockquote>
<p>name 속성은 값으로써 CDATA(브라우저가 해석하거나 변조하지 않고 전달이 가능한 순수한 문자들)만 올 수 있는데 이 속성은 생략할 수 있다는 의미 입니다.</p>
<h2 id="a9">참고</h2>
<ul>
<li>HTML 4.01 Transitional DTD &#8211; <a href="http://www.w3.org/TR/html401/loose.dtd">http://www.w3.org/TR/html401/loose.dtd</a> |   <a href="http://www.w3.org/TR/1999/REC-html401-19991224/sgml/loosedtd.html  ">http://www.w3.org/TR/1999/REC-html401-19991224/sgml/loosedtd.html </a></li>
<li>HTML 4.01 Strict DTD -&nbsp;<a href="http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd">http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd</a> |&nbsp;<a href="http://www.w3.org/TR/1999/REC-html401-19991224/sgml/dtd.html">http://www.w3.org/TR/1999/REC-html401-19991224/sgml/dtd.html</a></li>
<li>XHTML 1.0 Transitional DTD &#8211; <a href="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</a>&nbsp;</li>
<li>XHTML 1.0 Strict DTD -&nbsp;<a href="http://trio.co.kr/webrefer/xhtml/dtd/xhtml1-strict.dtd">http://trio.co.kr/webrefer/xhtml/dtd/xhtml1-strict.dtd</a></li>
<li>How to read the HTML DTD &#8211; <a href="http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.3">http://www.w3.org/TR/html401/intro/sgmltut.html#h-3.3</a></li>
<li>DTD 어떻게 읽는지 아세요? &#8211; <a href="http://www.pageoff.net/794">http://www.pageoff.net/794</a></li>
</ul>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://naradesign.net/wp/2010/01/28/1165/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>유니버설 디자인을 위한 실전 UI(HTML/CSS)개발 가이드.</title>
		<link>http://naradesign.net/wp/2009/09/07/1040/</link>
		<comments>http://naradesign.net/wp/2009/09/07/1040/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 15:43:56 +0000</pubDate>
		<dc:creator>정찬명</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[드림위버]]></category>
		<category><![CDATA[웹 기획]]></category>
		<category><![CDATA[웹 디자인]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[웹 표준]]></category>
		<category><![CDATA[자바스크립트]]></category>

		<guid isPermaLink="false">http://naradesign.net/wp/?p=1040</guid>
		<description><![CDATA[올해 하반기에 해야 할 일들이 많이 쌓여 있었습니다. 강의, 책, XE(오픈UI프로젝트)에서 사용해야 할 &#8216;교재, 콘텐츠, 가이드&#8217;를 만들어야 했는데 따로 따로 준비 하자니 너무 소모적인 일들이라 벌어진 일들을 한 번에 일망타진할 수 있는 묘안이 필요했고 제 결단은 &#8216;세 가지 일을 한 번에 해치우기&#8217; 였습니다. &#8216;토, 일&#8217; 모두 사무실로 출근하면서 후배들이 궁금해 할만한 질문들을 추린 다음 스스로 [...]]]></description>
			<content:encoded><![CDATA[<p>올해 하반기에 해야 할 일들이 많이 쌓여 있었습니다. 강의, 책, XE(<a href="http://www.xpressengine.com/openUI">오픈UI프로젝트</a>)에서 사용해야 할 &#8216;교재, 콘텐츠, 가이드&#8217;를 만들어야 했는데 따로 따로 준비 하자니 너무 소모적인 일들이라 벌어진 일들을 한 번에 일망타진할 수 있는 묘안이 필요했고 제 결단은 &#8216;세 가지 일을 한 번에 해치우기&#8217; 였습니다. &#8216;토, 일&#8217; 모두 사무실로 출근하면서 후배들이 궁금해 할만한 질문들을 추린 다음 스스로 답변을 달기 시작 했는데 오늘 문서를 완성(?) 했습니다.  여러 문서들을 참조 했지만 주관적인 의견이 포함된 내용도 있어서 &#8216;정답&#8217;이라고 할 수는 없습니다. 하지만 UI 개발자들이 한 번 쯤은 고민했던(또는 해야 할) 주제들의 FAQ 목록 입니다. 저와 다른 의견을 가지고 계시거나 또는 제가 다루지 않았던 주제들에 관한 질문을 환영 합니다. 여러분의 댓글이 아마도 이 문서를 보완하는데 크게 도움이 될 것 같습니다.</p>
<ol>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section1">문서형(DTD)을 꼭 선언해야 하나요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section2">문서형(DTD)의 종류가 많던데 권장하는 것은 무엇입니까?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section3">XHTML의 문법은 HTML과 비교해서 무엇이 다른가요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section4">HTML과 XHTML 가운데 어떤  문서형(DTD)을 사용하는 것이 좋을까요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section5">문자셋(charset)으로 UTF-8을 권장하는 이유는 무엇인가요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section6">휴먼 랭귀지(human language)가 무엇인가요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section7">문서의 제목 &lt;title&gt;&#8230;&lt;/title&gt;을 어떻게 작성하는것이 가장 좋을까요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section8">의미론적 마크업(semantic markup)이란 무엇입니까?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section9">제목 요소 &lt;hx&gt;&#8230;&lt;/hx&gt;는 어떻게 작성하는 것이 가장 좋을까요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section10">의미론적 마크업을 잘 하는 방법이 있을까요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section11">논리적인 순서란 어떤 것입니까?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section12">논리적 마크업을 위해서 화면 배치를 위한 &lt;table&gt;&#8230;&lt;/table&gt;을 사용하지 않기로 했습니다. 이제 무엇으로 마크업 하나요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section13">논리적인 마크업 예제를 한번 볼 수 있을까요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section14">컬럼 구조 레이아웃을 위한 CSS 기법이 궁금합니다.</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section15">&#8216;id/class&#8217; 선택자 사용 기준은 무엇이고 어떻게 네이밍 하는것이 좋을까요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section16">이미지 대체 텍스트 속성 alt=&quot;*&quot; 어떻게 작성하는 것이 가장 좋은가요? title=&quot;*&quot; 속성과는 어떻게 다르죠?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section17">이미지에 포함된 텍스트의 양이 너무 많습니다. 어떻게 처리하죠?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section18">모두가 이용할 수 있는 longdesc 텍스트를 제공하고 싶습니다.</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section19">웹 브라우저 호환성을 유지하기 위한 CSS 기법은 무엇이 있나요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section20">IR(Image Replacement) 기법이란 무엇입니까?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section21">Image Sprite 기법이란 무엇입니까?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section22">동영상 대체 콘텐츠는 무엇이고 어떻게 처리해야 합니까?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section23">프레임셋 &lt;frameset&gt;&#8230;&lt;/frameset&gt;의 문제는 무엇인가요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section24">프레임셋 &lt;frameset&gt;&#8230;&lt;/frameset&gt;을 사용한다면 무엇을 주의해야 하나요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section25">서버와 데이터를 주고 받기 위해 내용 없는  빈 &lt;iframe&gt;&#8230;&lt;/iframe&gt;을 사용하고 있습니다. 이런 빈 프레임에도 title=&quot;*&quot; 속성을 이용해서 설명해야 하나요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section26">모든 기능을 키보드로 이용할 수 있도록 하려면 무엇을 주의해야 하나요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section27">onclick과 onkeypress, onkeydown, onkeyup 이벤트 헨들러를 함께 사용하면 안되는 이유가 무엇입니까?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section28">&lt;a&gt;&#8230;&lt;/a&gt; 요소를 마크업 할 때  href 속성의 값으로 &quot;#&quot;을 사용하면 안되나요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section29">&lt;button type=&quot;button&quot;&gt;&#8230;&lt;/button&gt; 요소의 의미와 사용법을 알려주세요.</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section30">&lt;button type=&quot;button&quot;&gt;&#8230;&lt;/button&gt; 요소의 디자인을 CSS로 제어할 수 없나요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section31">CSS 기반의 가변폭 텍스트 버튼을 만들고 싶습니다.</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section32">키보드의 논리적인 접근 순서를 위해 tabindex=&quot;*&quot; 속성을 사용해도 될까요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section33">건너뛰기 링크는 어떻게 구현하는 것이 가장 좋을까요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section34">자바스크립트를 이용한 팝업 띄우기는 무엇이 문제인가요? 어떻게 하면 되죠?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section35">데이터 테이블 &lt;table&gt;&#8230;&lt;/table&gt;을 의미있고 논리적으로 작성하는 방법은 무엇인가요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section36">탭 메뉴 형태의 네비게이션은 무엇으로 어떻게 마크업 해야 합니까?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section37">&lt;label&gt;&#8230;&lt;/label&gt; 요소는 어떻게 사용하나요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section38">플래시 &lt;object&gt;&#8230;&lt;/object&gt; 네비게이션의 문제는 무엇인가요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section39">겸손한 자바스크립트(Unobtrusive JavaScript)란 무엇입니까?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section40">Ajax의 접근성 문제는 무엇입니까?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section41">시각 장애인을 위하여 CSS { display:none } 처리된 콘텐츠를 제공하는 것이 왜 나쁜가요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section42">CSS Framework이란 무엇 입니까?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section43">드림위버와 같은 위지윅(WYSIWYG) 도구는 웹 표준이나 접근성을 지원 하나요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section44">드림위버는 너무 무거운 프로그램 아닌가요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section45">CSS 파일을 부를 때 &lt;link /&gt;와 @import의 차이는 뭔가요? 어떤 방법이 더 좋죠?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section46">인쇄용 CSS를 어떻게 작성하는 것이 좋을까요?</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section47">IE 6 브라우저는 #id.class 다중 선택자 조합을 지원하지 않습니다.</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section48">IE 6 브라우저는 .class.class 다중 선택자 조합 일부를 지원하지 않습니다.</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section49">IE 6 브라우저는 float 처리된 요소의 margin을 두 배로 처리하는 버그가 있습니다.</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section50">IE 6~7 브라우저는 float된 요소의 문자를 복사하는 버그가 있습니다.</a></li>
<li><a href="http://naradesign.net/open_content/lecture/wp/#section51">IE 6~7 브라우저는 float된 요소 주변에 등장하는 absolute 요소를 표시하지 않는 버그가 있습니다.</a></li>
</ol>
<p>허걱 벌써 다 보셨나요? 저는 몇일 걸렸는데. ㅡㅡ;</p>
]]></content:encoded>
			<wfw:commentRss>http://naradesign.net/wp/2009/09/07/1040/feed/</wfw:commentRss>
		<slash:comments>68</slash:comments>
		</item>
		<item>
		<title>CSS Quiz 5 : Anchor Navigation.</title>
		<link>http://naradesign.net/wp/2009/06/13/903/</link>
		<comments>http://naradesign.net/wp/2009/06/13/903/#comments</comments>
		<pubDate>Fri, 12 Jun 2009 19:53:34 +0000</pubDate>
		<dc:creator>정찬명</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[웹 디자인]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[웹 표준]]></category>
		<category><![CDATA[자바스크립트]]></category>
		<category><![CDATA[Quiz]]></category>
		<category><![CDATA[웹접근성]]></category>
		<category><![CDATA[웹표준]]></category>

		<guid isPermaLink="false">http://naradesign.net/wp/?p=903</guid>
		<description><![CDATA[지난 퀴즈는 즐거우셨나요? 정답을 완성하신 분들은 언제든지 빌붙기 허용권을 꼭 이용해 주시기 바랍니다. ^^ 오늘은 지난번 퀴즈 출제 후 딱 일주일 만인데요. 재미난 퀴즈를 하나 더 준비 했습니다. 재미 뿐만 아니라 실무에서 언젠가는 꼭 한번 써먹을 수 있는 그런 실용적인 퀴즈라고 생각합니다. 그리고 이런 구현 방식은 사람의 일손을 덜어주기까지 한답니다. ^^; 일단 문제부터 보시죠.
문제

지금 보시는 [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://naradesign.net/wp/2009/06/06/871/">지난 퀴즈</a>는 즐거우셨나요? 정답을 완성하신 분들은 언제든지 빌붙기 허용권을 꼭 이용해 주시기 바랍니다. ^^ 오늘은 지난번 퀴즈 출제 후 딱 일주일 만인데요. 재미난 퀴즈를 하나 더 준비 했습니다. 재미 뿐만 아니라 실무에서 언젠가는 꼭 한번 써먹을 수 있는 그런 실용적인 퀴즈라고 생각합니다. 그리고 이런 구현 방식은 사람의 일손을 덜어주기까지 한답니다. ^^; 일단 문제부터 보시죠.</p>
<h3>문제</h3>
<p><img height="434" width="600" alt="앵커를 이용한 페이지 탐색 과정(GIF 에니메이션)" src="http://naradesign.net/wp/wp-content/uploads/image/anchorNavigation.gif" /></p>
<p>지금 보시는 화면은 현재 페이지의 콘텐츠를 앵커로 탐색하는 아주 흔한 네비게이션 입니다. 그리고 특정 섹션을 탐색 할 때 다른 섹션은 화면에 노출하지 않고 스크롤 과업도 없애서 되도록 내용에 집중할 수 있도록 고려된 디자인 입니다. 탭을 누를 때마다 마치 슬라이드가 한장씩 넘어가는것 같죠?  오늘의 문제는 이런 인터렉션을 아래 제시된 HTML 코드에 여러분이 직접 CSS 코드를 입혀서 자바스크립트 없이 구현하는 것 입니다.</p>
<h3>HTML</h3>
<p><code class="block">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;<br />
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;ko&quot;&gt;<br />
&lt;head&gt;<br />
&lt;meta http-equiv=&quot;Content-Type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;<br />
&lt;title&gt;CSS Quiz 5 : Anchor Navigation&lt;/title&gt;<br />
&lt;style type=&quot;text/css&quot;&gt;<br />
/* 여러분의 CSS 코드를 이곳에 넣으세요 */<br />
&lt;/style&gt;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
&lt;div id=&quot;header&quot;&gt;<br />
&lt;h1&gt;Anchor Navigation&lt;/h1&gt;<br />
&lt;/div&gt;<br />
&lt;ol id=&quot;navigation&quot;&gt;<br />
&lt;li&gt;&lt;a href=&quot;#s1&quot;&gt;Menu A&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;#s2&quot;&gt;Menu B&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;#s3&quot;&gt;Menu C&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;#s4&quot;&gt;Menu D&lt;/a&gt;&lt;/li&gt;<br />
&lt;li&gt;&lt;a href=&quot;#s5&quot;&gt;Menu E&lt;/a&gt;&lt;/li&gt;<br />
&lt;/ol&gt;<br />
&lt;div id=&quot;body&quot;&gt;<br />
&lt;div id=&quot;content&quot;&gt;<br />
&lt;div id=&quot;s1&quot; class=&quot;section&quot;&gt;<br />
&lt;p&gt;앵커 네비게이션에 오신것을 환영합니다.&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;div id=&quot;s2&quot; class=&quot;section&quot;&gt;<br />
&lt;p&gt;이 페이지는 앵커를 이용해서 탐색할 수 있습니다.&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;div id=&quot;s3&quot; class=&quot;section&quot;&gt;<br />
&lt;p&gt;자바스크립트를 사용하지 않고도 간단한 인터렉션이 가능하다는 것을 보여줍니다.&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;div id=&quot;s4&quot; class=&quot;section&quot;&gt;<br />
&lt;p&gt;웹 표준을 준수하고 접근성도 뛰어나죠.&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;div id=&quot;s5&quot; class=&quot;section&quot;&gt;<br />
&lt;p&gt;콘텐츠의 높이가 브라우저의 뷰포트 보다 작고 높이가 고정된 상황에서 적절하게 사용할 수 있습니다.&lt;/p&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;/div&gt;<br />
&lt;div id=&quot;footer&quot;&gt;<br />
&lt;address&gt;<br />
&lt;abbr title=&quot;Xpress Engine&quot;&gt;XE&lt;/abbr&gt; Open &lt;abbr title=&quot;User Interface&quot;&gt;UI&lt;/abbr&gt; Project by &lt;a href=&quot;http://naradesign.net/&quot;&gt;Naradesign&lt;/a&gt;.<br />
&lt;/address&gt;<br />
&lt;/div&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</code></p>
<h3>규칙</h3>
<p>여러분은 CSS 코드만 작성하시면 됩니다. HTML 코드는 이미 제가 작성해 둔 것을 복사해서 변경 없이 사용해야 하고 자바스크립트는 사용하시면 안됩니다. 글상자 레이아웃의 너비는 800px, 높이는 400px 이며 브라우저의 창 크기를 조절하더라도 글 상자는 항상 화면의 정중앙에 위치해야 합니다. 그 외 자질구레한 레이아웃 요소들의 너비와 높이 및 색상은 여러분이 각자 알아서 결정하시면 됩니다. IE 6~8, Firefox 3, Safari 4, Opera 9, Chrome 2 브라우저에서 호환성을 유지해야 하고 CSS 문법 유효성 검사는 통과하지 않으셔도 됩니다. 캡쳐된 예제는 상자 모서리들이 라운딩 처리가 되어 있지만 그렇게 하지 않으셔도 됩니다. 선택된 메뉴(:active) 배경색이 현재 검정색으로 표시되어 있지만 그렇게 하지 않으셔도 됩니다.</p>
<p>정답은 2009년 6월 30일 자정까지 받겠습니다. 여러분의 계정에 정답 페이지를 생성해서 작성하신 다음 댓글에 URL을 적어 주세요. 퀴즈에 참여하실 분들은 정답을 제출하기 전까지는 다른 분들의 정답을 열람하시면 안됩니다. 이번에도 성공하신 분들께는 빌붙기 이용권이 제공 됩니다. 정답을 맞추시면 언제든 제게 밥을 사달라고 조르실 수 있습니다. ^^ 도전하세요!</p>
<h3>참여하신 분들(빌붙기 이용권 획득)</h3>
<ol>
<li>dohoons &#8211; <a href="http://dohoons.com/test/cssQ/quiz5/test.html">http://dohoons.com/test/cssQ/quiz5/test.html</a> | <a href="http://dohoons.com/test/cssQ/quiz5/test2.html">http://dohoons.com/test/cssQ/quiz5/test2.html</a></li>
<li>조성민 &#8211; <a href="http://elex.clus.org/quiz/quiz5.html">http://elex.clus.org/quiz/quiz5.html</a></li>
<li>황준상 &#8211; <a href="http://www.webpeace.net/css5.html">http://www.webpeace.net/css5.html</a></li>
<li>이군 &#8211; <a href="http://e2goon.kr/study/naradesign-quiz/quiz5.html">http://e2goon.kr/study/naradesign-quiz/quiz5.html</a></li>
<li>vori &#8211; <a href="http://www.vori.net/css/AnchorNavigation.htm">http://www.vori.net/css/AnchorNavigation.htm</a></li>
<li>hong! &#8211; <a href="http://viewbox.hosting.paran.com/asdf3.html">http://viewbox.hosting.paran.com/asdf3.html</a></li>
<li>조경수 &#8211; <a href="http://odini84.cafe24.com/naradesign/quiz5.html">http://odini84.cafe24.com/naradesign/quiz5.html</a></li>
<li>현쿠 &#8211; <a href="http://rokustd.blogspot.com/">http://rokustd.blogspot.com/</a></li>
<li>길앞잡이 &#8211; <a href="http://sljy.cafe24.com/temp/exam5.htm">http://sljy.cafe24.com/temp/exam5.htm</a></li>
<li>양영복 &#8211; <a href="http://cfs.tistory.com/custom/blog/23/233747/skin/images/quiz5.html">http://cfs.tistory.com/custom/blog/23/233747/skin/images/quiz5.html</a></li>
<li>KevinCharis &#8211; <a href="http://www.kevincharis.com/quiz/anchor_Navigation.html">http://www.kevincharis.com/quiz/anchor_Navigation.html</a></li>
<li>얼리 -&nbsp;<a href="http://esayc.styx.in/quiz/quiz.html">http://esayc.styx.in/quiz/quiz.html</a></li>
<li>지연 -&nbsp;<a href="http://blog.naver.com/hautain/71028325">http://blog.naver.com/hautain/71028325</a></li>
<li>무엇인가 -&nbsp;<a href="http://ecdemo32978.cafe24.com/quiz/cssquiz5.html">http://ecdemo32978.cafe24.com/quiz/cssquiz5.html</a></li>
<li>조소 -&nbsp;<a href="http://pds15.egloos.com/pds/200906/29/28/css5.html">http://pds15.egloos.com/pds/200906/29/28/css5.html</a></li>
<li>정찬명 &#8211; <a href="http://naradesign.net/open_content/quiz/anchorNavigation/">http://naradesign.net/open_content/quiz/anchorNavigation/</a></li>
</ol>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://naradesign.net/wp/2009/06/13/903/feed/</wfw:commentRss>
		<slash:comments>100</slash:comments>
		</item>
		<item>
		<title>웹 표준 개발자의 IE8 고려사항.</title>
		<link>http://naradesign.net/wp/2009/03/12/670/</link>
		<comments>http://naradesign.net/wp/2009/03/12/670/#comments</comments>
		<pubDate>Wed, 11 Mar 2009 16:23:49 +0000</pubDate>
		<dc:creator>정찬명</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[웹 기획]]></category>
		<category><![CDATA[웹 디자인]]></category>
		<category><![CDATA[웹 접근성]]></category>
		<category><![CDATA[웹 표준]]></category>
		<category><![CDATA[자바스크립트]]></category>
		<category><![CDATA[compatibility]]></category>
		<category><![CDATA[cross browser]]></category>
		<category><![CDATA[IE compatible trigger]]></category>
		<category><![CDATA[IE8]]></category>
		<category><![CDATA[IE8 Developer Tools]]></category>
		<category><![CDATA[IE8 Love Developer]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[브라우저호환성]]></category>
		<category><![CDATA[상호운용성]]></category>
		<category><![CDATA[웹표준]]></category>

		<guid isPermaLink="false">http://naradesign.net/wp/?p=670</guid>
		<description><![CDATA[한국 Microsoft에서 주최한 IE8 Love Developer 행사에 참석하여 웹 개발자들이 고려해야 할 IE8 대응 방법을 주제로 발표를 다녀왔기에 공유 드립니다. IE8은 기존 버전의 IE와는 다르게 웹 표준 지원폭을 경쟁사들의 브라우저와 동등한 수준으로 끌어올린 브라우저로써 그 의미가 큽니다. 또한 렌더링 방식이 기존 버전과 매우 큰 차이를 보이기 때문에 여느 버전 업데이트와 달리 특별히 주목해야 한다고 생각 [...]]]></description>
			<content:encoded><![CDATA[<p>한국 Microsoft에서 주최한 <a href="http://www.microsoft.com/korea/msdn/events/2009/ie8love/">IE8 Love Developer</a> 행사에 참석하여 웹 개발자들이 고려해야 할 IE8 대응 방법을 주제로 발표를 다녀왔기에 공유 드립니다. IE8은 기존 버전의 IE와는 다르게 웹 표준 지원폭을 경쟁사들의 브라우저와 동등한 수준으로 끌어올린 브라우저로써 그 의미가 큽니다. 또한 렌더링 방식이 기존 버전과 매우 큰 차이를 보이기 때문에 여느 버전 업데이트와 달리 특별히 주목해야 한다고 생각 합니다. IE8 등장을 앞두고 막연한 두려움이나 호환성 문제로 고민하고 계신다면 이 자료를 통해서 해결 되었으면 하는 바램입니다. <a href="http://docs.google.com/Presentation?docid=dd9gps8g_193d8k6b5d3&amp;hl=ko">슬라이드 버전으로 보기</a>. <a href="http://wm.microsoft.com/ms/korea/msdn/events/2009/ie8love/Session02_IE8_Seminar.wmv">동영상 버전으로 보기</a>.</p>
<h3>목차</h3>
<ol>
<li><a href="#a1">지구촌 IE 버전별 점유율</a></li>
<li><a href="#a2">한국의 IE 버전별 점유율</a></li>
<li><a href="#a3">국내외 IE 통계의 시사점</a></li>
<li><a href="#a4">IE의 버전별 웹 표준 지원 현황</a></li>
<li><a href="#a5">IE8과 낡은 웹 사이트의 호환성 문제</a></li>
<li><a href="#a6">웹 표준 사이트와 낡은 브라우저의 호환성 문제</a></li>
<li><a href="#a7">IE8의 향상된 웹 표준 활용하기</a></li>
<li><a href="#a8">개발자 도구를 사용하여 브라우저 호환성 테스트</a></li>
<li><a href="#a9">참고</a></li>
</ol>
<h3 id="a1">지구촌 IE 버전별 점유율 <sup><a href="http://marketshare.hitslink.com/browser-market-share.aspx?qprid=2&amp;qpmr=40&amp;qpdt=1&amp;qpct=3&amp;qpcal=1&amp;qptimeframe=M&amp;qpsp=121">2009년 2월 Net Applications 보고서</a> 기준</sup></h3>
<table cellspacing="0" border="1" style="width: 590px;" summary="IE가 압도적으로 높지만 시장의 30% 정도는 다른 브라우저들이 점유하고 있다">
<thead>
<tr>
<th scope="col" style="white-space: nowrap;">브라우저 및 버전</th>
<th scope="col" style="width: 100%;">점유율</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">IE8</th>
<td>
<div style="width: 100%;">
<div style="margin: 5px; background: rgb(255, 0, 0) none repeat scroll 0% 0%; display: inline-block; float: left; height: 10px; width: 1.17%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">&nbsp;</div>
<p style="margin: 0pt;">1.17%</p>
</p></div>
</td>
</tr>
<tr>
<th scope="row">IE7</th>
<td>
<div style="width: 100%;">
<div style="margin: 5px; background: rgb(255, 0, 0) none repeat scroll 0% 0%; display: inline-block; float: left; height: 10px; width: 47.32%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">&nbsp;</div>
<p style="margin: 0pt;">47.32%</p>
</p></div>
</td>
</tr>
<tr>
<th scope="row">IE6</th>
<td>
<div style="width: 100%;">
<div style="margin: 5px; background: rgb(255, 0, 0) none repeat scroll 0% 0%; display: inline-block; float: left; height: 10px; width: 18.85%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">&nbsp;</div>
<p style="margin: 0pt;">18.85%</p>
</p></div>
</td>
</tr>
<tr>
<th scope="row">IE5</th>
<td>
<div style="width: 100%;">
<div style="margin: 5px; background: rgb(255, 0, 0) none repeat scroll 0% 0%; display: inline-block; float: left; height: 10px; width: 0.08%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">&nbsp;</div>
<p style="margin: 0pt;">0.08%</p>
</p></div>
</td>
</tr>
<tr>
<th scope="row">etc.<sup>FF,SF,OP,CR</sup></th>
<td>
<div style="width: 100%;">
<div style="margin: 5px; background: rgb(255, 0, 0) none repeat scroll 0% 0%; display: inline-block; float: left; height: 10px; width: 32.58%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">&nbsp;</div>
<p style="margin: 0pt;">32.58%</p>
</p></div>
</td>
</tr>
</tbody>
</table>
<h3 id="a2">한국의 IE 버전별 점유율 <sup><a href="http://trend.logger.co.kr/report/trend_report.tsp?currRptType=pie&amp;rptCode=4050&amp;tps=2009%2F2%2F1&amp;tpe=2009%2F2%2F28&amp;rptType=pie&amp;rptStep=week&amp;mainSel=Microsoft+Internet+Explorer+6.0&amp;subSel=Microsoft+Internet+Explorer+6.0&amp;bigCat=">2009년 2월 Internet Trend 보고서</a> 기준</sup></h3>
<table cellspacing="0" border="1" style="width: 590px;" summary="IE 점유율이 압도적으로 높고 다른 브라우저들은 1.4% 수준에 불과하다">
<thead>
<tr>
<th style="white-space: nowrap;" scope="col">브라우저 및 버전</th>
<th style="width: 100%;" scope="col">점유율</th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">IE8</th>
<td>
<div style="width: 100%;">
<div style="margin: 5px; background: rgb(255, 0, 0) none repeat scroll 0% 0%; display: inline-block; float: left; height: 10px; width: 0.33%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">&nbsp;</div>
<p style="margin: 0pt;">0.33%</p>
</p></div>
</td>
</tr>
<tr>
<th scope="row">IE7</th>
<td>
<div style="width: 100%;">
<div style="margin: 5px; background: rgb(255, 0, 0) none repeat scroll 0% 0%; display: inline-block; float: left; height: 10px; width: 38.81%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">&nbsp;</div>
<p style="margin: 0pt;">38.81%</p>
</p></div>
</td>
</tr>
<tr>
<th scope="row">IE6</th>
<td>
<div style="width: 100%;">
<div style="margin: 5px; background: rgb(255, 0, 0) none repeat scroll 0% 0%; display: inline-block; float: left; height: 10px; width: 59.42%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">&nbsp;</div>
<p style="margin: 0pt;">59.42%</p>
</p></div>
</td>
</tr>
<tr>
<th scope="row">IE5</th>
<td>
<div style="width: 100%;">
<div style="margin: 5px; background: rgb(255, 0, 0) none repeat scroll 0% 0%; display: inline-block; float: left; height: 10px; width: 0.04%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">&nbsp;</div>
<p style="margin: 0pt;">0.04%</p>
</p></div>
</td>
</tr>
<tr>
<th scope="row">etc.<sup>FF,SF,OP,CR</sup></th>
<td>
<div style="width: 100%;">
<div style="margin: 5px; background: rgb(255, 0, 0) none repeat scroll 0% 0%; display: inline-block; float: left; height: 10px; width: 1.4%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">&nbsp;</div>
<p style="margin: 0pt;">1.4%</p>
</p></div>
</td>
</tr>
</tbody>
</table>
<h3 id="a3">국내외 IE 통계의 시사점</h3>
<p>IE6, 7, 8 버전에 모두 대응할 필요가 있습니다. 한편, 0.1% 미만의 IE5.x 점유율을 어떻게 받아들여야 할까요? 0.1% 미만의 점유율을 의미있게 받아들이는 경우 이 문제를 해결할 방법이 전혀 없는 것은 아니지만 되도록 운영체제를 업그레이드 할 수 있게  권장하는 것이 &#8216;현실적인 타협점&#8217;이라고 생각 합니다. 0.1% 미만의 장애인을 정상인으로 만드는 것은 불가능 하기 때문에 인권 보호 차원에서 <a href="http://naradesign.net/wp/2007/12/17/131/">&#8216;윤리적/법적&#8217; 으로 &#8216;반드시&#8217; 대응할 책임</a>이 있습니다. 그러나, 0.1% 미만의 장애 환경은 사용자의 의지에 따라 인위적으로 개선할 수 있는 환경이므로 &#8216;가능하다면&#8217; 돕는것이 좋겠습니다. Microsoft가 0.1% 고객의 장애환경을 개선하는데 도움이 되었으면 좋겠습니다.</p>
<h3 id="a4">IE의 버전별 웹 표준 지원 현황 <sup>Acid2 / Acid3 Test 기준</sup></h3>
<p><a href="http://acid2.acidtests.org/">Acid2 Test</a>는 HTML/CSS/PNG 등의 렌더링을 표준에 따라 얼마나 잘 구현했는지 테스트 하는 도구 이며 <a href="http://acid3.acidtests.org/">Acid3 Test</a>는 HTML/CSS/DOM/SVG 등의 렌더링을 표준에 따라 얼마나 잘 구현했는지 테스트 하는 도구 입니다.</p>
<table cellspacing="0" border="1">
<caption>     IE6 = absolutely bad     </caption>
<thead>
<tr>
<th scope="col">Acid2</th>
<th scope="col">Acid3</th>
</tr>
</thead>
<tbody>
<tr>
<td><img height="150" width="200" alt="IE6의 Acid2 테스트 결과" src="http://naradesign.net/wp/wp-content/uploads/image/ie6acid2.gif" /></td>
<td><img height="150" width="200" alt="IE6의 Acid3 테스트 결과" src="http://naradesign.net/wp/wp-content/uploads/image/ie6acid3.gif" /></td>
</tr>
</tbody>
</table>
<table cellspacing="0" border="1">
<caption>     IE7 = so bad     </caption>
<thead>
<tr>
<th scope="col">Acid2</th>
<th scope="col">Acid3</th>
</tr>
</thead>
<tbody>
<tr>
<td><img height="150" width="200" alt="IE7의 Acid2 테스트 결과" src="http://naradesign.net/wp/wp-content/uploads/image/ie7acid2.gif" /></td>
<td><img height="150" width="200" alt="IE7의 Acid3 테스트 결과" src="http://naradesign.net/wp/wp-content/uploads/image/ie7acid3.gif" /></td>
</tr>
</tbody>
</table>
<table cellspacing="0" border="1">
<caption>     IE8 = so good     </caption>
<thead>
<tr>
<th scope="col">Acid2</th>
<th scope="col">Acid3</th>
</tr>
</thead>
<tbody>
<tr>
<td><img height="150" width="200" alt="IE8의 Acid2 테스트 결과" src="http://naradesign.net/wp/wp-content/uploads/image/ie8acid2.gif" /></td>
<td><img height="150" width="200" alt="IE8의 Acid3 테스트 결과" src="http://naradesign.net/wp/wp-content/uploads/image/ie8acid3.gif" /></td>
</tr>
</tbody>
</table>
<p>이런 추세라면 IE9 버전이 등장했을 때에는 &#8216;absolutely good&#8217;. IE10 버전이 등장했을 때에는 &#8216;excellent&#8217; 정도의 평가를 기대해 보겠습니다.</p>
<h3 id="a5">IE8과 낡은 웹 사이트의 호환성 문제</h3>
<p>IE8이 웹 표준 준수율을 극도로 개선함으로써 미래의 웹 개발자는 자연스럽게 표준을 준수하게 될 것이고 웹 브라우저의 호환성 문제는 점차 사라질 것입니다. 그러나, 과거에 작성된 낡은 페이지들은 오래된 브라우저에 최적화 되어 있기 때문에 IE8 브라우저에서는 오히려 깨질 것입니다. 이러한 현상은 &quot;언젠가는 넘어야 할 산&quot;이라고 생각합니다.</p>
<h4>낡은 웹 사이트를 IE8에서 깨지 않기</h4>
<p>낡은 웹 사이트라고 해서 모두 같은 것은 아닙니다. 낡은 웹 사이트는 크게 세 가지 유형으로 나뉩니다.</p>
<ol>
<li>첫째, DTD가 없는 웹 사이트.</li>
<li>둘째, DTD가 있는 웹 사이트.</li>
<li>셋째, DTD 없는 페이지와 DTD 있는 페이지가 웹 사이트에 혼재되어 있는 경우.</li>
</ol>
<h4>DTD가 없는 웹 사이트 대응법</h4>
<p>DTD가 없는 페이지는 아무 대응을 할 필요가 없습니다. IE8은 DTD가 없는 페이지를 여전히 Quirks Mode로 렌더링 하기 때문에 웹 사이트는 깨지지 않습니다.</p>
<h4>DTD가 있는 웹 사이트 대응법</h4>
<p>DTD가 있는 페이지라고 해서 모두 같은것은 아닙니다.</p>
<ol>
<li>첫째, IE5에 최적화 된 페이지.</li>
<li>둘째, IE6에 최적화 된 페이지.</li>
<li>셋째, IE7에 최적화 된 페이지.</li>
</ol>
<h5>DTD가 있고 IE5에 최적화 된 페이지 대응법</h5>
<p><code class="block">&lt; meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=5&quot;    /> </code></p>
<h5>DTD가 있고 IE6에 최적화 된 페이지 대응법</h5>
<p>IE6에 최적화 된 페이지는 개편해야 합니다. 적어도 IE7에 최적화 시켜야 하는데 그렇지 않으면 구제할 방법이 없습니다. IE8 브라우저에 IE6 렌더링 엔진이 없기 때문입니다. IE6에 최적화된 페이지를 IE7에 최적화 하는 것은 그다지 어렵지 않습니다. IE6에 최적화 된 페이지는 IE7에 최적화 작업 후 다음 코드로 대응합니다.</p>
<p><code class="block">&lt; meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=7&quot;    /></code></p>
<h5>DTD가 있고 IE7에 최적화 된 페이지 대응법</h5>
<p><code class="block">&lt; meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=7&quot;    /> </code></p>
<h5>DTD가 혼재되어 있는 웹 사이트 대응법</h5>
<p>DTD가 혼재 되어 있는 웹 사이트는 DTD가 없는 페이지와 DTD가 있는 페이지를 구분하여 각각 다른 방법으로 대응해야 합니다. DTD가 없는 페이지는 아무런 대응을 하지 않습니다. IE8은 DTD가 없는 페이지를 Quirks Mode로 렌더링 하기 때문에 페이지는 깨지지 않습니다. DTD가 있는 페이지는 IE7에 최적화 시킨 후 다음 코드를 적용 합니다.</p>
<p><code class="block">&lt; meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=7&quot;    /> </code></p>
<p>만약, X-UA-Compatable 호환 코드를 DTD가 있는 페이지에만 별도로 적용하는 것이 어렵다면 모든 페이지에 호환 코드를 추가하는 방법도 있습니다. DTD가 있는 페이지만 IE7에 최적화 시킨 후 모든 페이지에 다음 코드를 적용합니다.</p>
<p><code class="block">&lt; meta http-equiv=&quot;X-UA-Compatible&quot; content=&quot;IE=EmulateIE7&quot;    /> </code></p>
<p>DTD가 없는 페이지는 여전히 Quirks Mode로, DTD가 있는 페이지는 IE7 표준 모드로 렌더링 할 것입니다.</p>
<h4>Meta 호환 코드를 서버측 응답 헤더에 적용하는 방법</h4>
<h5>Implementing the META Switch on IIS</h5>
<p><code class="block">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?><br />
&lt;configuration><br />
&lt;system.webServer><br />
&lt;httpProtocol><br />
&lt;customHeaders><br />
&lt;clear    /><br />
&lt;add name=&quot;X-UA-Compatible&quot; value=&quot;IE=EmulateIE7&quot;    /><br />
&lt;/customHeaders><br />
&lt;/httpProtocol><br />
&lt;/system.webServer><br />
&lt;/configuration></code></p>
<h5>Implementing the META Switch on Apache.</h5>
<p><code class="block">X-UA-Compatible:IE=EmulateIE7</code></p>
<h3 id="a6">웹 표준 사이트와 낡은 브라우저의 호환성 문제</h3>
<p>웹 표준 사이트는 IE8에 별도로 대응할 필요가 없습니다. IE8이 웹 표준을 잘 지원하고 있기 때문입니다. 그러나, 웹 표준을 잘 지킨 사이트는 낡은 브라우저에서 깨질 것입니다. 낡은 브라우저는 웹 표준을 완전히 지원하지 않기 때문입니다. 또한, 낡은 브라우저라고 해서 다 같은 브라우저가 아닙니다. IE7, IE6, IE5 세 가지 버전의 브라우저 엔진은 지원하는 표준의 범위가 다르기 때문에 렌더링도 각각 다릅니다. 렌더링이 제각기 다르기 때문에 각각의 브라우저에 대응하는 CSS 코드도 달라야 합니다.</p>
<h4>IE 조건부 주석을 사용하여 호환성 문제를 해결</h4>
<p>조건부 주석이란, IE를 제외한 브라우저는 주석으로 처리하나 IE 브라우저는 버전에 따라 실제 콘텐츠로 인식하는 주석 입니다. 조건부 주석을 활용하면 IE7, IE6, IE5 각각의 브라우저에 최적화된 코드를 각각 다르게 적용할 수 있습니다. UI 개발자는 IE7, IE6, IE5 브라우저에 각각 대응하는 별도의 CSS 코드를 작성하고 각각을 파일로 분리합니다.</p>
<ul>
<li>default.css</li>
<li>ie7.css</li>
<li>ie6.css</li>
<li>ie5.css</li>
</ul>
<h5>IE 조건부 주석의 이해</h5>
<p>조건부 주석은 다음과 같은 형식을 갖습니다.</p>
<p><code class="block">&lt;!--[if expression]> HTML &lt;![endif]--> </code></p>
<p>IE를 제외한 브라우저는 &#8216;<code>&lt;!--</code>&#8216; 부터 &#8216;<code>--></code>&#8216; 까지를 모두 주석으로 처리 하고 IE는 &#8216;HTML&#8217;을 실제 콘텐츠로 인식하고 파싱합니다.</p>
<h5>IE 조건부 주석의 적절한 사용법</h5>
<p><code class="block">&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;default.css&quot;    /> <br />
&lt;!--[if IE 7]>&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;ie7.css&quot;    /> &lt;[endif]--> <br />
&lt;!--[if IE 6]>&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;ie6.css&quot;    /> &lt;[endif]--> <br />
&lt;!--[if IE 5]>&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;ie5.css&quot;    /> &lt;[endif]--></code></p>
<h4>CSS Hack을 사용하여 호환성 문제를 해결</h4>
<p>CSS Hack은 브라우저의 버그를 이용하여 문제를 해결하는 방법입니다. 버전별로 CSS 파일을 각각 작성하지 않아도 간편하게 낡은 브라우저에 대응할 수 있지만 CSS 문법 규격에 맞지 않는것이 흠입니다. CSS Hack은 미래의 다른 브라우징 장치에서 오류로 취급하지 않는다는 보장이 없기 때문에 항상 주의가 필요합니다.</p>
<h5>IE5 ~ IE7 대응 Hack</h5>
<p><code class="block">#selector { property:value; *property:value; } /* 문서의 DTD와 무관하게 작용함 */<br />
</code></p>
<h5>IE5 ~ IE6&nbsp;대응 Hack</h5>
<p><code class="block">#selector { property:value; _property:value; } /* DTD가 없는 문서는 IE7에도 작용함 */ </code></p>
<h5>IE5&nbsp;대응 Hack</h5>
<p><code class="block">#selector { property:value; _property /**/:value; } /* DTD가 표준모드인 경우에만 작용함 */</code></p>
<h3 id="a7">IE8의 향상된 웹 표준 활용하기</h3>
<p>IE8이 등장 했지만 낡은 브라우저와의 호환성을 유지하기 위하여 향상된 표준 코드를 사용하지 않는 것은 바보같은 짓이라고 생각합니다. IE8이 지원하는 표준 CSS 코드를 얼마든지 사용할 수 있습니다. 향상된 브라우저에&nbsp;향상된 스타일을 제공하고 더 나은 사용자 경험을 제공 해야 한다고 생각합니다. 단, 표준 코드가 낡은 브라우저에 대하여 콘텐츠를 차별하는 형태로 구현되어서는 안됩니다.</p>
<h3 id="a8">개발자 도구를 사용하여 브라우저 호환성 테스트</h3>
<p>IE8 브라우저는 3가지 종류의 렌더링 모드를 지니고 있으며 웹 사이트 개발자는 IE8에 탑재되어 있는 개발자 도구(F12)를 이용하여 이 모드를 강제로 변경할 수 있습니다.</p>
<ul>
<li>Quirks Mode (IE5를 흉내내기 때문에 IE5 모드라고 볼 수 있음)</li>
<li>IE7 표준 모드</li>
<li>IE8 표준 모드</li>
</ul>
<p>렌더링 모드의 전환은 웹 페이지나 서버측 응답 헤더에 &#8216;<b>IE 호환 유도 코드</b>&#8216;(Meta Tag)를 사용함으로써 가능하지만 웹 페이지에 선언된 코드를 변경하지 않고도 개발자 도구를 이용하여 다양한 렌더링 모드 테스트를 진행할 수 있습니다. 개발자 도구에서 렌더링 모드를 직접 제어하는 방법은 두 가지가 있습니다. 두 가지 방법 모두 렌더링 엔진을 전환하는 기능을 하지만 &#8216;<b>문서 모드</b>&#8216;는 클라이언트측에서 단순하게 렌더링 모드만을 변경하고 &#8216;<b>브라우저 모드</b>&#8216;는 렌더링 모드 전환 뿐만 아니라 서버측에 브라우저 식별정보를 보내주어야 할 때 사용합니다.</p>
<ul>
<li><b>문서 모드(Document Mode) : </b>클라이언트측 개발자에게 필요한 옵션으로써 다음과 같이 모드 전환이 가능합니다.
<ul>
<li><b>Quirks Mode :</b> DTD가 있는 문서라도 마치 DTD가 없는듯 IE5를 흉내내는 렌더링을 합니다.</li>
<li><b>IE7 표준 모드 :</b> DTD가 없는 문서라도 마치 DTD가 있는듯 IE7 표준 모드로 렌더링 합니다.</li>
<li><b>IE8 표준 모드 :</b> DTD가 없는 문서라도 마치 DTD가 있는듯 IE8 표준 모드로 렌더링 합니다.</li>
</ul>
</li>
<li><b>브라우저 모드(Browser Mode) : </b>브라우저 식별정보를 필요로 하는 서버측 개발자에게 필요하며 다음과 같이 모드 전환이 가능합니다.
<ul>
<li><b>IE7 모드 :</b> IE7 브라우저와 같습니다. DTD가 없는 문서는 Quirks Mode로, DTD가 있는 문서는 IE7 표준 모드로 렌더링 합니다. 서버측에 브라우저 식별 정보를 보낼 때 IE7으로 보냅니다.</li>
<li><b>IE8 모드 :</b> IE8 브라우저와 같습니다. DTD가 없는 문서는 Quirks Mode로, DTD가 있는 문서는 IE8 표준 모드로 렌더링 합니다. 서버측에 브라우저 식별 정보를 보낼 때 IE8으로 보냅니다.</li>
<li><b>IE8 호환성 모드  :</b> IE7 브라우저와 같습니다. DTD가 없는 문서는 Quirks Mode로, DTD가 있는 문서는 IE7 표준 모드로 렌더링 합니다. 서버측에 브라우저 식별 정보를 보낼 때 IE7으로 보냅니다. 단, IE8의 호환성 모드를 이용했다는 정보까지 식별할 수 있게 됩니다.</li>
</ul>
</li>
</ul>
<h3 id="a9">참 고</h3>
<ul>
<li><a href="http://msdn.microsoft.com/ko-kr/ie/default.aspx">Internet Explorer Developer Center </a></li>
<li><a href="http://www.microsoft.com/korea/windows/products/winfamily/ie/ie8/readiness/default.htm">Internet Explorer 8 Readness Toolkit</a></li>
<li><a href="http://naradesign.net/open_content/reference/ie8compatibility/">IE8 Compatibility Test Suites</a></li>
<li><a href="http://www.css3.info/selectors-test/">CSS Selector Test Suites</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://naradesign.net/wp/2009/03/12/670/feed/</wfw:commentRss>
		<slash:comments>65</slash:comments>
		</item>
		<item>
		<title>Internet Explorer Collection 권장 안함.</title>
		<link>http://naradesign.net/wp/2009/03/02/663/</link>
		<comments>http://naradesign.net/wp/2009/03/02/663/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 14:02:31 +0000</pubDate>
		<dc:creator>정찬명</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[웹 표준]]></category>
		<category><![CDATA[자바스크립트]]></category>
		<category><![CDATA[Developer Toolbar]]></category>
		<category><![CDATA[IE Collection]]></category>
		<category><![CDATA[IE8 RC1]]></category>
		<category><![CDATA[Multiful IE]]></category>

		<guid isPermaLink="false">http://naradesign.net/wp/?p=663</guid>
		<description><![CDATA[이 포스트에 게시된 오류들이 이미 해결되었습니다. IE8을 사용하는데 문제가 없기 때문에 IE Collection을 사용하셔도 괜찮을것 같습니다.
약 열흘 전 &#8216;여러 버전의 IE에서 IE Developer Toolbar 사용하기&#8216;라는 제목으로 &#8216;Internet Explorer Collection&#8216; 이라는 도구를 소개해 드린적이 있습니다. UI개발자들이 다양한 버전의 IE에서 개발자용 디버깅 툴바(IE Developer Toolbar)를 사용할 수 있었기 때문에 매우 유용한 도구라고 소개를 드렸는데요. 이 도구가 정식으로 [...]]]></description>
			<content:encoded><![CDATA[<p style="padding:1em; border:1px dashed #ccc; background:#f8f8f8">이 포스트에 게시된 오류들이 이미 해결되었습니다. IE8을 사용하는데 문제가 없기 때문에 IE Collection을 사용하셔도 괜찮을것 같습니다.</p>
<p><strike>약 열흘 전 &#8216;</strike><a href="http://naradesign.net/wp/2009/02/20/648/"><strike>여러 버전의 IE에서 IE Developer Toolbar 사용하기</strike></a><strike>&#8216;라는 제목으로 &#8216;</strike><a href="http://finalbuilds.edskes.net/iecollection.htm"><strike>Internet Explorer Collection</strike></a><strike>&#8216; 이라는 도구를 소개해 드린적이 있습니다. UI개발자들이 다양한 버전의 IE에서 개발자용 디버깅 툴바(IE Developer Toolbar)를 사용할 수 있었기 때문에 매우 유용한 도구라고 소개를 드렸는데요. 이 도구가 <b>정식으로 설치된 IE를 정상적으로 동작할 수 없도록 만드는 여러가지 유형의 버그를 포함</b>하고 있는것이 발견되어 <b>이 문제가 해결되기 전까지 더 이상은 권장하지 않는다</b>는 내용을 전합니다. 다음은 현재까지 파악된 버그들 입니다.</strike></p>
<ol>
<li><strike>즐겨찾기에 등록된 웹사이트로 연결이 안됨.</strike></li>
<li><strike>웹 페이지의 select, option 콘트롤 조작이 안됨.</strike></li>
<li><strike>MS 오피스 아웃룩의 이메일 본문에 포함된 링크 연결이 안됨.</strike></li>
<li><strike>팝업 차단 및 차단 해제 기능 사용이 안됨.</strike></li>
<li><strike>ActiveX 설치 및 차단 기능 사용이 안됨.</strike></li>
</ol>
<p><strike>IE를 기본 브라우저로 절대 사용하지 말라는 소개 페이지의 경고가 이런 상황을 염두한 것이었나 봅니다. 저는 설치된 IE Collection 및 IE Developer Toolbar를 모두 삭제하고 다시 </strike><a href="http://tredosoft.com/Multiple_IE"><strike>Multiful IE</strike></a><strike>를 사용하기로 결정 했습니다. 그리고 IE 8 RC<sup>Release Candidate</sup> 1을 정식으로 설치 했습니다. 아직 정식으로 릴리즈 되지 않은 IE 8 후보를 설치하게 된 이유는 호환성 보기 버튼으로 IE 7 렌더링 엔진을 흉내낼 수 있고 기본으로 탑재되어 있는 개발자 도구(F12)가 IE 7 이뮬레이터 엔진과 IE 8 RC1 렌더링 엔진에서 모두 사용할 수 있기 때문입니다.</strike></p>
<p><strike><img height="120" width="600" alt="IE 8 호환성 보기 버튼" src="http://naradesign.net/wp/wp-content/uploads/image/IE8CompatibilityView.gif" /></strike></p>
<p><strike>결국 IE 6 브라우저에 대한 디버깅은 순전히 여러분의 내공에 달려 있습니다. 힘내세요!</strike></p>
<p><strike>충분히 사용해 보고 후기를 올렸어야 하는데 너무 기쁜 마음에 허둥지둥 포스팅 하다보니 본의 아니게 여러분들께 불편을 끼쳐드린것 같아 <b>벽보고 반성</b> 중입니다. 죄송합니다. ㅜㅜ;</strike></p>
]]></content:encoded>
			<wfw:commentRss>http://naradesign.net/wp/2009/03/02/663/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
	</channel>
</rss>
