sitelink1  
sitelink2  
sitelink3  
extra_vars6  
http://wiki.javajigi.net/pages/viewpage.action?pageId=722

CSS와 XHTML을 사용한 효율적인 View 개발 전략

Table of Contents

XHTML(Extensible HyperText Markup Language) 이란 ?

The Extensible HyperText Markup Language (XHTML™) is a family of current and future document types and modules that reproduce, subset, and extend HTML, reformulated in XML.
XHTML Family document types are all XML-based, and ultimately are designed to work in conjunction with XML-based user agents.
XHTML is the successor of HTML, and a series of specifications has been developed for XHTML

XHTML은 HTML을 상속받고, 재생성하고, 포함하여 XML 로 재정의한 현재와 미래의 문서타입,모듈의 한 형태이다.
XHTML Family 문서타입은 모두 XML 기반이고, 궁극적으로 XML기반의 사용자도구와 함께 결합되어 작업할수 있도록 디자인되었다.
XHTML은 HTML의 후속버전이다.
HTML 4.0.1 > XHTML 1.0 > XHTML 2.0
최신버전 : HTML 4.0.1(1999.12) , XHTML 2.0(2005.5)

XHTML이 왜 필요한가?

문서 개발자들과 사용도구 설계자들 계속적으로 그들의 생각을 새로운 마크업을 통하여 표현하는 새로운 방식들을 개발하고 있다.
XML의 장점을 가진 XHTML에서는 새로운 엘리먼트 추가 및 엘리먼트의 어트리뷰트들의 도입이 상대적으로 쉽다.
하위 및 상위 호환성이 좋다.
최대한 많은 웹 브라우저, 장치, 소프트웨어에서 읽을 수 있게 설계되었다.
마크업의 유효성 검증을 위해 엄격한 규칙을 따르며, 표준대로 작성된 페이지는 웹브라우저에서 올바르게 해석된다.

XHTML 1.0 표준정의

  • Strictly Conforming Documents
    • XHTML-1.0-Strict, XHTML-1.0-Transitional, XHTML-1.0-Frameset 의 DTD 중 하나의 규격에 맞아야한다.
    • 문서의 root element전에 DOCTYPE이 선언되어 있어야한다.
      아래의 선언중 하나를 사용한다.

      <!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">

    • 문서의 root element는 html 이어야한다.
    • XHTML의 namespace는 http://www.w3.org/1999/xhtml로 정의되어 있어야한다.

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
      <head>
      <meta http-equiv="content-type" content="text/html; charset=euc-kr" />
      <title></title>
      </body>
      </html>

HTML 4.0과 XHTML1의 차이점

  • Documents must be well-formed
    • 모든 element는 시작과 종료태그가 있어야 한다.
    • 모든 element는 nest 되어야한다.
      ex) <p>here is an emphasized <em>paragraph</em>.</p>
  • Element and attribute name은 소문자여야 한다.
  • 비어있지 않은 elements도 종료태그가 있어야한다.
    ex)<p>here is a paragraph.</p><p>here is another paragraph.</p>
  • Attribute 는 따옴표가 들어가야한다.
    ex)<dl compact="compact">
  • Attribute값들이 짝으로 기술되어야한다.(compact , checked)
    ex)<dl compact="compact">
  • 빈 element는 종료 태그를 갖거나, 그 시작 태그가 />로 종료 되어야 한다.
    ex)<br/><hr/>
  • White Space handling in attribute values
    • 앞뒤 공백을 제거한다.
    • Map sequences of one or more white space characters (including line breaks) to a single inter-word space.
      연속된 공백문자를(줄바꿈 포함) 한개의 공간글자로 처리한다.
  • name attribute를 id attribute로 대체한다.

참고 : Alan Richmond 의 해석

XHTML1과 XHTML2의 차이점

  • Linking : 모든 elements에 하이퍼링크가 가능하다.
  • Events : XML Events 를 사용한다.
  • Forms : XForms 를 사용한다.
  • Frames and Framesets : XFrames를 사용한다.
  • 조금더 구조화가 가능하게 되었다.
    • Sections and headings : heading elements(h1~h6 elements)는 h elements로 대체되었다.
      XHTML2에서는 section element로 명백하게 문서구조를 markup할수 있다.
    • Separators : hr element가 separator element로 rename 되었다.
    • Line breaks : br elements가 l element로 대체되었다.
    • Paragraph structure : p elements는 <p>...</p>로 나타낸다.


  • Navigation lists : navigation list element인 nl element가 추가되었다.


  • Images : img,applent element는 여러가지 타입의 object(image,text,audio,appelet등)를 나타낼수 있는 object elements로 대체되었다.


  • type : 사용자가 접근할수 있는 자원에 type element를 표기할수 있다.


  • Bi-directional text : dir attribute 추가

