본문 바로가기
UI|UX/Layout

LayOuy 구조 5

by SyuMay 2022. 7. 27.
728x90

레이아웃05

float, flex, grid 를이용하여 구조화를 할수있습니다.
flex 같은경우는 컨텐츠를 묶어서 구조화 합니다.


float를 이용한 레이아웃

CSS 속성(property) float 은 한 요소(element)가 보통 흐름(normal flow)으로부터 빠져 텍스트 및 인라인(inline) 요소가
그 주위를 감싸는 자기 컨테이너의 좌우측을 따라 배치되어야 함을 지정합니다. float으로 인해 영역깨짐 방지법 1. 깨지는 영역에 clear:both를 설정합니다. 2. 부모 박스 영역에 overflow: hidden을 설정합니다. 3. clearfix를 설정합니다.

*{
    box-sizing: 0;
    padding: 0;
    margin: 0;
}
#header {
    height: 100px;
    background-color: #EEEBE9;
}
#nav {
    height: 100px;
    background-color: #B9AAA5;
}
#footer {
    height: 100px;
    background-color: #4E342E;
}
.container {
    width: 1200px;
    height: inherit; 
    margin: 0 auto; 
}
.header {
    width: 100%;
    height: 100px;
    background-color: #D5CCC9;
}
.nav {
    width: 100%;
    height: 100px;
    background-color: #9D8980;
}
.main {
    width: 100%;
    height: 780px;
    background-color: #594139;
}
.footer {
    width: 100%;
    height: 100px;
    background-color: #3E2723;
}
.contents .cont1 {
    width: 100%;
    height: 100px;
    background-color: #684D43;
}
.contents .cont2 {
    width: 100%;
    height: 200px;
    background-color: #74574A;
}
.contents .cont3 {
    width: 50%;
    height: 480px;
    background-color: #594139;
    float: left;
}
.contents .cont4 {
    width: 50%;
    height: 480px;
    background-color: #4A352F;
    float: left;
}

 @media (max-width: 1220px) {
    .container {
        width: 96%;
    }
    .contents .cont1 {
        float: left;
        width: 30%;
        height: 780px;
    }
    .contents .cont2 {
        float: left;
        width: 70%;
        height: 390px;
    }
    .contents .cont3 {
        width: 35%;
        height: 390px;
    }
    .contents .cont4 {
        width: 35%;
        height: 390px;
    }
 }
 @media (max-width: 768px) {
    .container {
        width: 100%;
    }
    .contents .cont2,
    .contents .cont3,
    .contents .cont4 {
        width: 70%;
        height: 260px;
    }
 }

 @media (max-width: 480px) {
    .contents .cont1 {
        width: 100%;
        height: 150px;
    }

    .contents .cont2,
    .contents .cont3,
    .contents .cont4 {
        width: 100%;
        height: 210px;
    }
 }
 .clearfix::before,
 .clearfix::after {
    content: '';
    display: block;
    line-height: 0;
 }
 .clearfix::after {
    clear: both;
 }  

결과


flex를 이용한 레이아웃

flex CSS 속성은 하나의 플렉스 아이템이 자신의 컨테이너가 차지하는 공간에 맞추기 위해 크기를 키우거나 줄이는 방법을 설정하는 속성입니다.
flex는 flex-grow, flex-shrink, flex-basis의 단축 속성입니다.

*{
    box-sizing: 0;
    padding: 0;
    margin: 0;
}
#header {
    background-color: #EEEBE9;
}
#nav {
    background-color: #B9AAA5;
}
#main {
    background-color: #886F65;
}
#footer {
    background-color: #4E342E;
}
.container {
    width: 1200px;
    height: inherit; 
    margin: 0 auto; 
}
.header {
    width: 100%;
    height: 100px;
    background-color: #D5CCC9;
}
.nav {
    width: 100%;
    height: 100px;
    background-color: #9D8980;
}
.footer {
    width: 100%;
    height: 100px;
    background-color: #3E2723;
}
.contents {
    width: 1200px;
    display: flex;
    flex-wrap: wrap;
}
.contents .left {
    width: 100%;
}
.contents .right {
    display: flex;
    flex-wrap: wrap; 
    width: 100%;
}
.contents .left .cont1 {
    width: 100%;
    height: 100px;
    background-color: #684D43;
}

