HTML

레이아웃 세 가지 방식

Hyeon been 2023. 2. 28. 15:59

한번씩 읽고 가세요.

“ 지연되는 프로젝트에 인력을 더 투입하면 오히려 더 늦어진다. ”

- Frederick Philips Brooks
Mythical Man-Month 저자
728x90

float - 방식

float는 CSS의 속성 중 하나로, 요소를 왼쪽이나 오른쪽으로 떠서 배치하는 방식입니다. float를 이용하여 요소들을 배치하면, 다음 요소가 float된 요소 주위로 배치됩니다. 이 방식은 과거에 많이 사용되었으나, 요소의 높이가 자동으로 조절되지 않기 때문에 레이아웃이 깨질 위험이 있습니다.

아래의 이미지 코드 예시 입니다.

    <style>
        * {
            padding: 0;
            margin: 0;
        }
        body {
            background-color: #E8F5E9;
        }

        #wrap {
            width: 1200px;
            margin: 0 auto;
        }
        #header {
            width: 100%;
            height: 100px;
            background-color: #C8E6C9;
        }
        #nav {
            width: 100%;
            height: 100px;
            background-color: #A5D6A7;
        }
        #aside {
            width: 25%;
            height: 780px;
            background-color: #81C784;
            float: left;
        }
        #section {
            width: 50%;
            height: 780px;
            background-color: #4CAF50;
            float: left
        }
        #article {
            width: 25%;
            height: 780px;
            background-color: #66BB6A;
            float: left;
        }
        
        #footer {
            width: 100%;
            height: 100px;
            background-color: #43A047;
            clear:both;
        }
        @media (max-whith: 1300px){
            #wrap {
                width: 96%;
            }
        }

    </style>
</head>
<body>
    <div id="wrap">
        <header id="header"></header>
        <nav id="nav"></nav>
        <aside id="aside"></aside>
        <section id="section"></section>
        <article id="article"></article>        
        <footer id="footer"></footer>
    </div>
    
</body>
</html>

위 코드의 결과 레이아웃 입니다.

 

flex -방식

Flexbox는 1차원 레이아웃 방식으로, 요소를 수평 또는 수직으로 배치할 수 있습니다. Flexbox를 이용하여 요소를 배치하면, 요소들이 부모 요소 내에서 유연하게 배치되며, 부모 요소의 크기에 따라 자동으로 조절됩니다. Flex 방식은 반응형 디자인에 유리하며, 요소의 순서를 변경할 수 있어서 유용합니다.

아래의 이미지 코드 예시 입니다.

    <style>
        * {
            padding: 0;
            margin: 0;
        }
        body {
            background-color: #E1F5FE;
        }
        #wrap {
            width: 1200px;
            margin: 0 auto;
        }
        #header {
            width: 1200px;
            height: 100px;
            background-color: #B3E5FC;
        }
        #nav {
            width: 1200px;
            height: 100px;
            background-color: #81D4FA;
        }
        #main {
            width: 1200px;
            height: 780px; 
            display: flex;         
        }
        #aside {
            width: 300px;
            height: 780px;
            background-color: #4FC3F7;}

        #section {
            width: 900px;
            display: flex;   
            flex-wrap: wrap;
            

        }
        
        #article {
            width: 900px;
            height: 260px;
            background-color: #29B6F6;
        }
        #article1 {
            width: 900px;
            height: 260px;
            background-color: #03A9F4;
        }
        #article2 {
            width: 900px;
            height: 260px;
            background-color: #039BE5;
        }
        #footer {
            width: 1200px;
            height: 100px;
            background-color: #0288D1;
        }
    </style>
</head>
<body>
    <div id="wrap">
        <header id="header"></header> 
        <nav id="nav"></nav> 
        <main id="main">
            <aside id="aside"></aside>
            <section id="section">            
                <article id="article"></article>
                <article1 id="article1"></article1>
                <article2 id="article2"></article2>
            </section>
        </main> 
        <footer id="footer"></footer> 
    </div>
    
</body>

위 코드의 결과 레이아웃 입니다.

gird - 방식

CSS Grid는 2차원의 그리드 시스템을 이용하여 요소를 배치하는 방식입니다. Grid를 이용하여 요소를 배치하면, 그리드 안에 있는 각 셀들에 요소를 배치할 수 있으며, 행과 열의 크기를 지정하여 원하는 형태의 레이아웃을 만들 수 있습니다. Grid 방식은 요소의 배치가 유연하고 간편하며, 반응형 디자인을 구현하기에 적합합니다.

아래의 이미지 코드 예시 입니다.

<style>
        * {
            padding: 0;
            margin: 0;
        }
        body {
            background-color: #FFF3E0;
        }
        #wrap {
            width: 1200px;
            margin: 0 auto;
            display: grid;
            grid-template-areas: 
                "header header"
                "nav nav"
                "aside section"
                "footer footer"
            ;
            grid-template-rows: 100px 100px 780px 100px;
            grid-template-columns: 400px 800px;
        }
        #header {
            background-color: #FFE0B2;
            grid-area: header;
        }
        #nav {
            background-color: #FFCC80;
            grid-area: nav;

        }
        #aside {
            background-color: #FFB74D;
            grid-area: aside;

        }
        #section {
            background-color: #FFA726;
            grid-area: section;

        }
        #footer {
            background-color: #FF9800;
            grid-area: footer;
        }
    </style>
</head>
<body>
    <div id="wrap">
        <header id="header"></header>
        <nav id="nav"></nav>
        <aside id="aside"></aside>
        <section id="section"></section>
        <footer id="footer"></footer>
    </div>
    
</body>

위 코드의 결과 레이아웃 입니다.