출처 원본 : http://www.homejjang.com/05/layout.php


테이블을 이용한 레이아웃(Layout)

홈페이지를 제작할때 가장 많이 사용되는 태그는 <table>태그입니다.(<tr>,<td>와 함께)

이유는 레이아웃을 잡을때 <table>태그만큼 효율적인 것이 없기 때문입니다.

대부분의 홈페이지는 top 부분과 left 부분에 네비게이션(메뉴)이 위치합니다.

이를 최대한 간단하게 만들어 보겠습니다.

<table width="800" cellpadding="0" cellspacing="0" border="0" align="center">
<tr bgcolor="#8080FF" align="center">
 <td width="100">홈페이지 로고</td>
 <td width="100">메뉴1</td>
 <td width="100">메뉴2</td>
 <td width="100">메뉴3</td>
 <td width="100">메뉴4</td>
 <td width="100">메뉴5</td>
 <td width="200"><!-- 여백 --></td>
</tr>
<tr height="5">
 <td colspan="7"><!-- 여백 --></td>
</tr>
</table>

<table width="800" cellpadding="0" cellspacing="0" border="0" align="center">
<tr>
 <td width="150" valign="top" bgcolor="#8080FF">
  <table width="130" cellpadding="5" cellspacing="0" border="0" align="center">
  <tr>
   <td>하위메뉴1</td>
  </tr>
  <tr>
   <td>하위메뉴2</td>
  </tr>
  <tr>
   <td>하위메뉴3</td>
  </tr>
  <tr>
   <td>하위메뉴4</td>
  </tr>
  <tr>
   <td>하위메뉴5</td>
  </tr>
  </table>
 </td>
 <td width="650" valign="top">
  <table width="600" cellpadding="0" cellspacing="0" border="0" align="center">
  <tr>
   <td>여기에 본문이 옵니다.</td>
  </tr>
  </table>
 </td>
</tr>
</table>

다소 복잡한 테이블이지만 실제로 만들어 보면 크게 어렵지 않습니다.

홈페이지 로고메뉴1메뉴2메뉴3메뉴4메뉴5
하위메뉴1
하위메뉴2
하위메뉴3
하위메뉴4
하위메뉴5
여기에 본문이 옵니다.

너비의 단위는 %를 사용하였지만 100% 레이아웃을 차지하는 홈페이지가 아닌 이상 % 보다는 픽셀을 사용하는 것이 보다 일반적입니다.

그리고 테이블의 셀안에 다시 테이블이 들어가는 것을 볼 수 있습니다.

테이블을 이렇게 중첩시켜 나가면서 복잡한 레이아웃을 구현합니다.

예제에서는 이미지를 전혀 쓰지 않았지만 대부분의 홈페이지 작업은 전체적인 화면의 이미지를 먼저 만들고 이 이미지를 잘라서 테이블을 이용하여 배치를 하는 방식으로 진행됩니다.




아이프레임이란 내부 프레임(inline frame)이라는 의미로 하나의 HTML문서내에서 다른 HTML문서를 보여주고자 할때 사용합니다.

일반적인 프레임(frame)과 비교해보면 아이프레임은 <frameset> 태그 사이에 올 필요가 없으며, 독립적으로 마치 <img> 태그를 사용하듯 문서내의 원하는 위치에 삽입할 수 있습니다.

아이프레임에서 사용할 수 있는 속성도 <img> 태그과 유사합니다.

src 속성

inline frame 내에 불러올 문서의 주소를 적어주면 됩니다.

홈짱 홈페이지를 불러오는 예제를 만들어 보겠습니다.

<iframe src="http://www.homejjang.com">

width와 height 속성

inline frame의 너비와 높이를 지정할 수 있습니다.

<iframe src="http://www.homejjang.com" width="600" height="300">

frameborder 속성

inline frame의 경계선의 두께를 지정할 수 있습니다.

<iframe src="http://www.homejjang.com" frameborder="0" width="600" height="300">

marginwidth와 marginheight

inline frame의 여백을 지정할 수 있습니다.

<iframe src="http://www.homejjang.com" frameborder="0" width="600" height="300" marginwidth="0"marginheight="0">

scrolling

inline frame내에서 스크롤바 사용여부를 지정할 수 있습니다.

<iframe src="http://www.homejjang.com" frameborder="0" width="600" height="300" marginwidth="0" marginheight="0" scrolling="yes">