CSS(Cascading Style Sheets)란?

Cascading Style Sheets (CSS) is a simple mechanism for adding style (e.g. fonts, colors, spacing) to Web documents.

  • CSS 참조하기

    <!doctype html public '-//W3C//DTD HTML 4.01//EN'
    'http://www.w3.org/TR/html4/strict.dtd'>
    <html>
    <head>
    <title>Document title</title>
    <link rel="stylesheet" href="http://www.w3.org/StyleSheets/Core/Modernist" type="text/css">
    </head>
    ...
    or in XHTML 1.0:

    <!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'
    'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>
    <html>
    <head>
    <title>Document title</title>
    <link rel="stylesheet" href="http://www.w3.org/StyleSheets/Core/Modernist" type="text/css" />
    </head>

최신버전 : CSS3 (2005.9)

실용예제로 배우는 웹표준

chapter1 - 리스트

  • 순서가 없는 리스트 목록 - <ul/>
  • 순서가 있는 리스트 목록 - <li/>

chapter2 - 머리글

  • 머리글 태그인 <h1/>~<h6/>까지 사용하자.
    • 각종 브라우저에서 머리글 태그를 인식하고, 표기하거나 읽을수 있다.
    • 검색엔진의 색인이 빠르다.
    • CSS적용이 쉽고, 유지보수가 편하다.

chapter3 - 테이블

  • 표형태의 데이타(달력,스프레드시트,차트,스케쥴등)에 테이블을 쓰자.
    • 테이블 요약정보 - <table>태그에 <caption/>속성추가
    • 테이블 타이틀 - <caption/>태그추가
      ex)<table><caption/><tr>..
    • 테이블 헤더 - <td>태그대신 <th> 태그를 사용하라.
    • 헤더와 데이타의 관계 (스크린리더사용시 유용) - 헤더에 id속성과, 데이타에 heading속성 추가로 데이타간에 관계를 맺어준다. abbr속성은 데이타를 짧게 줄인글로 읽을때 사용한다.
      ex) <tr><th id="year" abbr="연도">경기연도</th></tr>
      <tr heading="year"><td></td></tr>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
<head>
	<meta http-equiv="content-type" content="text/html; charset=euc-kr" />
	<title>3장 - 테이블</title>
	<style type="text/css" media="screen">
	
	div {
		margin-bottom: 30px;
		}

	#fig3_10 table {
		border-top: 1px solid #999;
		border-left: 1px solid #999;
		border-collapse: collapse;
		}
	
	#fig3_10 caption {
		font-family: Arial, sans-serif;
		color: #993333;
		padding-bottom: 6px;
		}
	
	#fig3_10 th, #fig3_10 td {
		padding: 10px;
		border-right: 1px solid #999;
		border-bottom: 1px solid #999;
		}	
	
	#fig3_10 th {
		font-family: Verdana, sans-serif;
		}
	
	#fig3_10 #year {
		padding-left: 26px;
		background: #ccc url(img/icon_year.gif) no-repeat 10px 50%;
		}
	
	#fig3_10 #opponent {
		padding-left: 26px;
		background: #ccc url(img/icon_opp.gif) no-repeat 10px 50%;
		}
	
	#fig3_10 #record {
		padding-left: 26px;
		background: #ccc url(img/icon_rec.gif) no-repeat 10px 50%;
		}
	
	</style>
