| 일 | 월 | 화 | 수 | 목 | 금 | 토 | 
|---|---|---|---|---|---|---|
| 1 | ||||||
| 2 | 3 | 4 | 5 | 6 | 7 | 8 | 
| 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
| 16 | 17 | 18 | 19 | 20 | 21 | 22 | 
| 23 | 24 | 25 | 26 | 27 | 28 | 29 | 
| 30 | 
- Trie
 - 이진탐색
 - 스토어드 프로시저
 - Two Points
 - Hash
 - Brute Force
 - Stored Procedure
 - union find
 - 다익스트라
 - binary search
 - DP
 - String
 - SQL
 - MYSQL
 - 그래프
 - two pointer
 - Dijkstra
 
- Today
 
- Total
 
codingfarm
웹페이지 레이아웃 실습 본문

위와 같은 형태의 웹페이지를 만드려 한다.
우선 레이아웃을 대략적으로 만들어보자.

위 레이아웃과 같은 형태의 웹페이지를 만든다
기본적인 구조는 아래와 같다
| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
 | 
 <!doctype html> 
<html> 
    <body> 
        <!--1행--> 
        <header> 
            <nav></nav> 
            <nav></nav> 
        </header> 
        <!--2행--> 
        <div id="content"> 
            <section></section> 
            <aside></aside> 
        </div> 
        <!--3행--> 
        <footer></footer> 
    </body>  
</html> 
 | 
cs | 
header
일단 header부터 작성해보겠다.

| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72 
73 
74 
75 
76 
77 
78 
79 
80 
81 
82 
83 
84 
85 
86 
87 
88 
89 
90 
91 
92 
93 
94 
95 
96 
97 
98 
99 
100 
 | 
 <head> 
    <!-- 초기화 --> 
    <link href="http://fonts.googleapis.com/css?family=Henny+Penny" rel="stylesheet" type="text/css" /> 
    <!-- 초기화 --> 
    <style> 
        * { margin: 0; padding: 0; } 
        body { font-family: 'Times New Roman', serif; } 
        li { list-style: none; } 
        a { text-decoration: none; } 
        img { border: 0; } 
    </style> 
    <!-- 헤더 --> 
    <style> 
        #main_header { 
            /* 중앙 정렬*/ 
            width: 960px; margin: 0 auto; 
            /* 절대 좌표 */ 
            height: 160px; 
            position: relative; 
        } 
        #main_header > #title { 
            position: absolute; 
            left: 20px; top: 30px; 
        } 
        #main_header > #main_gnb { 
            position: absolute; 
            right: 0; top: 0; 
        } 
        #main_header > #main_lnb { 
            position: absolute; 
            right: 0; bottom: 10px; 
        } 
    </style> 
    <!-- 타이틀 --> 
    <style> 
        #title { 
            font-family: 'Henny Penny', cursive;  
        } 
    </style> 
    <!-- 메뉴(1) --> 
    <style> 
        #main_gnb > ul { overflow: hidden; } 
        #main_gnb > ul > li { float: left; } 
        #main_gnb > ul > li > a { 
            display: block; 
            padding: 2px 10px; 
            border: 1px solid black; 
        } 
        #main_gnb > ul > li > a:hover { 
            background: black; 
            color: white; 
        } 
        #main_gnb > ul > li:first-child > a { border-radius: 10px 0 0 10px; } 
        #main_gnb > ul > li:last-child > a  { border-radius: 0 10px 10px 0; } 
    </style> 
    <!-- 메뉴(2) --> 
    <style> 
        #main_lnb > ul { overflow: hidden; } 
        #main_lnb > ul > li { float: left; } 
        #main_lnb > ul > li > a { 
            display: block; 
            padding: 10px 20px; 
            border: 1px solid black; 
        } 
        #main_lnb > ul > li > a:hover { 
            background: black; 
            color: white; 
        } 
        #main_lnb > ul > li:first-child > a { border-radius: 10px 0 0 10px; } 
        #main_lnb > ul > li:last-child > a  { border-radius: 0 10px 10px 0; } 
    </style> 