scrolling 값을 no로 지정하면 스크롤바가 생기지 않습니다.




배경음악 사용하기 Bgsound와 Embed

좀더 분위기 있는 홈페이지를 만들기 위해서 배경 음악을 사용하는 경우가 많습니다. 그러나 방문자가 배경음악을 원하지 않는 경우도 있으므로 배경음악을 사용할때 아래의 내용을 고려해 봐야 합니다.

  1. 꼭 필요한 곳에만 배경 음악이나 배경음을 넣습니다.
  2. 배경음악을 사용자가 직접 제어 할 수 있도록 합니다. 배경음악을 원치 않는 사용자들이 쉽게 소리를 줄이거나 끌 수 있어야 합니다.
  3. 용량이 많은 배경음악은 페이지 로딩을 방해하는 요소로 작용할 수 있기에 페이지 전체적인 용량을 고려해서 배경음악을 선택합니다.

배경음악 사용 방법

① bgsound

<bgsound src="[Abba] Happy New Year.wma" loop="0">


bgsound element는 인터넷 익스플로러에서만 작동합니다. 그리고 화면에 아무런 내용이 출력되지 않으므로 방문자가 음악을 끄기가 힘듭니다.

loop 속성은 배경음악의 반복 횟수를 지정합니다. -1 이나 INFINITE 값으로 지정하면 계속적으로 반복됩니다.

② embed

<embed src="[Abba] Happy New Year.wma">



embed는 익스플로러뿐 아니라 다른 웹브라우저에서도 작동을 합니다. 그리고 웹브라우저상에 미디어 플레이어가 표시됩니다.

embed 엘리먼트에서 사용할 수 있는 속성은 아래와 같습니다.

  • autostart="true/false" : true의 경우 페이지 로딩시 자동실행되고 false로 지정하면 플레이 버튼을 눌러야 음악이 재생됩니다.
  • hidden="true/false" : 미디어 플레이어가 화면에 출력되는지 여부를 지정합니다.
  • loop="true/false" : 음악의 반복여부를 지정합니다.
  • width="수치" height="수치" : 미디어 플레이어의 크기를 지정합니다. 음악 파일인 경우는 상관없지만 동영상 파일을 재생할때 이 값을 적절하게 조절해 주면 좋습니다.
  • Showcontrols="value" : 미디어 플레이어, value 값은 0 , 1
  • VOLUME = "수치값" : 플레이 되는 음악의 소리 크기를 임의로 설정하는 속성입니다.
  • hspace="value" vspace="value" : 미디어 플레이어의 수직/수평 여백값을 조절하는 옵션입니다. IMG element에서 사용되는거와 동일합니다.
  • mute=1 : 음소거



입력양식(form)은 홈페이지에서 사용자에게 정보를 받을때 사용됩니다.

회원가입을 하거나 혹은 쇼핑몰에서 주문을 하는 경우 사용자의 정보를 입력받을 필요가 있습니다. 이때 입력양식(form) 페이지를 제공하여 정보를 입력하게한 다음 이를 처리하는 페이지를 만들어서 DB에 저장을 합니다.

회원가입 입력폼을 member.html 이라고 한다면 member_confirm.php 와같은 페이지를 만들어서 회원가입 처리를 합니다. 이때 member.html 페이지는 <form> 태그를 이용하여 간단하게 만들수 있지만 member_confirm.php 페이지는 입력받은 정보를 DB에 저장하는 역할을 하기 때문에 프로그래밍 처리를 해야 합니다.

그래서 HTML 만으로는 입력양식만을 만들 수 있을뿐 이를 DB에 저장하는 기능은 만들 수가 없습니다.

대부분의 웹프로그램이 사용자의 정보를 받아서 처리하는 프로세스를 가지므로 <form> 태그는 웹프로그램에서 아주 중요한 위치를 차지합니다.

입력양식(form)의 구성

<form> 태그는 입력양식의 범위를 지정할뿐 화면상에는 아무런 내용이 표시되지 않습니다.

<form>과 </form> 사이에 사용자가 실제적으로 값을 넣을수 있는 텍스트 박스나 체크 박스 등이 위치합니다.

회원가입을 하는 경우 이름이나 주소 등을 텍스트로 입력하는 경우도 있지만 성별이나 생년월일 등은 라디오 버튼이나 셀렉트 박스에서 선택하는 경우도 있습니다.

