Overview
Xpress Engine에서 사용되는 웹 페이지의 다양한 레이아웃 요소들을 정의 하였습니다. 레이아웃은 크게 고정폭, 가변폭, 혼합폭으로 구분할 수 있는데 각각을 직관적으로 이해하려면 아래 제시된 예제들을 볼 때 브라우저 창 너비를 조절해 보시면 됩니다. 고정폭은 변하지 않으나 가변폭은 브라우저 크기에 따라 변하는 것을 말합니다. 혼합폭은 가변폭과 고정폭이 함께 사용된 레이아웃 입니다.
-
- 고정폭 레이아웃 Fixed Lauout :
- 모든 레이아웃 요소들의 너비가 절대 단위(px)로 지정된 레이아웃을 말합니다.
-
- 가변폭 레이아웃 Liquid Lauout :
- 모든 레이아웃 요소들의 너비가 상대 단위(%)로 지정된 레이아웃을 말합니다.
-
- 혼합폭 레이아웃 Hybrid Lauout :
- 레이아웃 너비에 상대 단위(%)와 절대 단위(px)가 함께 사용된 것을 말합니다.
아래 제시된 모든 예제들의 HTML 구조는 동일합니다. HTML 파일 보기. CSS 파일 보기 [1], [2].
Table of contents
1 Column Layout
Fixed 1 Column Layout
모든 레이아웃 요소의 너비가 고정폭으로써 콘텐츠가 위치한 블럭의 컬럼 개수가 1개인 레이아웃 입니다. #container 영역이 960px 고정폭으로 설정 되어있고 .extension 영역은 #container 너비의 3등분 고정폭으로 잡혀 있습니다. #content 영역을 넓게 사용하려는 경우 적합하지만 모니터의 수평 해상도가 1024px 보다 작은 경우 가로 스크롤을 유발하는 단점도 있습니다.
Liquid 1 Column Layout
모든 레이아웃 요소의 너비가 가변폭으로써 콘텐츠가 위치한 블럭의 컬럼 개수가 1개인 레이아웃 입니다. #container 영역은 화면크기의 80% 가변폭으로 설정 되어있고 .extension 영역은 #container 너비의 3등분 가변폭으로 잡혀 있습니다. #content 영역을 다양한 해상도에서 폭넓게 사용하려는 경우 적합하며 브라우저의 너비에 따라 모든 레이아웃 요소들이 같은 비율로 줄어들거나 늘어나게 됩니다.
Hybrid 1 Column Layout
가변폭과 고정폭 너비를 함께 사용한 혼합폭 레이아웃으로써 콘텐츠가 위치한 블럭의 컬럼 개수가 1개인 레이아웃 입니다. #container 영역은 화면크기의 80% 가변폭으로 설정 되어있고 .extension 영역은 #container 너비의 3등분 고정폭으로 잡혀 있습니다. #content 영역을 다양한 해상도에서 폭넓게 사용하려는 경우 적합하며 브라우저의 너비에 따라 #container의 너비는 같은 비율로 변경되지만 .extension 영역은 고정폭으로 지정되어 있어 해상도의 영향을 받지 않습니다.
2 Columns Layout
Fixed 2 Columns Layout
모든 레이아웃 요소의 너비가 고정폭으로써 콘텐츠가 위치한 블럭의 컬럼 개수가 2개인 레이아웃 입니다. #container 영역이 960px 고정폭으로 설정 되어있고 #content 영역은 720px이며 .extension 영역은 220px 너비의 고정폭으로 잡혀 있습니다. #body 영역을 2개의 분할 컬럼으로 사용하려는 경우 적합하지만 브라우저의 너비를 1024px 보다 작게 변경하는 경우 가로 스크롤을 유발하는 단점도 있습니다.
Liquid 2 Columns Layout
모든 레이아웃 요소의 너비가 가변폭으로써 콘텐츠가 위치한 블럭의 컬럼 개수가 2개인 레이아웃 입니다. #container 영역은 화면크기의 80% 가변폭으로 설정 되어있고 #content 영역은 75%이며 .extension 영역은 23% 너비의 가변폭으로 잡혀 있습니다. #body 영역을 2개의 분할 컬럼으로 사용하려는 경우 적합하지만 브라우저의 너비를 매우 작게 변경하는 경우 .extension 영역의 너비도 동일 비율로 줄어들게 되는 단점도 있습니다.
Hybrid 2 Columns Layout
가변폭과 고정폭 너비를 함께 사용한 혼합폭 레이아웃으로써 콘텐츠가 위치한 블럭의 컬럼 개수가 2개인 레이아웃 입니다. #container 영역은 화면크기의 80% 가변폭으로 설정 되어있고 #content 영역은 100%이며 .extension 영역은 260px 너비의 고정폭으로 잡혀 있습니다. #body 영역을 2개의 분할 컬럼으로 사용하려는 경우 적합하며 브라우저의 너비에 따라 #container의 너비는 같은 비율로 변경되지만 .extension 영역은 고정폭으로 지정되어 있어 해상도의 영향을 받지 않습니다.
3 Columns Layout
Fixed 3 Columns Layout
모든 레이아웃 요소의 너비가 고정폭으로써 콘텐츠가 위치한 블럭의 컬럼 개수가 3개인 레이아웃 입니다. #container 영역이 960px 고정폭으로 설정 되어있고 #content 영역은 520px이며 .extension 영역은 200px 너비의 고정폭으로 잡혀 있습니다. #body 영역을 3개의 분할 컬럼으로 사용하려는 경우 적합하지만 브라우저의 너비를 1024px 보다 작게 변경하는 경우 가로 스크롤을 유발하는 단점도 있습니다.
Liquid 3 Columns Layout
모든 레이아웃 요소의 너비가 가변폭으로써 콘텐츠가 위치한 블럭의 컬럼 개수가 3개인 레이아웃 입니다. #container 영역은 화면크기의 80% 가변폭으로 설정 되어있고 #content 영역은 56%이며 .extension 영역은 20% 너비의 가변폭으로 잡혀 있습니다. #body 영역을 3개의 분할 컬럼으로 사용하려는 경우 적합하지만 브라우저의 너비를 매우 작게 변경하는 경우 .extension 영역의 너비도 동일 비율로 줄어들게 되는 단점도 있습니다.
Hybrid 3 Columns Layout
가변폭과 고정폭 너비를 함께 사용한 혼합폭 레이아웃으로써 콘텐츠가 위치한 블럭의 컬럼 개수가 3개인 레이아웃 입니다. #container 영역은 화면크기의 80% 가변폭으로 설정 되어있고 #content 영역은 100%이며 .extension 영역은 220px 너비의 고정폭으로 잡혀 있습니다. #body 영역을 3개의 분할 컬럼으로 사용하려는 경우 적합하며 브라우저의 너비에 따라 #container의 너비는 같은 비율로 변경되지만 .extension 영역은 고정폭으로 지정되어 있어 해상도의 영향을 받지 않습니다.
Align Layout (center, left, right)
'#container' 요소를 화면의 '중앙' 또는 '좌측' 또는 '우측'으로 배치할 수 있습니다. 기본값은 '중앙 정렬'이며 '좌측' 또는 '우측'으로 배치할 때 클래스가 필요합니다. '#xe' 요소에 '.aLeft' 또는 '.aRight' 클래스를 추가하면 됩니다. 예제에는 적용되어 있지 않으나 클래스로 제어할 수 있도록 이미 처리되어 있습니다.
HTML Markup
<div id="xe" class="fixed | liquid | hybrid | aLeft | aRight">
<div id="container" class="c | ce | ec | cee | ece | eec">
<div id="header">
<h1></h1>
<div class="extension"></div>
</div>
<div id="body">
<div id="content"></div>
<div class="extension e1"></div>
<div class="extension e2"></div>
</div>
<div id="footer">
<div class="extension"></div>
<address></address>
</div>
</div>
</div>
DOM Hierarch
- #xe .fixed | .liquid | .hybrid | .aLeft | .aRight
- #container .c | .ce | .ec | .cee | .ece | .eec
- #header
- h1
- .extension
- #body
- #content
- .extension .e1
- .extension .e2
- #footer
- .extension
- address
- #header
- #container .c | .ce | .ec | .cee | .ece | .eec
CSS Selector
| Selector | Description |
|---|---|
| #xe | 'body' 요소의 최초의 자손으로써 현재의 layout이 XE의 layout용 CSS Framework을 사용하고 있다는 것을 의미 합니다. |
| .fixed | .liquid | .hybrid | '#xe' 요소에 함께 선언되는 클래스로써 현재의 layout이 어떤 성질(고정폭, 가변폭, 혼합폭)을 갖는지를 클래스 이름으로 정의 합니다. 스스로는 아무 속성이 없지만 클래스로 하여금 자식 '#container'가 다양한 성질을 가질 수 있도록 제어합니다. |
| .aLeft | .aRight | '#xe' 요소에 함께 선언되는 클래스로써 현재 layout에 대한 수평 정렬을 제어 합니다. 스스로는 아무 속성이 없지만 클래스로 하여금 자식 '#container'가 '좌/우'로 정렬 될 수 있도록 제어합니다. 사용하지 않으면 가운데로 정렬 됩니다. |
| #container | '#xe' 요소의 첫 번째 자손으로써 '#header, #body, #footer'를 자식으로 두며 현재 레이아웃의 너비와 성질(고정폭, 가변폭)에 대한 속성을 지니고 있습니다. |
| .c | '#content'를 의미하며 '#content' 영역을 하나의 컬럼으로 배치 합니다. '.c' 클래스가 사용된 경우 '.extension' 요소들은 컬럼이 되지 못하고 아래쪽에 흐릅니다. |
| .ce | .ec | 2컬럼 레이아웃 요소들의 수평 배치 순서를 결정하는 클래스 입니다. 각각 'c=#content, e=.extension'을 의미합니다. |
| .cee | .ece | .eec | 3컬럼 레이아웃 요소들의 수평 배치 순서를 결정하는 클래스 입니다. 각각 'c=#content, e=.extension'을 의미합니다. |
| #header | 현재 페이지의 '가장 큰 제목h1'이 들어가며 보통은 웹 사이트의 제목이 출력되고 상단에 배치 됩니다. |
| #body | 현재 페이지의 본문인 '#content'와 네비게이션 또는 확장 요소인 '.extension'을 자손으로 두고 있습니다. |
| #footer | '저작자 정보address' 또는 웹 사이트 이용안내등 부가 콘텐츠가 포함 되며 보통 하단에 배치 됩니다. |
| #content | '본문'으로써 다양한 형태의 정보들이 포함되며 '.section' 요소를 자손으로 지닐 수 있습니다. |
| .extension | 현재 사이트를 탐색하기 위한 '네비게이션' 또는 '확장' 으로써 '.section' 요소를 자손으로 지닐 수 있습니다. |
| .e1 | .e2 | '#body'의 자손인 '.extension' 클래스와 동일한 요소에 적용되어 있는 클래스로써 두 개의 '.extension'이 각자 다른 배치를 가질 수 있도록 식별하는 역할을 합니다. |
| .section | 내용을 더욱 의미있는 단위로 작게 구분할 필요가 있을 때 어느 곳에서든 사용합니다. 하나인 경우 생략할 수 있고 두 덩어리 이상을 구분할 필요가 있을 때 반드시 사용 합니다. |
fixed_c.html
fixed_ce.html
fixed_ec.html
fixed_cee.html
fixed_ece.html
fixed_eec.html
더욱 다양한 형태의 레이아웃이 존재하지만 상기 제시된 소스코드의 원리를 이해하고 응용하게 되면 대부분의 레이아웃 형태를 구현할 수 있습니다. 더욱 많은 레이아웃 예제가 Layout Gala, Little Boxes 에도 존재합니다. 한편 Layout Gala, Little Boxes 방식은 콘텐츠 영역 또는 측면 네비게이션 영역이 자신의 높이값을 부모 엘리먼트에게 전달하지 못하는 단점이 있습니다.