본문 바로가기
사이트 만들기/LAYOUT

레이아웃03

by 코딩달림 2022. 8. 4.
728x90

레이아웃03

이번 레이아웃은 심화된 레이아웃으로 article 블록이 하나 더 추가됐으며, article 블록이 aside 블록과 수직으로 나란히 붙어 있어 추가적인 블록 작업을 해주어야 합니다.

float을 이용한 레이아웃

float 방식은 옮겨야 할 블록에 float:left로 정렬을 하고 clear:both를 통해 플로팅을 닫아 형태를 완성합니다.
많이 쓰이는 방식이나 복잡한 구조일수록 사용하기 힘든 단점이 있습니다. float 방식은 clear, overflow, clearfix 세가지 방식이 있습니다. 이번엔 clearfix 방식입니다.

* {
    margin: 0;
    padding: 0;
}
body {
    background-color: #E1F5FE;
    height: 100%;
}
#wrap {
    margin: 0 auto;
    width: 1200px;
}
#header {
    height: 100px;
    background-color: #B3E5FC;
}
#nav {
    height: 100px;
    background-color: #81D4FA;
}
#main {
}
#aside {
    width: 30%;
    height: 780px;
    background-color: #4FC3F7;
    float: left;
}
#section {
    width: 70%;
    height: 260px;
    background-color: #29B6F6;
    float: left;
}
#article1 {
    width: 70%;
    height: 260px;
    background-color: #03A9F4;
    float: left;
}
#article2 {
    width: 70%;
    height: 260px;
    background-color: #039BE5;
    float: left;
}
#footer {
    height: 100px;
    background-color: #0288D1;
}
.clearfix:before {}
.clearfix::after {
    content: '';
    display: block;
    line-height: 0;
}
.clearfix::after {
    clear: both;
}

@media (max-width: 1300px){
    #wrap {
        width: 96%;
    }
    #article1 {
        width: 35%;
        height: 520px;
    }
    #article2 {
        width: 35%;
        height: 520px;
    }
}
@media (max-width: 768px){
    #wrap {
        width: 100%;
    }
    #section {
        width: 70%;
        height: 390px;
    }
    #article1 {
        width: 70%;
        height: 390px;
    }
    #article2 {
        display: none;
    }
}
@media (max-width: 480px){
    #wrap {
        width: 100%;
    }
    #aside {
        width: 100%;
        height: 200px;
    }    
    #section {
        width: 100%;
        height: 430px;
    }
    #article1 {
        width: 100%;
        height: 150px;
    }
    #article2 {
        display: none;
    }
}

flex를 이용한 레이아웃

flex 방식은 정렬해야 할 블록에 flex-wrap을 주어 떨어진 블록을 붙이면서 정렬시키는 방식입니다.
간단한 코드만으로 형태를 완성할 수 있는 장점이 있지만 복잡한 구조에선 추가 작업이 필요하며 익스플로러 등의 일부 브라우저에선 호환이 안되는 단점이 있습니다. flex는 한번에 하나의 블록만 정렬하므로 이런 레이아웃에선 블록을 하나로 묶어 정렬해야 합니다.

* {
    margin: 0;
    padding: 0;
}
body {
    background-color: #E1F5FE;
    height: 100%;
}
#wrap {
    margin: 0 auto;
    width: 1200px;
}
#header {
    height: 100px;
    background-color: #B3E5FC;
}
#nav {
    height: 100px;
    background-color: #81D4FA;
}
#main {
    display: flex;
    flex-wrap: wrap;
    flex-direction: column;
    height: 780px;
}
#aside {
    width: 30%;
    height: 780px;
    background-color: #4FC3F7;
}
#section {
    width: 70%;
    height: 260px;
    background-color: #29B6F6;
}
#t_article {
}
#article1 {
    width: 100%;
    height: 260px;
    background-color: #03A9F4;
}
#article2 {
    width: 100%;
    height: 260px;
    background-color: #039BE5;
}
#footer {
    height: 100px;
    background-color: #0288D1;
}

@media (max-width: 1300px){
    #wrap {
        width: 96%;
    }
    #t_article {
        display: flex;
    }
    #article1 {
        width: 50%;
        height: 520px;
    }
    #article2 {
        width: 50%;
        height: 520px;
    }
}
@media (max-width: 768px){
    #wrap {
        width: 100%;
    }
    #section {
        height: 390px;
    }      
    #article1 {
        width: 100%;
        height: 390px;
    }
    #article2 {
        display: none;
    }
}
@media (max-width: 480px){
    #aside {
        width: 100%;
        height: 200px;
    }
    #section {
        width: 100%;
        height: 430px;
    }      
    #article1 {
        width: 100%;
        height: 150px;
    }
}

grid를 이용한 레이아웃

gird 방식은 블록을 테이블처럼 구역별로 나누어 부모 요소가 자식 요소를 컨트롤 함으로써 형태를 완성하는 방식입니다.
비교적 많은 코드가 필요하지만 부모 요소만 조절하면 모든 블록을 조절할 수 있어 복잡한 구조일수록 편해집니다.

* {
    margin: 0;
    padding: 0;
}
body {
    background-color: #E1F5FE;
    height: 100%;
}
#wrap {
    margin: 0 auto;
    width: 1200px;
}
#header {
    height: 100px;
    background-color: #B3E5FC;
}
#nav {
    height: 100px;
    background-color: #81D4FA;
}
#main {
    display: grid;
    grid-template-areas: 
        "aside section section"
        "aside article1 article1"
        "aside article2 article2"
    ;
    grid-template-columns: 25% 75%;
    grid-template-rows: 260px 260px 260px;
}
#aside {
    background-color: #4FC3F7;
    grid-area: aside;
}
#section {
    background-color: #29B6F6;
    grid-area: section;
}
#article1 {
    background-color: #03A9F4;
    grid-area: article1;
}
#article2 {
    background-color: #039BE5;
    grid-area: article2;
}
#footer {
    height: 100px;
    background-color: #0288D1;
}

@media (max-width: 1300px){
    #wrap {
        width: 96%;
    }
    #main {
        display: grid;
        grid-template-areas: 
            "aside section section"
            "aside article1 article2"
        ;
        grid-template-columns: 25% 37.5% 37.5%;
        grid-template-rows: 260px 520px;
    }
}
@media (max-width: 768px){
    #wrap {
        width: 100%;
    }
    #main {
        grid-template-areas: 
            "aside section"
            "aside article1"
        ;
        grid-template-columns: 25% 75%;
        grid-template-rows: 390px 390px;
    }
    #article2 {
        display: none;
    }

}
@media (max-width: 480px){
    #main {
        grid-template-areas: 
            "aside"
            "section"
            "article1"
        ;
        grid-template-columns: 100%;
        grid-template-rows: 200px 430px 150px;
    }
    #article2 {
        display: none;
    }
}

결과

'사이트 만들기 > LAYOUT' 카테고리의 다른 글

레이아웃04  (4) 2022.08.05
레이아웃05  (4) 2022.08.04
레이아웃02  (3) 2022.08.04
레이아웃01  (3) 2022.07.29

댓글


광고 준비중입니다.