그러므로 <form>과 </form> 사이에 위치하는 다양한 <form> 요소들을 모두 익혀야 상황에 맞는 입력양식을 만들수 있습니다.

<form> 태그의 속성

<form> 태그에서 사용할 수 있는 주요 속성은 method와 action이 있습니다.

<form method="get" action="member_confrim.php">

</form>

(1) method
웹서버와의 통신 방법을 지정합니다. post와 get 두가지 값 중 하나를 사용할 수 있습니다.

(2) action
입력양식에 입력된 값을 받아서 DB에 저장하는 페이지를 지정합니다. 이는 php나 asp와 같은 웹스크립트 언어를 이용하여 제작합니다.


Fieldset과 Legend element

fieldset element는 서로 연관성있는 컨트롤들을 하나로 묶을 수 있도록 해 주며, legend element는 제목을 붙이는 역할을 합니다. 어떻게 보면 legend element를 사용하기 위해서 fieldset element를 사용한다고 볼 수도 있습니다.

<fieldset>
    <legend><b>메일링 리스트</b></legend>
    <input type=checkbox>html
    <input type=checkbox>css
    <input type=checkbox>javascript
</fieldset>

간단한 예제이니 한번 만들어보면 쉽게 이해가 갈겁니다.

메일링 리스트html css javascript



마퀴 엘리먼트(Marquee element) 스크롤 되는 영역을 지정

 marquee element 는 스크롤 되는 영역을 지정합니다. 

<marquee>와 </marquee> 사이에 텍스트나 이미지 등이 위치하면 스크롤이 됩니다. 제한된 공간에서 보다 많은 정보를 보여주기 위한 용도로 사용됩니다.

direction

direction 속성은 움직이는 방향을 지정합니다.

<marquee direction="right">오른쪽 방향으로 흐르는 텍스트...</marquee>
<marquee direction="left">왼쪽 방향으로 흐르는 텍스트...</marquee>
오른쪽 방향으로 흐르는 텍스트...왼쪽 방향으로 흐르는 텍스트...


behavior

behavior 속성은 컨텐츠가 어떻게 스크롤 될것인지를 지정합니다.

  • scroll : 기본값으로 마퀴 영역의 경계에서부터 스크롤됩니다.
  • slide : scroll과 거의 동일하지만 마퀴 영역의 경계에서 더이상 스크롤 되지 않고 멈춥니다. 컨텐츠가 화면상으로 슬라이딩 되면서 출력되는 느낌입니다.
  • alternate : 마퀴 영역의 경계까지 갔다가 다시 돌아옵니다. 왔다 갔다하면서 화면상에 언제나 보이죠.
아래 예제를 보시면 쉽게 이해할 수 있습니다.

<marquee behavior="scroll">behavior="scroll"</marquee>
<marquee behavior="slide">behavior="slide"</marquee>
<marquee behavior="alternate">behavior="alternate"</marquee>
behavior="scroll"behavior="slide"behavior="alternate"



scrollamount

scrollamount 속성은 한번 스크롤될때마다 얼마만큼 스크롤되는지를 지정합니다. 기본값은 1픽셀입니다.

<marquee scrollamount="10">scrollamount 속성을 10픽셀로 지정</marquee>

위와 같이 scrollamount 속성을 10픽셀로 지정하면 한번 스크롤될때마다 10픽셀씩 움직이므로 좀더 빠르게 움직이는 느낌을 받습니다. 그러나 이 값을 지나치게 높이면 자연스럽지 못하므로 적당하게 올려야 합니다.

scrollamount 속성을 10픽셀로 지정



loop

loop 속성은 스크롤되는 횟수를 지정합니다. 기본값은 -1 이며 이는 계속적으로 반복해서 스크롤 된다는 의미입니다.

<marquee loop="1">loop 속성을 1로 지정</marquee>

위와 같이 loop 속성을 1로 지정하면 한번만 스크롤되고 더이상 스크롤되지 않습니다.

loop 속성을 1로 지정

width와 height

marquee element 는 스크롤 되는 영역을 지정하므로 그 영역의 width와 height를 지정할 수 있습니다.

<marquee width="300" height="100" bgcolor="#8080FF">loop 속성을 1로 지정</marquee>
loop 속성을 1로 지정


기타

align, hspace, vspace, transparency 등의 속성을 사용할 수 있습니다.



이미지맵(image map)

이미지맵은 하나의 이미지에 여러개의 링크를 걸때 사용합니다.

