이번에도 간단하게 HTML과 CSS 로 UI 를 구성하는데,
나름 괜찮은 방법이기에 다시 포스팅을 한다. 이미 모두 사용하고 있을 수도 있지만..
나는 기억력이 그다지 좋은 편이 아니기에 포스팅을 한다.

테스트 브라우저 : Google Chrome, IE8, IE6, FF, Opera

div 태그로 UI 를 구성함에 있어 기본적인 원칙.
요소들의 배치.

이 것이 상당히 중요한 원칙이다. 이 원리를 구현하고자 테스트를 반복함으로 알수 있있다.
먼저 이러한 UI 를 구성하고자 타겟을 설정하였다.


색상으로 박스를 설정하였다.
White (Background) : html, body, form, Wrap
Yellow : header
Container : blue
Contents : brown
box1 : cyan
box2 : skyblue
Footer : green

위를 구성하는 CSS 코드들은 기본적으로 padding 이 모두 0 이다.
이에 margin, position, width, height 로만 UI를 구성한 것 이다.
먼저 해당하는 속성들을 간단하게(?) 설명한다.

 속성명 정의 
 margin

정의 : 해당 엘리먼트의 바깥 여백을 지정한다.
  
 margin-left:10px 왼쪽으로 10픽셀 
margin-right:10px  오른쪽으로 10픽셀 
margin-top:10px  상단 10픽셀 
 margin-bottom:10px  하단 10픽셀
marign:10px  전체 10픽셀 
marign:20px 20px  상하 20픽셀, 좌우 20픽셀 
 margin:10px 30px 20px 상단 10픽셀,  좌우 30픽셀,
하단 20픽셀
 margin:10px 20px 30px 40px  상단 10픽셀, 오른쪽 20픽셀,
