CSS 레이아웃 만들기 2

2025. 1. 17. 13:37FullStack Steps/CSS Practicing

자 이번 시간은 저번 시간에 이어서 레이아웃 위에 레이아웃을 추가해 볼 것이다.

 

일단 저번 시간에 했던 것을 가져오도록 하자

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #main-box {
            width: 800px;
            height: 600px;
            margin: auto;
            /* 중앙정렬 */
            background-color: #cccccc;
        }

        #header {
            width: 100%;
            height: 100px;
            background-color: #ff8888;
        }

        #aside {
            /* 너비를 부모(main-box)의 30% 주기 */
            width: 30%;
            height: 400px;
            background-color: #ffff88;
            
            /* 부유속성: 왼쪽으로 띄우기 */
            float: left;
        }
        
        #content {
            /* 너비를 부모(main-box)의 70% 주기 */
            width: 70%;
            min-height: 400px;
            /* 높이는 자동증가 */
            height: auto;
            background-color: #88ff88;
            
            /* 부유속성: 왼쪽으로 띄우기 */
            float: left;
        }

        #footer {
            /* 부유 속성 해제 */
            clear: both;
            height: 100px;
            background-color: #8888ff;
        }
    </style>
</head>

<body>
    <div id="main-box">
        <div id="header">header</div>
        <!-- 여기에 aside 창을 하나 만들어주었다 -->
        <div id="aside">aside</div>
        <div id="content">content</div>
        <div id="footer">footer</div>
    </div>
</body>

</html>

 

자 여기서 우리는 content 안에 4 개의 상자를 추가해볼 것이다.

 

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #main-box {
            width: 800px;
            height: 600px;
            margin: auto;
            /* 중앙정렬 */
            background-color: #cccccc;
        }

        #header {
            width: 100%;
            height: 100px;
            background-color: #ff8888;
        }

        #aside {
            width: 30%;
            height: 400px;
            background-color: #ffff88;

            /* 부유속성: 띄우기 */
            float: left;
        }

        #content {

            width: 70%;
            min-height: 400px;
            /* 높이는 자동증가 */
            height: auto;
            background-color: #88ff88;

            float: left;
        }

        #footer {

            /* 부유속성 해제 */
            clear: both;

            height: 100px;
            background-color: #8888ff;
        }
    </style>
</head>

<body>
    <div id="main-box">
        <div id="header">header</div>
        <div id="aside">aside</div>
        <div id="content">
            <!-- 4 개의 아이템을 넣어줌 -->
            <div>[공지사항]</div>
            <div>[최근게시물]</div>
            <div>[최근댓글]</div>
            <div>[유용한사이트]</div>
        </div>
        <div id="footer">footer</div>
    </div>
</body>

</html>

 

자 각 아이템들에게 창을 만들어주자

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #main-box {
            width: 800px;
            height: 600px;
            margin: auto;
            /* 중앙정렬 */
            background-color: #cccccc;
        }

        #header {
            width: 100%;
            height: 100px;
            background-color: #ff8888;
        }

        #aside {
            width: 30%;
            height: 400px;
            background-color: #ffff88;

            /* 부유속성: 띄우기 */
            float: left;
        }

        #content {

            width: 70%;
            min-height: 400px;
            /* 높이는 자동증가 */
            height: auto;
            background-color: #88ff88;

            float: left;
        }

        .mini-box {
            width: 45%;
            height: 180px;
            border: 1px solid blue;
            margin: 10px;
            box-shadow: 1px 1px 2px black;
        }

        #footer {

            /* 부유속성 해제 */
            clear: both;

            height: 100px;
            background-color: #8888ff;
        }
    </style>
</head>

<body>
    <div id="main-box">
        <div id="header">header</div>
        <div id="aside">aside</div>
        <div id="content">
            <!-- 4 개의 아이템을 넣어줌 -->
            <div class="mini-box">[공지사항]</div>
            <div class="mini-box">[최근게시물]</div>
            <div class="mini-box">[최근댓글]</div>
            <div class="mini-box">[유용한사이트]</div>
        </div>
        <div id="footer">footer</div>
    </div>
</body>

</html>

박스를 넣어 주었지만 필자가 의도한 2 X 2 형식으로 나오지 않았다.