이미지맵을 사용하면 HTML 소스가 간단해 지는 장점이 있습니다.

<img src="imgmap.gif" alt="imgmap.gif" usemap="#001" border="0">
<map name="001">
 <area shape="rect" coords="42,41,154,66" href="/01/homepage.php" target="_blank">
 <area shape="rect" coords="42,76,152,100" href="/03/html.php" target="_blank">
 <area shape="rect" coords="40,113,150,138" href="/05/html2.php" target="_blank">
</map>
imgmap.gif 

먼저 이미지맵을 적용할 이미지에 usemap 속성을 사용하여 이미지맵의 이름을 지정해 주어야 합니다.

<img src="imgmap.gif" alt="imgmap.gif" usemap="#001" border="0">

001이라는 이름을 가진 이미지맵을 사용하겠다는 의미이니다. 이때 #을 사용함에 주의를 기울여야 합니다.

그리고 나서는 <map>태그를 사용하여 이미지맵을 만듭니다.

<map name="001">
...
</map>

이미지맵에서 하이퍼링크의 영역을 지정하기 위해서 <area>태그를 사용합니다.

<area>태그의 shape속성은 이미지맵의 형태를 지정합니다. rect(사각형), circle(원형), poly(다각형) 등의 속성값을 가질 수 있습니다.

coords속성은 좌표값을 지정합니다. 이미지의 왼쪽 모서리를 기준으로 하이퍼링크 영역의 시작과 끝 부분을 지정합니다.

이 coords속성값을 지정하기가 까다롭습니다. 그래서 이 부분은 텍스트 에디터에서 직접 코딩하지 않고 이미지맵을 생성하는 유틸리티를 사용하는 것이 좋습니다.

나모나 드림위버를 사용하면 이미지 상에서 영역을 지정하기에 아주 쉽게 이미지맵을 생성할 수 있습니다.

그러나 텍스트 에디터를 사용하는 경우 이 부분이 불편합니다.

이미지맵을 생성하는 프로그램을 이용하면 이미지상에서 바로 영역을 지정하고 이를 HTML 문서로 저장할 수 있어 텍스트 에디터의 단점을 보완해 줄 수 있습니다.


오브젝트 엘리먼트(Object element) HTML 문서에 멀티미디어 삽입

object element 는 문서내에 플래시나 동영상과 같은 개체(Object)를 삽입하는데 사용됩니다.

HTML 문서에 개체를 삽입하는 태그는 여러가지가 있습니다. 동영상과 음악과 같은 멀티미디어를 삽입하는 embed, 자바 애플릿을 삽입하는 applet 엘리먼트 등이 있습니다. 최근의 추세는 object 엘리먼트로 통합되는 방향입니다.

embed 와 object 의 차이점

embed 엘리먼트는 개채삽입으로 자신의 컴퓨터에 해당 미디어파일을 실행할수 있는 프로그램이 없다면 실행이 되지 않습니다. 그러나 object 엘리먼트는 웹에서 개채를 로드해서 재생되므로 프로그램이 없어도 실행이 가능합니다.

HTML 페이지에 멀티미디어를 추가하는데 embed 엘리먼트도 사용할 수 있지만 embed 엘리먼트를 사용하면 보다 다양한 미디어를 사용 가능합니다.

플래시 삽입

<object type="application/x-shockwave-flash" data="images/menu.swf" width="500" height="70">
    <param name="movie" value="menu.swf" />
</object>

슬라이더 삽입

<object classid="clsid:F08DF954-8592-11D1-B16A-00C0F0283628" id="Slider1" width="100" height="50">
    <param name="BorderStyle" value="1" />
    <param name="MousePointer" value="0" />
    <param name="Enabled" value="1" />
    <param name="Min" value="0" />
    <param name="Max" value="10" />
</object>

퀵타임 무비 삽입

<object width="160" height="144" classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab>">
    <param name="src" value="test.mov">
    <param name="autoplay" value="true">
    <param name="controller" value="false">
    <embed src="sample.mov" width="160" height="144" autoplay="true" controller="false" pluginspage="http://www.apple.com/quicktime/download/"></embed>
</object>

리얼 비디오 삽입

<object width="320" height="240" classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA">
    <param name="controls" value="ImageWindow" />
    <param name="autostart" value="true" />
    <param name="src" value="test.ram" />
</object>





HTML과 XHTML