</head>
<body>
<div id="fig3_10">
<table summary="이 표는 보스턴 레드삭스 월드시리즈 성적 차트입니다.">
	<caption>보스턴 레드삭스 월드 시리즈 챔피언쉽</caption>
	<tr>
		<th id="year">연도</th>
		<th id="opponent">상대팀</th>
		<th id="record" abbr="성적">시즌 성적 (승-패)</th>
	</tr>
	<tr>
		<td headers="year">1918</td>
		<td headers="opponent">시카고 컵스</td>
		<td headers="record">75-51</td>
	</tr>
	<tr>
		<td headers="year">1916</td>
		<td headers="opponent">브룩클린 로빈스</td>
		<td headers="record">91-63</td>
	</tr>
	<tr>
		<td headers="year">1915</td>
		<td headers="opponent">필라델피아 필리스</td>
		<td headers="record">101-50</td>
	</tr>
	<tr>
		<td headers="year">1912</td>
		<td headers="opponent">뉴욕 자이언츠</td>
		<td headers="record">105-47</td>
	</tr>
</table>
</div>
</body>
</html>

chapter4 - 인용문

  • 블록레벨의 인용문 - <blockquote/> 태그사용
    • 인용문의 원본출처표기 - cite 속성추가
    • 따옴표문자표기 - <q/> (겹쳐쓰기가능)
    • 구문강조 - <strong/>
      ex) <blockquote cite="http://www.javjigi.net">
      아버지는 말하셨지 <q><strong>인생</strong>을 즐겨라~</q>
      </blockquote>
      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
      <head>
      	<meta http-equiv="content-type" content="text/html; charset=euc-kr" />
      	<title>4장 - 인용문</title>
      	<style type="text/css" media="screen">
      	
      	div {
      		margin-bottom: 30px;
      		}	
      	
      	#fig4_2 blockquote {
      		width: 270px;
      		text-align: center;
      		margin: 0;
      		padding: 0;
      		font-family: georgia, serif;
      		font-size: 150%;
      		letter-spacing: -1px;
      		line-height: 1em;
      		color: #555;
      		background: #eee url(img/fi_top.gif) no-repeat top left;
      		}
      	
      	#fig4_2 #quote {
      		margin: 0 10px 0 0; 
      		padding: 20px 20px 10px 20px;
      		background: url(img/fi_bottom.gif) no-repeat right bottom;
      		}
      	
      	#fig4_2 #author {
      		margin: 0;
      		padding: 0 0 10px 0;
      		color: #999;
      		font-size: 60%;
      		background: url(img/hpquote_bottom.gif) no-repeat bottom;
      		}
      	
      	#fig4_3 blockquote {
      		width: 270px;
      		text-align: center;
      		margin: 0;
      		padding: 0;
      		font-family: georgia, serif;
      		font-size: 150%;
      		letter-spacing: -1px;
      		line-height: 1em;
      		color: #555;
      		background: #eee url(img/fi_top.gif) no-repeat top left;
      		}
      	
      	#fig4_3 #quote strong {
      		color: #000;
      		font-weight: normal;
      		}
      	
      	#fig4_3 #quote {
      		margin: 0 10px 0 0;
      		padding: 20px 10px 10px 20px;
      		background: url(img/fi_bottom.gif) no-repeat right bottom;
      		}
      	
      	#fig4_3 #author {
      		margin: 0;
      		padding: 0 0 10px 0;
      		color: #999;
      		font-size: 60%;
      		background: url(img/hpquote_bottom.gif) no-repeat bottom;
      		}
      		
      	</style>
      </head>
      
      <body>
      
      <div id="fig4_2">
      	<blockquote cite="http://www.somewebsites.com/path/to/page.html">
      		<p id="quote">부적절한 인용이란 한번도 인용되지 않은 문장을 인용하는 것이다.</p>
      		<p id="author">&#8212;헤스키스 피어슨</p>
      	</blockquote>
      </div>
      
      <div id="fig4_3">
      	<blockquote cite="http://www.somewebsites.com/path/to/page.html">
      		<p id="quote"><strong>부적절한 인용</strong>이란 한번도 <strong>인용되지 않은 문장</strong>을 인용하는 것이다.</p>
      		<p id="author">&#8212;헤스키스 피어슨</p>
      	</blockquote>
      	
      </div>
      </body>
      </html>