</head> 
<body> 
    <header id="main_header"> 
        <div id="title"> 
            <h1>Rint Development</h1> 
            <h2>HTML5 + CSS3 Basic</h2> 
        </div> 
        <nav id="main_gnb"> 
            <ul> 
                <li><a href="#">Web</a></li> 
                <li><a href="#">Mobile</a></li> 
                <li><a href="#">Game</a></li> 
                <li><a href="#">Simulation</a></li> 
                <li><a href="#">Data</a></li> 
            </ul> 
        </nav> 
        <nav id="main_lnb"> 
            <ul> 
                <li><a href="#">HTML5</a></li> 
                <li><a href="#">CSS3</a></li> 
                <li><a href="#">JavaScript</a></li> 
                <li><a href="#">jQuery</a></li> 
                <li><a href="#">Node.js</a></li> 
            </ul> 
        </nav> 
    </header> 
</body> 
 | 
cs | 
main_header에는 하위 태그들을 모두 포함할 수 있을 정도의 너비와 높이를 적용했다.
그리고 하위태그들이 절대좌표를 사용했으므로 상대좌표를 사용한다.
title과 main_gnb, main_lnb에 절대좌표를 적용하여 기획했던곳에 위치시켰다.
main_gnb와 main_lnb의 하위에 있는 각 li 태그들의 float속성에 left를 적용하여 일렬로 정렬되게끔했다.
li의 float속성에 left를 적용했으므로 상위 태그인 ul의 overflow에는 hidden을 적용했다.
그리고 스위치 위에 마우스가 올라갔을때 버튼의 색을 다르게 만들기 위해서 a 태그의 hover클래스 내부에 배경색과 글자색을 설정하였다.
content

| 
 1 
2 
3 
4 
5 
6 
7 
8 
9 
10 
11 
12 
13 
14 
15 
16 
17 
18 
19 
20 
21 
22 
23 
24 
25 
26 
27 
28 
29 
30 
31 
32 
33 
34 
35 
36 
37 
38 
39 
40 
41 
42 
43 
44 
45 
46 
47 
48 
49 
50 
51 
52 
53 
54 
55 
56 
57 
58 
59 
60 
61 
62 
63 
64 
65 
66 
67 
68 
69 
70 
71 
72 
73 
74 
75 
76 
77 
78 
79 
80 
81 
82 
83 
84 
85 
86 
87 
88 
89 
90 
91 
92 
93 
94 
95 
96 
97 
98 
99 
100 
101 
102 
103 
104 
105 
106 
107 
108 
109 
110 
111 
112 
113 
114 
115 
116 
117 
118 
119 
120 
121 
122 
123 
124 
125 
126 
127 
128 
129 
130 
131 
132 
133 
134 
135 
136 
137 
138 
139 
140 
141 
142 
143 
144 
145 
146 
147 
148 
149 
150 
151 
152 
153 
154 
155 
156 
157 
158 
159 
160 
161 
162 
163 
164 
165 
166 
167 
168 
169 
170 
171 
172 
173 
174 
175 
176 
177 
178 
179 
180 
181 
182 
183 
184 
185 
186 
187 
188 
189 
190 
191 
192 
 | 
 <head> 
    <style> 
        #content { 
            /* 중앙 정렬 */ 
            width: 960px; margin: 0 auto; 
            /* 수평 레이아웃 구성 */ 
            overflow: hidden; 
        } 
        #content > #main_section { 
            width: 750px; 
            float: left; 
        } 
        #content > #main_aside { 
            width: 200px; 
            float: right; 
        } 
    </style> 
    <!-- 본문 --> 
    <style> 
        #main_section > article.main_article { 
            margin-bottom: 10px; 
            padding: 20px; 
            border: 1px solid black; 
        } 
    </style> 
    <!-- 사이드 --> 
    <style> 
        /* 첫 번째 탭 */ 
        input:nth-of-type(1) { display: none; } 
        input:nth-of-type(1) ~ div:nth-of-type(1) { display: none; } 
        input:nth-of-type(1):checked ~ div:nth-of-type(1) { display: block; } 
        /* 두 번째 탭 */ 
        input:nth-of-type(2) { display: none; } 
        input:nth-of-type(2) ~ div:nth-of-type(2) { display: none; } 
        input:nth-of-type(2):checked ~ div:nth-of-type(2) { display: block; } 
        /* 탭 모양 구성 */ 
        section.buttons { overflow: hidden; } 
        section.buttons > label {  
            /* 수평 정렬 */ 
            display: block; float: left; 
            /* 크기 및 글자 위치 지정*/ 
            width: 100px; height: 30px; 
            line-height: 30px; 
            text-align: center; 
            /* 테두리 지정 */ 
            box-sizing: border-box; 
            border: 1px solid black; 
            /* 색상 지정*/ 
            background: black; 
            color: white; 
        } 
        input:nth-of-type(1):checked ~ section.buttons >  label:nth-of-type(1) { 
            background: white; 
            color: black; 
        } 
        input:nth-of-type(2):checked ~ section.buttons >  label:nth-of-type(2) { 
            background: white; 
            color: black; 
        } 
    </style> 
    <!-- 목록 --> 
    <style> 
        .item { 
            overflow: hidden; 
            padding: 10px; 
            border: 1px solid black; 
            border-top: none; 
        } 
        .thumbnail { 
            float: left; 
        } 
        .description { 
            float: left; 
            margin-left: 10px; 
        } 
        .description > strong { 
            display: block; 
            width: 120px; 
            white-space: nowrap; 
            overflow: hidden; 
            text-overflow: ellipsis; 
        } 
    </style> 
