스킨 제작 프로젝트 - Step3. 스킨 제작
글수 73
먼저 LeagueON님의 http://www.zeroboard.com/16392078 게시물을 확인하세요^^
저도 초보이지만 모르는 것도 함께 공유하는 차원에서 올립니다.
웹표준을 준수하기 위해 테이블에서 div로 전환하며 고생을 많이 했습니다.
테이블의 모든 기능을 div로 대체가 가능하지만 쉽지 않습니다.
먼저 가장 기초적인 레이아웃을 살펴 보도록 하겠습니다.
가장 기본적인 레이아웃입니다.
이것을 div로 나타내면 다음과 같습니다.
이해가 될 겁니다.
여기서 고민하시는 분들이 계실 겁니다.
테이블의 경우 테이블 자체를 항상 익스플로러의 가운데에 위치하도록 하는 것은 알겁니다.
그런데 div의 경우 어떻게 해야 할까요?
그냥 표를 감싸는 안보이는 표를 만듭니다.
그리고 표를 감싸는 표의 셀 속성에 td align="center"이것만 주시면 됩니다.
비슷합니다.
div역시 같은 방법입니다. 하지만 약간의 차이는 있습니다.
보시면 알 것입니다.
변한 게 있다면 모든 div를 감싸는 div가 생겼다는 것입니다.
그리고 모든 것을 감싸는 div 스타일을 보면 margin-left 와 margin-right를 각각 auto 값을 부여해 주었습니다.
또한 모든 것을 감싸는 div의 넓이를 400픽셀로 정확히 맞춰 두었습니다.
위의 소스를 다음과 같이 구현하시면
좀 더 세련된 개발자구나... 라는 소리를 들을 겁니다.
test.html
layout.css
오늘 강의는 레이아웃에서 항상 가운데 정렬이 되는 것을 안내해 드렸습니다^^;;
다시 말씀드리지만.. 저도 초짜입니다.
가르치면서 한번 더 배울려고 강좌를 하는 겁니다^^
저도 초보이지만 모르는 것도 함께 공유하는 차원에서 올립니다.
웹표준을 준수하기 위해 테이블에서 div로 전환하며 고생을 많이 했습니다.
테이블의 모든 기능을 div로 대체가 가능하지만 쉽지 않습니다.
먼저 가장 기초적인 레이아웃을 살펴 보도록 하겠습니다.
| 헤드 |
| 메뉴 | 본문 |
| 바텀 |
<table border="1" width="400" align="center"> <!-- 테이블 생성 --> <tr> <td bgcolor="#EEEEEE" >헤드</td> </tr> </table> <table border="1" width="400" align="center"> <tr> <td width="100" bgcolor="#ee6688">메뉴</td> <td width="300" bgcolor="#ffffff">본문</td> </tr> </table> <table border="1" width="400" align="center"> <tr> <td bgcolor="#EEEEEE">바텀</td> </tr> </table>
가장 기본적인 레이아웃입니다.
이것을 div로 나타내면 다음과 같습니다.
헤드
메뉴
본문
바텀
<div style="width:400px; background-color:#eeeeee">헤드</div> <!--넓이 400픽셀 지정, 배경색상 eeeeee 지정--> <div style="width:100px; float:left; background-color:#ee6688;">메뉴</div> <!-- 넓이 100픽셀 지정, 왼편정렬, 배경색상 ee6688지정--> <div style="width:300px; float:left; clear: right; ">본문</div> <!--넓이 300필셀 지정, 왼편정렬(오른편정렬 아닙니다. 왼편정렬해도 자연스럽게 잘 붙습니다 또한 clear 속성이 보일겁니다. 이것은 float 속성을 없애주는 속성입니다. none, left, right, both 값이 있습니다. right는 오른쪽에 더 이상 float이 붙지 않도록 하는 겁니다. 바텀이 계속 본문메뉴 오른쪽에 붙는다고 생각해 보십시오. 끔찍하지 않나요? 그렇기 때문에 이제 오른쪽에 더이상 붙이 마세요! 라고 지정해 주는 겁니다. --> <div style="width:400px; background-color:#eeeeee;">바텀</div> <!-- 바텀. 넓이 400픽셀, 배경색상 eeeeee-->
이해가 될 겁니다.
여기서 고민하시는 분들이 계실 겁니다.
테이블의 경우 테이블 자체를 항상 익스플로러의 가운데에 위치하도록 하는 것은 알겁니다.
그런데 div의 경우 어떻게 해야 할까요?
| 헤드 |
| 메뉴 | 본문 |
| 바텀 |
<table border="0" width="100%"> <tr> <td align="center"> <table border="1" width="400"> <tr> <td bgcolor="#EEEEEE" >헤드</td> </tr> </table> <table border="1" width="400" > <tr> <td width="100" bgcolor="#ee6688">메뉴</td> <td width="300" bgcolor="#ffffff">본문</td> </tr> </table> <table border="1" width="400"> <tr> <td bgcolor="#EEEEEE">바텀</td> </tr> </table> </td> </tr> </table>
그냥 표를 감싸는 안보이는 표를 만듭니다.
그리고 표를 감싸는 표의 셀 속성에 td align="center"이것만 주시면 됩니다.
비슷합니다.
div역시 같은 방법입니다. 하지만 약간의 차이는 있습니다.
헤드
메뉴
본문
바텀
<div style="margin-left:auto; margin-right:auto; width:400px;"> <!-- 왼쪽 바깥여백 자동, 오른쪽 바깥여백 자동, 넓이 400픽셀--> <div style="width:400px; background-color:#eeeeee">헤드</div> <!--넓이 400픽셀 지정, 배경색상 eeeeee 지정--> <div style="width:100px; float:left; background-color:#ee6688;">메뉴</div> <!-- 넓이 100픽셀 지정, 왼편정렬, 배경색상 ee6688지정--> <div style="width:300px; float:left; clear: right; ">본문</div> <!--넓이 300필셀 지정, 왼편정렬(오른편정렬 아닙니다. 왼편정렬해도 자연스럽게 잘 붙습니다. 또한 clear 속성이 보일겁니다. 이것은 float 속성을 없애주는 속성입니다. none, left, right, both 값이 있습니다. right는 오른쪽에 더 이상 float이 붙지 않도록 하는 겁니다. 바텀이 계속 본문메뉴 오른쪽에 붙는다고 생각해 보십시오. 끔찍하지 않나요? 그렇기 때문에 이제 오른쪽에 더이상 붙이 마세요! 라고 지정해 주는 겁니다. --> <div style="width:400px; background-color:#eeeeee;">바텀</div> <!-- 바텀. 넓이 400픽셀, 배경색상 eeeeee--> </div> <!-- div 테그 닫음-->
보시면 알 것입니다.
변한 게 있다면 모든 div를 감싸는 div가 생겼다는 것입니다.
그리고 모든 것을 감싸는 div 스타일을 보면 margin-left 와 margin-right를 각각 auto 값을 부여해 주었습니다.
또한 모든 것을 감싸는 div의 넓이를 400픽셀로 정확히 맞춰 두었습니다.
위의 소스를 다음과 같이 구현하시면
좀 더 세련된 개발자구나... 라는 소리를 들을 겁니다.
test.html
<html> <head> <title>레이아웃 1.5</title> <link href="layout.css" rel="stylesheet" type="text/css" /> <!-- layout.css 스타일 시트 파일을 불러옵니다--> </head> <body> <div id="align"> <div id="head">헤드</div> <div id="menu">메뉴</div> <div id="contents">본문</div> <div id="bottom">바텀</div> </div> </body> </html>
layout.css
#align{ /*가운데 정렬을 하기 위한 css */
margin-left:auto; /* 왼쪽바깥여백 자동 */
margin-right:auto; /* 오른쪽바깥여백 자동 */
width:400px /* div 넓이 400픽셀 */
}
#head{
width:400px; /* 넓이 */
background-color:#eeeeee; /* div 배경색상 */
}
#menu{
width:100px; /* 넓이 */
float:left; /* 정렬입니다. left와 right가 있습니다. center는 float으로는 지정할 수 없습니다. */
background-color:#ee6688;
}
#contents{
width:300px; /* 넓이 */
float:left; /* 왼쪽 정렬 */
clear: right; /* float 속성을 없애주는 속성입니다. none, left, right, both 값이 있습니다. right는 오른쪽에 더 이상 float이 붙지 않도록 하는 겁니다. */
#bottom{
width:400px;
background-color:#eeeeee;
}오늘 강의는 레이아웃에서 항상 가운데 정렬이 되는 것을 안내해 드렸습니다^^;;
다시 말씀드리지만.. 저도 초짜입니다.
가르치면서 한번 더 배울려고 강좌를 하는 겁니다^^
입시정보제공 사이트 운영자입니다.
2008.01.18 12:39:29 (*.209.33.226)
만약
id선택자를 한번에 여러개 지정하고자 한다면,
어떻게 옳은 방법인가요?
div#header#menu#content#footer {
text-align: left;
vertical-align: top;
}
div#header, menu, content, footer {
text-align: left;
vertical-align: top;
}
아니면 따로따로 노가다 해줘야 하나요??
class 선택자는 한번에 .으로 구분해서 여러개씩 만들고 그러던데욥,
id선택자를 한번에 여러개 지정하고자 한다면,
어떻게 옳은 방법인가요?
div#header#menu#content#footer {
text-align: left;
vertical-align: top;
}
div#header, menu, content, footer {
text-align: left;
vertical-align: top;
}
아니면 따로따로 노가다 해줘야 하나요??
class 선택자는 한번에 .으로 구분해서 여러개씩 만들고 그러던데욥,
2008.01.18 12:50:30 (*.127.99.150)
연재가 늦어져서 죄송합니다. 이제부터는 부지런히 연재해 보도록 노력하겠습니다.
호남삼육님께서 말씀하신것처럼 그렇게 하시는건 무리가 있습니다.
앞으로 다루겠지만, absolute와 relative에 대한 차이도 있고.. 조금의 노가다가 필요한 작업이죠.
호남삼육님 덕에 연재하게 되네요. (이거 말이 좀 이상한데..)
아무튼 늦어져서 죄송합니다.
호남삼육님께서 말씀하신것처럼 그렇게 하시는건 무리가 있습니다.
앞으로 다루겠지만, absolute와 relative에 대한 차이도 있고.. 조금의 노가다가 필요한 작업이죠.
호남삼육님 덕에 연재하게 되네요. (이거 말이 좀 이상한데..)
아무튼 늦어져서 죄송합니다.
2008.01.18 15:33:04 (*.178.188.24)
이해가 팍!!! 옵니다.^^
layout과 css 의 연관성을 이해하기 어려웠는데
제대로 이해했습니다. 감사요*^^*
그런데 이렇게 웹표준을 사용하여 분리해야하는지 이유, 장점은 이해가 가지만,
꼭 왜? 이렇게까지 웹표준이란 명칭으로 어렵게 만들어 사용해야하는지는 모르겠습니다.
어차피 장점들을 실현하기도 쉬운일은 아니더만;;
일일이 분리해야하고, 만든 것을 확인하려면 왔다갔다해야하고;;
눈으로 보면서 만들어도 어려운데, 바로바로 확인해보면서 만들어도 어려운데;;;
차라리 웹에디터로 레이아웃 구성할 수 있도록 하면 좀 쉬울텐데
컴퓨터 성능좋지, 인프라 좋지..... 모든 환경이 이러한 단점들은 이제 별문제가 안되는데요.
솔직히 설명해주신분 처럼 참고그림까지 보여주니까 쉽게 이해가 되지
만약 참고그림이 없이 머릿속에 그려서 만든다고 한다면 이게 어디 쉬운 일입니까?
더구나 이 간단한 부분도 이러려니와
앞으로는 더욱 복잡해질텐데
고생문이 ㅎㅎㅎ
아뭏튼 덕분에 열시미 배워볼랍니다.
layout과 css 의 연관성을 이해하기 어려웠는데
제대로 이해했습니다. 감사요*^^*
그런데 이렇게 웹표준을 사용하여 분리해야하는지 이유, 장점은 이해가 가지만,
꼭 왜? 이렇게까지 웹표준이란 명칭으로 어렵게 만들어 사용해야하는지는 모르겠습니다.
어차피 장점들을 실현하기도 쉬운일은 아니더만;;
일일이 분리해야하고, 만든 것을 확인하려면 왔다갔다해야하고;;
눈으로 보면서 만들어도 어려운데, 바로바로 확인해보면서 만들어도 어려운데;;;
차라리 웹에디터로 레이아웃 구성할 수 있도록 하면 좀 쉬울텐데
컴퓨터 성능좋지, 인프라 좋지..... 모든 환경이 이러한 단점들은 이제 별문제가 안되는데요.
솔직히 설명해주신분 처럼 참고그림까지 보여주니까 쉽게 이해가 되지
만약 참고그림이 없이 머릿속에 그려서 만든다고 한다면 이게 어디 쉬운 일입니까?
더구나 이 간단한 부분도 이러려니와
앞으로는 더욱 복잡해질텐데
고생문이 ㅎㅎㅎ
아뭏튼 덕분에 열시미 배워볼랍니다.