chapter5 - 폼

  • 접근성을 높이자
    • 폼 컨트롤에대한 텍스트 레이블에 <label>태그사용
    • <label>태그의 for 속성에 연결되는 폼 컨트롤의 id값과 일치하는 값을 지정
    • 장점 : 스크린 리더 프로그램이 각폼 컨트롤에 해당하는 레이블을 올바로 읽는다.
      라디오버튼, 체크박스의 경우, 사용자가 클릭할 수 있는 영역이 넓어진다.
  • 탭키를 이용해 탭컨트롤을 이동 - tabindex 속성추가
  • 액세스키를 이용해 포커스이동 - accesskey 속성추가 (Window = Alt+key , MAC = Command+key)
  • 폼 요소 묶기 - <fieldset/>태그로 그룹핑한다. <legend/>태그로 테두리선을 표시한다.
<div id="fig5_14">
<form action="/path/to/script" id="thisform" method="post">
  <fieldset>
    <legend>로그인하기</legend>
    <p><label for="name" accesskey="9" >이름 :</label><br />
    <input type="text" id="name" name="name" tabindex="1" accesskey="9"/></p>
    <p><label for="email">이메일 :</label><br />
    <input type="text" id="email" name="email" tabindex="2" /></p>
    <p><input type="checkbox" id="remember" name="remember" tabindex="3" /> 
    <label for="remember">내 정보 기억하기</label></p>
    <p><input type="submit" value="확인" tabindex="4" /></p>
  </fieldset>
</form>
</div>

chapter6 - 구문표현 엘리먼트

  • 시각적인 효과를 위한 태그
    • <b> : bold 체
    • <i> : italic 체
  • 의미와 구조전달을 위한 태그 , 시각적으로는 강조표현, 스크린리더 프로그램사용시 볼륨,높이,속도등의 음성합성 파라미터를 다르게 적용한다.
    • <em> : bold 체 (강조)
    • <strong> : italic체 (강한강조)
    • <cite> : 인용문이나 참조한 문서의 출처
    • <abbr> : 약자 (스크린리더 프로그램사용시 철자를 하나씩 읽는다.)
      ex) <abbr title="Extensible HyperText Markup Language">XTML</abbr>
    • <acronym> : 두문자어 (스크린리더 프로그램사용시 한단어로 읽는다.)
      ex) <acronym title="North Atlantic Treaty Organization">NATO</abbr>
    • <dfn> : 용어묶음에 대한 정의
    • <code> : 컴퓨터 프로그래밍 코드
    • <samp> : 프로그램이나 스크립트의 결과 샘플
    • <kbd> : 사용자가 입력한 텍스트
    • <var> : 프로그램의 변수(variable)나 인수(argument)

chapter7 - 앵커(웹페이지내 특정위치로 이동)

  • id속성 사용하기(구버전 브라우저 지원 안함)
    <p><a href="#pooh">곰돌이 푸에 대해</a></p>
    ...
    
    <h2 id="pooh">곰돌이 푸와 친구들</h2>
    ...
  • id, name 속성 동시 사용
    <p><a href="#pooh">곰돌이 푸에 대해</a></p>
    ...
    
    <h2><a id="pooh" name="pooh">곰돌이 푸와 친구들</a></h2>
    ...
  • title 속성사용 : 화면에 툴팁으로 표시되어 내용을 볼수 있다. 스크린리더 사용시 텍스트를 읽어준다.
  • 링크 꾸미기
    • a:link : 화면에 걸려있는 링크
    • a:visited : 사용자가 이미 방문한 링크
    • a:haver : 마우스 커서가 링크위로 올라왔을때 효과
    • a:active : 마우스 버튼이 클릭될때의 상태를 처리

chapter8 - 리스트의 고급기능

  • 번호가 매겨진 리스트
    • 자동으로 번호를 매겨주는 <ol/>태그 사용하기
      <ol>
          <li>양파를 고른다.</li>
          <li>양파를 3분간 기름에 살짝 튀긴다.</li>
          <li>마늘 3쪽을 넣는다. 이때 양파와 마늘이 달라붙지 않도록 자주 저어 준다.</li>
          <li>3분간 더 요리한다.</li>
          <li>맛있게 먹는다.</li>
        </ol>

