Post

CSS의 모든 것 7부 - 영역 분할

전 포스팅까지는 CSS의 속성들에 대해 대부분 언급하였습니다. 이번 마지막 포스팅에서는 홈페이지의 일반적인 배치 구성과 스타일에 대해, 대략적인 HTML코드와 이에 대응하는 CSS를 셋팅해 봤습니다.

1. CSS속성 - 영역 분할

아래는 일반적인 홈페이지를 구성하는 요소들을 이용해서 작성해본 HTML코드와 CSS코드 입니다. 보통 홈페이지를 구성하는 요소들은 header, navigation, side bar, main content, footer들이 있습니다. 이에 대한 자세한 내용은 HTML의 모든것 5부 - HTML의 구조적 정보와 tags, 그리고 head tags을 참조해 주시기 바랍니다. 아래는 예시 코드로 자세한 내용들은 주석처리 하였습니다.

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
    * {
        box-sizing: border-box; /* 모든 tag의 width값이 padding과 border의 두께값까지 포함된 것이 적용되게 해줌. */
    }

    .header {
        background-image: url('something.img');
        padding: 10px;
        color: white;
    }

    body{
        margin: 0;
    }

    .nav ul{
        list-style-type: none;
        margin: 0;
        padding: 0;
        background-color: blue;
    }

    .nav ul li {
        float: left; /* 위로 뜬다는 의미로, tag들 위로 떠서 왼쪽으로 가고, 그 뒤에 나머지 tag들은 계속 왼쪽방향으로 둘러싸집니다. */
        position: relative; /* 자식 tag들이 위치를 정할때, 부모 tag의 위치를 기준으로 위치를 잡습니다. */
    }

    .nav ul::after { /* 여기서 after는 pseudo element로, 가상 엘리먼트를 의미합니다.  */
        content: " ";
        display: table;
        clear: both; /* float 속성값이 left이던, right이던 둘다 그 속성을 해지한다는 의미 이다. */
    }

    .nav ul li a {
        display: block;
        padding: 10px 20px;
        text-decoration: none; /* 밑줄이 없어짐 */
        white-space: nowrap; /* 줄바뀜이 안됨 */
        color: white;
    }

    .nav li:hover > a{ /* nav class에 있는 li에 hover되었을때, 그 자식 a tag들에 적용시킨다는 의미. */
        background-color: red;
    }

    .nav li ul{
        display: none; /* sub menu가 마우스 위로 올라가기 전까지는 안보이게 하고 싶기 때문에, 이렇게 설정함. */
        background: gray;
    }

    .nav li:hover > ul{ /* 마우스를 올렸을때, sub menu가 보이도록 설정함. */
        display: block;
        position: absolute;
    }

    .nav ul ul ul{ /* 3단계 메뉴에 위치속성을 지정함. */
        left: 100%;
        top: 0;
    }

    .side {
        float: left;
        padding: 10px;
        width: 150px;
    }

    .main{
        float:left;
        padding: 10px;
        width: calc(100% - 150px); /* 마이너스 양쪽으로 space를 반드시 입력해야함.  */
    }

    .footer{
        clear: both;
        background-color: lightgray;
        padding: 10px;
        text-align: center;
    }

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
<!DOCTYPE html>
<html>
    <head>
        <title>My website</title>
        <link rel="stylesheet" href="somewhere/style.css">
    </head>
    <body>
        <div class="header">
            <h1>Welcome to my homepage</h1>
        </div>
        <div class="nav">
            <ul>
                <li><a href="#">Home</a></li>
                <li><a href="#">News</a></li>
                <li><a href="#">Services</a>
                    <ul>
                        <li><a href="#">Service 1</a></li>
                        <li><a href="#">Service 2</a></li>
                        <li><a href="#">Service 3</a>
                            <ul>
                                <li><a href="#">Item 1</a></li>
                                <li><a href="#">Item 2</a></li>
                            </ul>
                        </li>
                    </ul>
                </li>
                <li><a href="#">About</a></li>
            </ul>
        </div>

        <div class="side">
            <h2>Side</h2>
            <p>This is Side bar</p>
        </div>

        <div class="main">
            <h2>Main Content</h2>
            <p>Main content 1</p>
            <p>Main contetn 2</p>
        </div>

        <div class="footer">
            <h1>Footer</h1>
        </div>


    </body>
</html>
This post is licensed under CC BY 4.0 by the author.