XHTML은 HTML의 단점을 보안하기 위해서 만들어진 언어라 할 수 있습니다. 문법적으로 xml을 따랐다고는 하나 대부분 HTML과 큰차이를 보이지 않습니다. 그러므로 HTML을 기본적으로 아는 사람들은 HTML과 XHTML의 차이만 이해하면 XHTML을 어렵지 않게 사용할 수 있습니다.

다음은 HTML과 XHTML의 차이점입니다. 전체적으로 HTML에 비해 문법적으로 엄격해 졌습니다. 두리뭉실한 HTML, 까칠한 XHTML 입니다.^^

종료태그가 반드시 있어야 한다.

HTML 은 종료태그가 없는 것을 허용하였습니다.

<p>문단
<p>문단


이런식으로 종료태그(</p>)를 붙히지 않아도 문제가 생기지 않았습니다. XHTML 의 경우 반드시 종료태그를 사용하여 닫아주어야 합니다.

잘못된 중첩을 허용하지 않는다.

HTML 은 태그가 잘못 중첩되어도 화면표시(렌더링)에 별 영향을 미치지 않았지만 XHTML의 경우 잘못된 중첩은 화면표시(렌더링)에 직접적인 영향을 주기도 합니다.

요소(element)와 속성(Attribute)은 소문자로 표기되어야 한다.

HTML은 요소와 속성에 대소문자를 함께 사용하는 것을 허용하였으나 XHTML은 요소와 속성들을 반드시 소문자로 표기해야 합니다. xml이 대소문자를 구별하기 때문입니다. HTML에서는 대소문자의 구별이 없죠.

속성 ‘값’들은 항상 따옴표로 감싸주어야 합니다.

HTML 의 경우 속성 값들을 따옴표로 감싸지 않는 것을 허용하였지만 XHTML 에서는 반드시 속성값은 따옴표 안에 있어야 한다.

<p align=center>로 하면 안되고 <p align="center">와 같이 반드시 따옴표를 사용해야 합니다.

속성과 값의 단축표기를 허용하지 않는다.

HTML 에서는 속성과 속성 값의 단축표기를 허용하였으나 XHTML 에서는 단축표기 하는 것을 허용하지 않습니다.
<input checked> 는 <input checked="checked"> 와 같이 사용해야 합니다.

비어있는 태그(종료태그가 없는 태그)도 종료 되어야 한다.

HTML 에서 <br>, <hr> 과 같이 콘텐트를 담지 않는 빈 태그들은 <br />, <hr /> 과 같이 표기하여 시작태그에서 곧 종료됨을 표기해 주어야 한다.

XHTML의 필요성?

간단하게 나마 XHTML이 HTML에 비해서 어떤 점이 틀리다는 것을 짚어봤습니다. 서두에서도 말했듯이 문법적으로 좀더 엄격해 졌다고 할 수 있죠. 이런 엄격함으로 인해 보다 다양한 브라우저에서 정확하게 문서가 표시될 수는 있습니다. 예를 들어서 PDA에서 사용되는 웹브라우저에서도 PC의 웹브라우저와 거의 똑같은 화면을 표시할 수 있다는 겁니다. 아무래도 다소 느슨한 HTML로는 웹브라우저가 달라지면 다른 모양으로 보일 여지가 많거든요.

그래도 XHTML은 홈짱닷컴에서 자세하게 다루지 않을 예정입니다.

HTML 보다 분명 장점을 가지고 있지만 현실적으로 HTML을 대체하는 새로운 마크업이 된다는 보장은 없습니다. 아직도 대부분의 홈페이지에서는 아무런 문제없이 HTML을 잘 쓰고 있고 변화의 움직임도 크지 않기 때문이죠. 물론 분위기가 XHTML로 바뀌면 XHTML 강좌도 추가하겠지만요^^;

XHTML에 대한 좀더 자세한 내용은 related link를 참고하시면 됩니다.
































'프로그래밍 > 웹 프로그래밍' 카테고리의 다른 글

php 기초 실습  (0) 2016.03.13
php 입문 사전 지식  (0) 2016.03.13
html 중급?  (0) 2016.02.21
HTML 기초  (0) 2016.02.21
비즈니스 로직(Business logic)?  (0) 2016.02.14
웹서버(Web Server) / 웹 서버 어플리케이션(WSA)  (0) 2016.02.14
Posted by GENESIS8

댓글을 달아 주세요