CSS의 list-style-type속성을 사용하여, 다양한 스타일을 지정할수 있다.
ol li{
list-style-type : upper-roman;
}

  • decimal : 1,2,3,4,5등 숫자
  • upper-alpha : A,B,c등 알파벳 대문자
  • lower-alpha : a,b,c등 알파벳 소문자
  • upper-roman : Ⅰ,Ⅱ,Ⅲ,Ⅳ등 로마 대문자
  • lower-roman : ⅰ,ⅱ,ⅲ,ⅳ등 로마 소문자
  • none : 숫자를 붙이지 않음
  • 용어와 설명묶음을 나타내는 리스트
    • 정의 리스트 <dl/> 태그 사용 , 용어와 설명을 분리하여, 의미있는 구조로 바뀌었고, CSS나 아이콘 추가등 스타일 입히기가 쉬워졌다. <dt/>태그는 용어를 나타내고, <dd/>태그는 설명을 나타낸다.
dt {
   font-weight: bold;
}
dd {
    margin-left: 15px;
    padding-left: 15px;
    color: #999;
    background: url(img/dd_arrow.gif) no-repeat 0 2px;
}

....

<dl>
  <dt>CSS</dt>
  <dd>웹 문서에 글꼴, 색상, 여백 등 스타일을 입힐 수 있는 쉬운 방법.</dd>
  <dt>XHTML</dt>
  <dd>HTML을 확장하기 위해 XML을 변환하여 만든 문서 형식.</dd>
  <dt>XML</dt>
  <dd>SGML에서 파생된 단순하고 매우 유연한 텍스트 형식.</dd>
</dl>


chapter9 - 마크업용량줄이기

  • id 속성을 부여한 하위 선택자를 사용하여 불필요한 class 사용을 줄인다. CSS를 이용하여, 각 레벨별 독립적인 스타일을 지정하고, 변경을 쉽게한다.
  • 불필요한 <div>태그를 없앤다.
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
    <head>
    	<meta http-equiv="content-type" content="text/html; charset=euc-kr" />
    	<title>8장 - 마크업 용량 줄이기</title>
    	<style type="text/css" media="screen">
    	
    	body {
    		font-family: verdana, sans-serif;
    		font-size: 12px;
    		}
    	
    	div {
    		margin-bottom: 30px;
    		}	
    		
    	#fig9_5 #sitemap {
    	  font-size: 140%;
    	  font-weight: bold;
    	  color: #f63;
    	  }
    	
    	#fig9_5 #sitemap li {
    	  list-style: none; /* 기본 불릿 표시 안함 */
    	  }
    			
    	#fig9_5 #sitemap li ul {
    	  margin: 6px 15px;
    	  padding: 0 15px;
    	  font-size: 90%;
    	  color: #000;
    	  border-left: 1px dotted #999;
    	  }
    	
    	/* 세 번째 레벨의 리스트 항목 스타일 */
    	
    	#fig9_5 #sitemap li ul li ul {
    	  border: none;
    	  }
    	
    	#fig9_5 #sitemap li ul li ul li {
    	  font-weight: normal;
    	  padding-left: 16px;
    	  background: url(img/li_bull.gif) no-repeat 0 50%;
    	  }
    	
    	</style>
    </head>
    <body>
    <div id="fig9_5">
    	<ul id="sitemap">
    	  <li>블로그</li>
    	  <li>기사 모음
    		<ul>
    		  <li>레드 삭스 공략 방법</li>
    		  <li>7회말 투구 내용
    			<ul>
    			  <li>제I부</li>
    			  <li>제II부</li>
    			</ul>
    		  </li>
    		  <li>결코 짧지 않은 85년 세월을 돌아보며</li>
    		</ul>
    	  </li>
    	  <li>이 블로그에 대해</li>
    	  <li>포토갤러리
    	    <ul>
    		  <li>풍경 사진</li>
    		  <li>정물 사진</li>
    		</ul>
    	  </li>
    	  <li>서비스
    		<ul>
    		  <li>디자인
    			<ul>
    			  <li></li>
    			  <li>인쇄물</li>
    			</ul>
    		  </li>
    		</ul>
    	  </li>
    	</ul> 
    </div>
    </body>
    </html>

chapter10 - CSS적용하기

  • CSS적용방법
    • <style/>엘리먼트에 넣기
      단점 : style 변경시 모든 파일을 열어 수정해야 한다. 캐쉬되지 않는다.
    • 외부 스타일시트 사용
      장점 : 스타일공유가 가능하다. style변경시 스타일 파일만 수정하면 된다. 캐쉬에 저장된다.
    • @import 사용하기
    • 인라인 스타일 : 태그안에 스타일 속성을 직접 적어준다.
      단점 : 코드량이 많아진다. 중복코드가 발생한다. 유지보수가어렵다.등등