우리는 여기서 간단하게 그저 저번 시간에 배운 부유 속성만 사용해주면 쉽게 할 수 있다.

 

하지만 그 전에 앞서서 class 속성을 이용해서 상자 4개에 같은 속성을 아주 간단하게 넣어준 것에 주목하면 좋을 것 같다.

자 이제 2 X 2 형태로 만들어 보도록하자

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #main-box {
            width: 800px;
            height: 600px;
            margin: auto;
            /* 중앙정렬 */
            background-color: #cccccc;
        }

        #header {
            width: 100%;
            height: 100px;
            background-color: #ff8888;
        }

        #aside {
            width: 30%;
            height: 400px;
            background-color: #ffff88;

            /* 부유속성: 띄우기 */
            float: left;
        }

        #content {

            width: 70%;
            min-height: 400px;
            /* 높이는 자동증가 */
            height: auto;
            background-color: #88ff88;

            float: left;
        }

        .mini-box {
            width: 45%;
            height: 180px;
            border: 1px solid blue;
            margin: 10px;
            box-shadow: 1px 1px 2px black;

            /* 부유 속성 추가 */
            float: left;
        }

        #footer {

            /* 부유속성 해제 */
            clear: both;

            height: 100px;
            background-color: #8888ff;
        }
    </style>
</head>

<body>
    <div id="main-box">
        <div id="header">header</div>
        <div id="aside">aside</div>
        <div id="content">
            <!-- 4 개의 아이템을 넣어줌 -->
            <div class="mini-box">[공지사항]</div>
            <div class="mini-box">[최근게시물]</div>
            <div class="mini-box">[최근댓글]</div>
            <div class="mini-box">[유용한사이트]</div>
        </div>
        <div id="footer">footer</div>
    </div>
</body>

</html>

이제 색깔만 넣어주면 완벽할 듯 하다.

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    <style>
        * {
            margin: 0;
            padding: 0;
        }

        #main-box {
            width: 800px;
            height: 600px;
            margin: auto;
            /* 중앙정렬 */
            background-color: #cccccc;
        }

        #header {
            width: 100%;
            height: 100px;
            background-color: #ff8888;
        }

        #aside {
            width: 30%;
            height: 400px;
            background-color: #ffff88;

            /* 부유속성: 띄우기 */
            float: left;
        }

        #content {

            width: 70%;
            min-height: 400px;
            /* 높이는 자동증가 */
            height: auto;
            background-color: #88ff88;

            float: left;
        }

        .mini-box {
            width: 45%;
            height: 180px;
            border: 1px solid blue;
            margin: 10px;
            box-shadow: 1px 1px 2px black;

            /* 부유 속성 추가 */
            float: left;
        }

        /* 각 박스마다 색깔을 부여하기 위한 클래스 선택자 작성 */
        .red-box {
            background-color: red;
        }
        
        .yellow-box {
            background-color: yellow;
        }
        
        .cyan-box {
            background-color: cyan;
        }
        
        .skyblue-box {
            background-color: skyblue;
        }
        /* 각 박스마다 색깔을 부여하기 위한 클래스 선택자 작성 */

        #footer {

            /* 부유속성 해제 */
            clear: both;

            height: 100px;
            background-color: #8888ff;
        }
    </style>
</head>

<body>
    <div id="main-box">
        <div id="header">header</div>
        <div id="aside">aside</div>
        <div id="content">
            <!-- 4 개의 아이템을 넣어줌 -->
            <!-- 4 개의 아이템 박스에 색깔을 입혀주는 class 부여
            클래스를 다중으로 적용할 때는 큰 따옴표 안에 띄어쓰기로 적용해주면 된다 -->
            <div class="mini-box red-box">[공지사항]</div>
            <div class="mini-box yellow-box">[최근게시물]</div>
            <div class="mini-box cyan-box">[최근댓글]</div>
            <div class="mini-box skyblue-box">[유용한사이트]</div>
        </div>
        <div id="footer">footer</div>
    </div>
</body>

</html>

자 이렇게 간단한 레이아웃을 만들어 보았다. 다음 시간에는 엘리먼트의 위치를 지정해주는 CSS를 다루도록하겠다.