</head> 
<body> 
    <div id="content"> 
        <section id="main_section"> 
            <article class="main_article"> 
                <h1>Main Article</h1> 
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur in magna libero. Sed nec pharetra nunc. Proin eget magna id ipsum eleifend cursus sit amet nec lectus. Nunc quis lacus magna. Aliquam blandit, sapien ut viverra fermentum, elit tortor ornare nisi, in luctus sem massa pulvinar turpis. Cras tincidunt dictum urna ut ultricies. Nullam diam nibh, pellentesque non laoreet ut, bibendum nec mauris. Maecenas pulvinar porttitor laoreet. Vivamus bibendum purus nisl, eget aliquam lectus. Maecenas justo libero, euismod sit amet suscipit eu, vulputate eget neque. Aliquam quam est, blandit nec iaculis non, suscipit vel nunc. Proin et odio aliquam erat pharetra accumsan et quis neque. Vivamus interdum accumsan leo eu adipiscing. Integer accumsan elit non turpis faucibus porttitor. Aliquam scelerisque nisi et turpis pretium at ultricies turpis pharetra.</p> 
            </article> 
            <article class="main_article"> 
                <h1>Main Article</h1> 
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur in magna libero. Sed nec pharetra nunc. Proin eget magna id ipsum eleifend cursus sit amet nec lectus. Nunc quis lacus magna. Aliquam blandit, sapien ut viverra fermentum, elit tortor ornare nisi, in luctus sem massa pulvinar turpis. Cras tincidunt dictum urna ut ultricies. Nullam diam nibh, pellentesque non laoreet ut, bibendum nec mauris. Maecenas pulvinar porttitor laoreet. Vivamus bibendum purus nisl, eget aliquam lectus. Maecenas justo libero, euismod sit amet suscipit eu, vulputate eget neque. Aliquam quam est, blandit nec iaculis non, suscipit vel nunc. Proin et odio aliquam erat pharetra accumsan et quis neque. Vivamus interdum accumsan leo eu adipiscing. Integer accumsan elit non turpis faucibus porttitor. Aliquam scelerisque nisi et turpis pretium at ultricies turpis pharetra.</p> 
            </article> 
            <article class="main_article"> 
                <h1>Main Article</h1> 
                <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur in magna libero. Sed nec pharetra nunc. Proin eget magna id ipsum eleifend cursus sit amet nec lectus. Nunc quis lacus magna. Aliquam blandit, sapien ut viverra fermentum, elit tortor ornare nisi, in luctus sem massa pulvinar turpis. Cras tincidunt dictum urna ut ultricies. Nullam diam nibh, pellentesque non laoreet ut, bibendum nec mauris. Maecenas pulvinar porttitor laoreet. Vivamus bibendum purus nisl, eget aliquam lectus. Maecenas justo libero, euismod sit amet suscipit eu, vulputate eget neque. Aliquam quam est, blandit nec iaculis non, suscipit vel nunc. Proin et odio aliquam erat pharetra accumsan et quis neque. Vivamus interdum accumsan leo eu adipiscing. Integer accumsan elit non turpis faucibus porttitor. Aliquam scelerisque nisi et turpis pretium at ultricies turpis pharetra.</p> 
            </article> 
        </section> 
        <aside id="main_aside"> 
            <input id="first" type="radio" name="tab" checked="checked" /> 
            <input id="second" type="radio" name="tab" /> 
            <section class="buttons"> 
                <label for="first">First</label> 
                <label for="second">Second</label> 
            </section> 
            <div class="tab_item"> 
                <ul> 
                    <li class="item"><a href="#"> 
                        <div class="thumbnail"> 
                            <img src="http://placehold.it/45x45" /> 
                        </div> 
                        <div class="description"> 
                            <strong>HTML5 Canvas</strong><p>2012-03-15</p> 
                        </div> 
                    </a></li> 
                    <li class="item"><a href="#"> 
                        <div class="thumbnail"> 
                            <img src="http://placehold.it/45x45" /> 
                        </div> 
                        <div class="description"> 
                            <strong>HTML5 Audio</strong><p>2012-03-15</p> 
                        </div> 
                    </a></li> 
                    <li class="item"><a href="#"> 
                        <div class="thumbnail"> 
                            <img src="http://placehold.it/45x45" /> 
                        </div> 
                        <div class="description"> 
                            <strong>HTML5 Video</strong><p>2012-03-15</p> 
                        </div> 
                    </a></li> 
                    <li class="item"><a href="#"> 
                        <div class="thumbnail"> 
                            <img src="http://placehold.it/45x45" /> 
                        </div> 
                        <div class="description"> 
                            <strong>HTML5 Semantic Web</strong><p>2012-03-15</p> 
                        </div> 
                    </a></li> 
                </ul> 
            </div> 
            <div class="tab_item"> 
                <ul> 
                    <li class="item"><a href="#"> 
                        <div class="thumbnail"> 
                            <img src="http://placehold.it/45x45" /> 
                        </div> 
                        <div class="description"> 
                            <strong>CSS3 Transition</strong><p>2012-03-15</p> 
                        </div> 
                    </a></li> 
                    <li class="item"><a href="#"> 
                        <div class="thumbnail"> 
                            <img src="http://placehold.it/45x45" /> 
                        </div> 
                        <div class="description"> 
                            <strong>CSS3 Animation</strong><p>2012-03-15</p> 
                        </div> 
                    </a></li> 
                    <li class="item"><a href="#"> 
                        <div class="thumbnail"> 
                            <img src="http://placehold.it/45x45" /> 
                        </div> 
                        <div class="description"> 
                            <strong>CSS3 Border</strong><p>2012-03-15</p> 
                        </div> 
                    </a></li> 
                    <li class="item"><a href="#"> 
                        <div class="thumbnail"> 
                            <img src="http://placehold.it/45x45" /> 
                        </div> 
                        <div class="description"> 
                            <strong>CSS3 Box</strong><p>2012-03-15</p> 
                        </div> 
                    </a></li> 
                </ul> 
            </div> 
        </aside> 
    </div> 