.contents .right .cont2 {
    width: 100%;
    height: 200px;
    background-color: #74574A;
}

.contents .right .cont3 {
    width: 50%;
    height: 480px;
    background-color: #594139;
}

.contents .right .cont4 {
    width: 50%;
    height: 480px;
    background-color: #4A352F;
}

 @media (max-width: 1220px) {
    .container {
        width: 96%;
    }
    .contents .left {
        width: 30%;
    }
    .contents .right {
        width: 70%;
    }
    .contents .left .cont1 {
        height: 780px;
    }
    .contents .right .cont2 {
        height: 390px;
    }
    .contents .right .cont3,
    .contents .right .cont4 {
        height: 390px;
    }
 }

 @media (max-width: 768px) {
    .container {
        width: 100%;
    }
    .contents .right .cont2,
    .contents .right .cont3,
    .contents .right .cont4 {
        width: 100%;
        height: 260px;
    }
 }

 @media (max-width: 480px) {
    .contents .left {
        width: 100%;
    }
    .contents .right {
        width: 100%;
    }
    .contents .left .cont1 {
        height: 150px;
    }
    .contents .right .cont2,
    .contents .right .cont3,
    .contents .right .cont4 {
        height: 210px;
    }
 }

결과


grid를 이용한 레이아웃

CSS 그리드 레이아웃은 웹페이지를 위한 이차원 레이아웃 시스템입니다.
이 기능을 통해 콘텐츠를 행과 열에 배치할 수 있으며 복잡한 레이아웃을 직접 직관적으로 구축할 수 있는 많은 기능이 있습니다.

*{
    box-sizing: 0;
    padding: 0;
    margin: 0;
}
#header {
    height: 100px;
    background-color: #EEEBE9;
}
#nav {
    height: 100px;
    background-color: #B9AAA5;
}
#main {
    height: 780px;
    background-color: #886F65;
}
#footer {
    height: 100px;
    background-color: #3E2723;
}
.container {
    width: 1200px;
    height: inherit;
    margin: 0 auto;
    background-color: rgba(0,0,0,0.3);
}
.contents {
    display: grid;
    grid-template-areas: 
    "cont1 cont1"
    "cont2 cont2"
    "cont3 cont4"
    ;
    grid-template-columns: 50% 50%; 
    grid-template-rows: 100px 200px 480px;
}
.contents .cont1 {
    background-color: #74574A;
    grid-area: cont1;
}
.contents .cont2 {
    background-color: #684D43;
    grid-area: cont2;
}
.contents .cont3 {
    background-color: #594139;
    grid-area: cont3;
}
.contents .cont4 {
    background-color: #4A352F;
    grid-area: cont4;
}

@media (max-width: 1220px) {
    .container {
        width: 96%;
    }
    .contents {
        display: grid;
        grid-template-areas: 
        "cont1 cont2 cont2"
        "cont1 cont3 cont4"
        ;
        grid-template-columns: 1fr 2fr;
        grid-template-rows: 390px 390px
    }
}
@media (max-width: 768px) {
    .container {
        width: 100%;
    }
    .contents {
        display: grid;
        grid-template-areas: 
        "cont1 cont2"
        "cont1 cont3"
        "cont1 cont4"
        ;
        grid-template-columns: 30% 70%; 
        grid-template-rows: repeat(3, 1fr);
    }
}
@media (max-width: 480px) {
    .contents {
        display: grid;
        grid-template-areas: 
        "cont1"
        "cont2"
        "cont3"
        "cont4"
        ;
        grid-template-columns: 100%; 
        grid-template-rows: 150px 210px 210px 210px;
    }
}

결과

728x90
반응형

'UI|UX > Layout' 카테고리의 다른 글

LayOut 구조 4  (15) 2022.07.27
LayOut 구조 3  (15) 2022.07.27
LayOut 구조 2  (15) 2022.07.27
LayOut 구조 1  (15) 2022.07.25

댓글


자바스크립트 사진

JavaScript

자세히보기