IT/부트캠프
4일차 - Layout, Flexbox, vs코드 레이아웃 클론 만들기
mj73
2023. 4. 14. 13:01
블록 요소를 가로로 배치하는 것은
float, flexbox, gird 속성이 있다.
1. float
요소를 문서 위에 떠있게 만든다.
float끼리 가려지는 경우, float 속성을 가진 요소들을 하나의 부모요소로 묶은 뒤 부모 요소에 overflow: hidden;을 지정하면 된다.
이를 활용해서 이전 글에서 만들었던 자기소개 페이지를 수정하였다. 기존에는 흰색 박스 3개가 하나로 뭉쳐져서 보였는데 float와 부모요소를 활용하여 분리할 수 있었다.

수정한 부분은 다음과 같다. 각 흰색 라운드형 직사각형을 box1, 2,3으로 정의하고 셋을 묶은 부모요소는 box이다.
.box div {
background-color: #fafafa;
font-size: 15px;
border-radius: 7%;
text-align: center;
}
.box1 {
float: left;
width: 230px;
margin: 10px;
padding: 14px 0px 14px 0px;
}
.box2 {
float: right;
width: 230px;
margin: 10px;
padding: 14px 0px 14px 0px;
}
.box3 {
float: left;
width: 480px;
margin: 10px;
padding: 14px 0px 20px 0px;
text-align: center;
}
*문서에 css 파일 추가하는 코드는 다음과 같다... head 안에 코드를 넣어주면 된다.
<link rel="stylesheet" href="style.css">
2. flexbox
flex: <grow(팽창 지수)> <shrink(수축 지수)> <basis(기본 크기)>
grow(팽창 지수)는 요소의 크기가 늘어나야 할 때 얼마나 늘어날 것인지,
shrink(수축 지수)는 요소의 크기가 줄어들어야 할 때 얼마나 줄어들 것인지,
basis(기본 크기)는 늘어나고 줄어드는 것과 상관없이 요소의 기본 크기는 얼마인지를 의미한다.
세 가지를 따로 지정할 수도 있다!
flex-grow: 0;
flex-shrink: 1;
flex-basis: auto;
다음은 flex-gorw로 1:1:1 씩 비율로 저장한 코드이다.

<main>
<div id="box1" class="box">box1</div>
<div id="box2" class="box">box2</div>
<div id="box3" class="box">box3</div>
</main>
main {
display: flex;
border: 1px dotted red;
flex-wrap : wrap;
}
#box1{
flex: 1 0 auto;
}
#box2{
flex-grow: 1;
}
#box3{
flex-grow:1;
}
div {
border: 1px solid green;
}
* {
margin: 10px;
padding: 10px;
}
3. Grid
부모요소에서 지정한다.
부모 요소를 grid container, 자식 요소는 grid item이다.
4. flexbox를 이용하여 visual studio code 레이아웃 클론 만들기
문제

구현!

소스코드
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<main>
<div class="box1">
<div id="icon">아이콘1</div>
<div id="icon">아이콘2</div>
<div id="icon">아이콘3</div>
</div>
<div class="box2">
<div id="box2-1">영역1</div>
<div id="box2-2">영역2</div>
<div id="box2-3">영역3</div>
</div>
<div class="box3">
<div id="box3-1">영역4</div>
<div id="box3-2">영역5</div>
</div>
</main>
</body>
</html>