</body> 
 | 
cs | 
좌측의 main_section과 우측의 main_aside 2개 레이아웃으로 나뉜다.
각각의 float속성에 left와 right를 적용하여 content레이아웃에서 양쪽으로 붙도록 하였다
좌측 main_section 레이아웃은 눈여겨 볼만한게 없다.
box 속성을 이용하여 각 main_article간의 레이아웃을 만든것을 볼 수 잇다.
margin-bottom에 px값을 주어서 상하로 간격을 띄우게 만들었으며
padding 속성으로 내용물들과 경계선사이에 틈을 만들었다.
여기서 주목할 부분은 우측의 main_aside 레이아웃이다.
상단에 first와 second 별도의 버튼이 있으며 활성화시 흰색으로, 비활성화시 검은색으로 바뀐다.
114,115 : 버튼이 아니라 문자열을 클릭해도 반응하게끔 하기 위해 label 기능으로 버튼과 문자열을 묶어주었다.
30~37 : 실제 버튼이 보이지 않게끔 input 태그의 display 속성을 none으로 설정하였다. 이때 평소상태과 checked상태 2가지 모두 다 none으로 설정해주어야 한다. 또한 실제 내용이 포함된 div태그 또한 input의 상태에 따라 display상태를 none과 block 로 표시되게끔 하였다.
41~65 : 선택 및 미선택 상태에 따라 다른 효과를 주도록 하고 자체레이아웃을 지정하였다.
87 : 글의 내용이 레이아웃을 벗어나면 줄여서 표시되게끔 설정하였다,