레이아웃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;
}
}
결과
'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 |
댓글