//<style/>엘리먼트에 넣기 
<head>
  <style> 
    body{ 
      bgcolor="red"; 
    } 
  </style>
</head>

//외부 스타일시트 사용
<head>
  <link rel="stylesheet" type="text/css" href="style.css"/>
</head>


//@import 사용
<head>
  <style> @import="style.css" </style> 
</head>

//인라인 스타일
<html>
  <body style="background:red;">
  </body>
</html>
  • CSS 활용
    • 외부스타일시트와 @import를 적절히 사용
      기본 스타일은 외부스타일 시트를 사용하고, 고급 스타일은 @import 를 사용한다. 낮은 버전의 브라우저는 자신이 지원하는 스타일 명령만 인식하고, 최근 브라우저들은 모든 스타일정보를 다 가져오게 되어, 화면이 올바르게 나타나지 않는 현상을 줄일수 있다.
  • CSS의 우선순위
    인라인스타일 > 지정한 순서대로 (동일한 항목을 선언한 다른 스타일을 입힌 파일 1, 2가 있다면 마지막에 적은 스타일에 우선순위가 있다.)

chapter11 - 인쇄를 위한 스타일

  • 인쇄대상 지정하기
    • media 속성
    • @media 또는 @import
// media 속성
<link rel="stylesheet" type="text/css" media="screen,print" href="style.css">

<link rel="stylesheet" type="text/css" media="screen" href="style.css">
<link rel="stylesheet" type="text/css" media="print" href="print.css">


//@import 사용
<style type="text/css">
	@import utl("style.css") screen;
	@media print{
	}
</style>

chapter12 - CSS로 레이아웃 잡기

CSS를 이용해 레이아웃을 잡는다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko">
<head>
	<meta http-equiv="content-type" content="text/html; charset=euc-kr" />
	<title>12장 - CSS 레이아웃 (방법  D)</title>
	<style type="text/css" media="screen">
	
	body {
		margin: 0;
		padding: 0;
		font-family: verdana, sans-serif;
		font-size: 12px;
		}
	
	#header {
	  	height: 40px;
	  	background: #ccc;
	  	}
	
	#content {
	  	margin-right: 24%;
	  	margin-left: 24%;
	  	}
	
	#leftbar {
	 	position: absolute;
	  	top: 40px;
	  	left: 0;
	  	width: 20%;
	  	background: #999;
	  	}
	
	#sidebar {
	  	position: absolute;
	  	top: 40px;
	  	right: 0;
	  	width: 20%;
	  	background: #999;
	  	}
	
	#footer {
	  	margin-right: 24%;
	  	margin-left: 24%;
	  	padding: 20px;
	 	background: #eee;
	  	}
	
	</style>
</head>

<body>

<div id="header">
<strong>헤더</strong>
</div>

<div id="content">
<p><strong>컨텐트</strong> XHTML과 CSS 같은 웹 표준은 이제 많이 알려진 기술입니다. 웹 관련 직종에 있다면 웹 표준에 대해서 들어보았을 것입니다. 하지만 비록 웹 표준을 지원하는 웹 브라우저가 점차 늘어가고 있고, 웹 디자이너와 웹 개발자가 웹 표준이 주는 실질적인 잇점을 이해하고 이를 준수하려고 하는 움직임이 많아지고는 있지만, 웹 표준으로 사이트를 구축하는 것은 아직까지 쉬운 일은 아닙니다. 웹 표준이 주는 혜택을 완벽하게 이해하고 웹 표준을 이용하여 효율적으로 구현하는 데에 웹 표준의 진수가 있다고 할 수 있습니다.간단한 예를 들자면 테이블을 겹쳐서 쓰는 대신에 CSS를 사용하여 페이지의 레이아웃을 조정할 수 있습니다. 이를 통해 파일 용량은 줄어들고, 페이지 로딩 시간이 짧아집니다. 또한 모든 웹 브라우저, 장치에서 접근할 수 있게 됩니다.</p>