그니까 위에서 네번째 소스에서,
15행에 </div> 로 닫아줘야 하는데 잘려서
14행 <!-- 바텀. 넓이 400픽셀, 배경색상 eeeeee--> 까지만 나온건가요?
아참, '웹표준 교과서'라는 책을 보며 나름대로 공부하고 있는데요,
class 선택자와 id 선택자..에 대해서 나온부분에요,
차이가 class는 문서 안의 '복수'의 요소에 스타일을 적용하는 것인가 아니면 '유일'한 요소에 스타일을 적용하는 것인가. 라고 했는데요..
그런 차이밖에 없다면, 굳이 id라는 선택자를 만들어 놓은 이유가 무엇인지 궁금합니다.
클래스로 생성하고 한군데에서만 1회용으로 써도 상관없지 않나요??
어째서 구분한걸까요? class는 다섯글자고 id는 두글자니까 적용할때 짧은게 더 편해서 그런걸까요? ^^;;
선언할때도 요소명.class명, 요소명#id명 이렇게 보면 . 찍는게 더 편할것 같은데요...
정말정말 궁금합니다..!
또 책에서는 같은 모양의 레이아웃을 짜는데요, clear속성에 right 대신 both를 적용했거든요,
both는 '양쪽 다' 라는걸 알겠는데요, 막상 both라고 줘보니 이상하게 나오네요 ㅠㅠ,
right랑 none은 별 차이가 없었구요,