하단 30픽셀, 왼쪽 40픽셀


 position  엘리먼트 위치속성 적용
  1. static
    • (기본값) normal flow에 따라서 배치된다. (Visual formatting model : Normal flow)
    • top, left. bottom, right 속성이 적용되지 않는다.
  2. relative
    • static일때의 위치를 기준으로 top, left, bottom, right 속성이 적용된다.
    • relative인 box B가 있고, 그 다음에 나오는 sibling은 B의 static 영역을 기준으로 자리를 잡는다.
    • relative가 적용되지 않는 block elements : table-row-group, table-header-group, table-footer-group, table-row, table-column-group, table-column, table-cell, table-caption
  3. absolute
    • top, left, bottom, right 속성이 자신을 포함하는 box의 위치를 기준으로 적용된다.
    • 다른 sibling과의 위치에 영향을 주지 않는다.
    • margin 값이 있어도 다른 box의 margin과 합쳐지지 않는다. (Box model : Collapse margins)
  4. fixed
    • absolute와 비슷하지만, 자신을 포함하는 box가 아닌 viewport의 맨위좌측을 기준으로 적용된다.
    • 스크롤되지 않고, 항상 같은 위치에 보이게 된다.
    • print media type에 적용되는 경우, 모든 페이지에 나타난다.
    • 따라서 화면에는 항상 나타나지만, 프린트할때는 한번만 보이게 할경우... screen의 경우 fixed, print의 경우 static으로 다르게 설정해 주어야 한다.
 width  엘리먼트의 가로 크기 (길이 단위 [예 : 픽셀], %, auto, inherit
 height  엘리먼트의 세로크기 (길이 단위 [예: 픽셀], %, auto, inherit

먼저 header 와 container, footer 가 고정이라 정의한다면
container 내에서는 요소들의 배치가 자유로워야 한다.
이에 contents 라는 요소를 배치하고 그 안에 box1, box1-1, box2 이라는 요소들을 배치하였다.
box1-1 과 box2 는 같은 레벨이며 box1-1 은 box1 의 하위레벨 요소이다.
box1, box2 역시 contents 의 하위레벨 요소이다.
먼저 하위레벨 요소들의 위치 배정이 모든 브라우저에서 동일하게 적용된다면 정말로 실용성은
상당히 좋지 않은가?
이게 "웹표준" 이다.. 하면서 정의를 하면서 하지는 않겠다. 하지만 크로스 브라우징에 있어서만큼은
올바른 태그 사용과 표시오류가 없을 신뢰할 수 있었다.
신뢰기반은 무조건 실행과 테스트니 말이다.

먼저 html 태그의 코드 구성은 다음과 같다.
간단하게 body 태그 안에 코드만 작성하였다.


White (Background) : html, body, form, Wrap
Yellow : header
Container : blue
Contents : brown
box1 : cyan
box2 : skyblue
Footer : green

이와 같은 구성이 증명된다.
UI 를 구성하는 라인 끝에 시작은 <!-- WRAP -->. 끝은 <!-- //WRAP -->
처럼 주석을 작성하여 보기에 편의를 두었다.
참. 이에 메타태그도 추가하겠다. 큰 상관은 U-UA_Compatible 속성만 있겠지만야. 일단 고정적으로
쓰는 메타를 추가한다.


그럼 위에서도 보다시피 렌더링 유도시에는 인터넷 익스플로러 최신버전임을 알 수 있다.
그럼에도 불구하고 IE6,7,8 에도 모두 동일한 결과를 나타냈기 때문에 흡족하였다.

그리고 이를 구성하는 CSS 코드.
보면 생각보다 상당히 간단함을 알 수 있다.


먼저 html, body, form 은 무조건 전체를 지향하며,
이제 Wrap 역시 전체를 지향하였다. 굳이 divWrap 으로 감싼 이유는.. 업무적 특성상인데.. 나중에
비동기 방식등에 대비하여 상당히 유용한 경우가 있다.
이건 사용에 따라 다르니. 테스트로만..ㅋㅋ

그리고 header 는 가로 1000픽셀의 세로 100픽셀. 그리고 상단 0 오른쪽 자동 하단 0 왼쪽 0 으로
margin 을 지정하였다. 쉽게 말해 위에 딱 붙이고 , 가운데 정렬하겠단 말이다.
container 는 가로 100%. 브라우저 끝까지. 세로는 500픽셀로. position 속성은 자신이 배치된 위치를
보존하기 위해 relative 로 지정하였다.
이에 하위 divContents 엘리먼트 역시 가로는 900픽셀로 지정하고 세로는 container 의 세로크기를
모두 상속받기 위해 100% 로 지정하였다.
그리고 위치 역시 가운데. 그리고 position 역시 relative.

이제 내부에 위치한 특정 위치에 엘리먼트들을 배치함이다. 주목할만한 포인트다.
앗. 근데 오타다. margin:0 은 신경쓰지 마사기 바람.
또 캡쳐가 귀찮아서 오타라고 미리 인정함.ㅋㅋ

이에 가로, 세로는 정의되어있고. position 은 absolute. margin 은 보이는 바와 같다.
이렇게 설정했을때 absolute 로 인해 자신이 차지하고 있는 공간은 사라지고 상위 요소 절대지점에
위치하며 그 시점으로 부터에 margin 을 이용하여 원하는 특정위치에 배치가 가능하게 되는것이다.
이게 포인트인것이다. 

일단 위와 같은 테스트를 경험하게 되면 결과를 체험할 수 있을것이다.

'Development > HTML' 카테고리의 다른 글

최고의 HTML 편집기가 궁금합니다.  (0) 2011.11.09
3D로 강력해진 구글 ‘크롬9′ 공개  (0) 2011.02.10
HTML UI 구성  (0) 2010.11.17
UI : 엘리먼트 배치  (0) 2010.11.10
HTML UI :: 세로 100% 설정  (0) 2010.10.29
HTML5의 모든 것  (0) 2010.07.29

+ Recent posts