<p>웹 표준 가이드는 16장으로 구성되어 있습니다. 각 장에서는 여러 가지 웹 표준 개념의 이론과 실습을 다루게 되며, 쉽게 이해할 수 있도록 주어진 문제에 대해 여러가지 다른 해결방법을 보여줍니다. 이 책을 통해 다단 레이아웃, 이미지 바꿔치기, 테이블과 리스트를 잘 사용하기 등의 방법을 배울 수 있습니다. 이렇게 잘 구성된 접근방법을 통해서 웹 표준의 핵심사항을 빠르게 이해하고 소화하여 잘 활용할 수 있을 것입니다.</p>
</div>

<div id="leftbar">
<p><strong>왼쪽 사이드바</strong></p>
<ul>
<li><a href="#">링크 항목 1</a></li>
<li><a href="#">링크 항목 2</a></li>
<li><a href="#">링크 항목 3</a></li>
<li><a href="#">링크 항목 4</a></li>
</ul>
</div>

<div id="sidebar">
<p><strong>사이드바</strong></p>
<ul>
<li><a href="#">링크 항목 1</a></li>
<li><a href="#">링크 항목 2</a></li>
<li><a href="#">링크 항목 3</a></li>
<li><a href="#">링크 항목 4</a></li>
</ul>
<p><strong>추가 사이드바 1</strong></p>
<ul>
<li><a href="#">링크 항목 1</a></li>
<li><a href="#">링크 항목 2</a></li>
<li><a href="#">링크 항목 3</a></li>
<li><a href="#">링크 항목 4</a></li>
</ul>
<p><strong>추가 사이드바 2</strong></p>
<ul>
<li><a href="#">링크 항목 1</a></li>
<li><a href="#">링크 항목 2</a></li>
<li><a href="#">링크 항목 3</a></li>
<li><a href="#">링크 항목 4</a></li>
</ul>
</div>

<div id="footer">
<strong>푸터</strong>
</div>
</body>
</html>

번호 제목 글쓴이 날짜 조회 수
공지 (확인전) [2021.03.12] Eclipse에서 Spring Boot로 JSP사용하기(Gradle) 황제낙엽 2023.12.23 0
공지 [작성중/인프런] 스프링부트 시큐리티 & JWT 강의 황제낙엽 2023.12.20 6
28 Spring Framework 에서 사용하는 annotation 황제낙엽 2024.01.17 1
27 Spring MVC configuration file 황제낙엽 2024.01.17 0
26 Spring, JSP, Gradle, Eclipse 환경 구축[2] - 샘플 프로젝트 file 황제낙엽 2023.12.24 0
25 Spring, JSP, Gradle, Eclipse 환경 구축[1] - 레퍼런스 조사 황제낙엽 2023.12.23 1
24 [Bard] Spring 과 Spring Boot의 차이 file 황제낙엽 2023.12.21 4
23 Spring 과 Spring Boot의 차이 file 황제낙엽 2020.05.26 202
22 Spring Boot에서의 RESTful API 모듈 file 황제낙엽 2020.04.16 216
21 Spring Security OAuth2.0 파헤치기 황제낙엽 2019.09.05 77
20 Spring Security OAuth2구현 file 황제낙엽 2019.09.05 462
19 Spring Security OAuth 황제낙엽 2019.09.05 435
18 [Spring3.1.1] Eclipse 에 Spring Framework 환경 구축하기 file 황제낙엽 2018.08.08 90
17 웹 개발의 변화와 스프링 황제낙엽 2008.03.19 132
16 Spring MVC 가 아닌 환경에서 Spring Pojo Bean 사용하기 (Pure Java App 또는 Servlet App) 황제낙엽 2009.10.22 233
15 프로젝트의 기본이 되는 Logging, Exception 처리 전략 황제낙엽 2007.01.30 85
14 SimpleFormController 정리 황제낙엽 2007.09.19 206
13 스프링 개발팁 황제낙엽 2007.08.17 223
12 유효성체크 (org.springframework.validation.Validator) 황제낙엽 2007.08.17 129
» CSS와 XHTML을 사용한 효율적인 View 개발 전략 황제낙엽 2007.01.30 104
10 Spring framework jpetstore 샘플 분석기 - (6) jpetstore 예제로 살펴보는 Spring MVC와 iBatis 연동 황제낙엽 2007.01.18 48
9 Spring framework jpetstore 샘플 분석기 - (5) jpetstore 에서의 InternalResourceViewResolver 황제낙엽 2007.01.18 17