-display:flex 필수!!
flex는 무조건 한줄에 나오려한다(자식 위드 넘쳐도)
display:flex;
justify-content: ;
align-content: ;
align-items: ;
flex-grow: ;
flex-shrink: ;
flex-basis: ;
flex: ;
<!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="./reset.css">
</head>
<body>
<style>
main{
width: 800px;
margin: 0 auto;
}
.box1{
display: flex;
gap: 10px;
}
.box1 div{
flex: 1;
height: 100px;
background: #ccc;
}
</style>
<main>
<!-- gap : 부모에게 -->
<div class="box1">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
<style>
.box2{
display: flex;
}
.box2>*{
flex: 1;
background: #f00;
height: 100px;
}
.box2>*+*{
margin-left: 10px;
}
</style>
<!-- 올빼미선택자 -->
<div class="box2">
<div>1</div>
<div>2</div>
<div>3</div>
<div>1</div>
<div>2</div>
</div>
<style>
.box3{
display: flex;
padding: 10px;
background: #ccc;
/* jcsb */
justify-content: space-between;
}
.box3 div{
width: calc(50% - 5px);
height: 100px;
background: #f00;
}
</style>
<!-- 스페이스비트 -->
<div class="box3">
<div>1</div>
<div>2</div>
</div>
</main>
</body>
</html>
<style>
header{
position: relative;
height: 200px;
background: #000;
display: flex;
justify-content: space-between;
}
header h1{
position: absolute;
top: 50%;left: 50%;
transform: translate(-50%, -50%);
}
header h1 a{
width: 150px;
height: 50px;
background: #fff;
display: block;
text-align: center;
line-height: 50px;
}
header .sns, .login{
width: 50px;
height: 50px;
background: #fff;
text-align: center;
line-height: 50px;
}
.pagination{
position: absolute;
bottom: 10px;
left: 50%;
transform: translateX(-50%);
display: flex;
gap: 10px;
}
.pagination span{
width: 30px;
height: 30px;
background: #fff;
/* float를 줘야지 붙이면서 width,높이까지 들어간다면
flex는 부모한테만 줘도 할수있다 */
}
</style>
<header>
<h1><a href="">logo</a></h1>
<div class="sns">sns</div>
<div class="login">login</div>
<div class="pagination">
<span>1</span>
<span>2</span>
<span>3</span>
</div>
</header>
<style>
main{width: 800px;margin: 0 auto;}
.box1{
padding: 10px;
background: #ccc;
margin: 10px 0;
}
.box1 .top{
height: 100px;
background: #fff;
margin-bottom: 10px;
}
.box1 .bottom{
padding: 10px;
background: #fff;
display: flex;
}
.box1 .left{
background: #00f;
flex: 1;
margin-right: 10px;
display: flex;
flex-wrap: wrap;
/* wrap이 있어서 갭쓰면 초과되어서 제대로 정렬이 안되기 때문에
자식요소의 위드는 calc로 계산해야하는 불편함이 있다 +
gap값 변경할 경우 또 대응하기 힘든 단점*/
gap: 10px;
}
.box1 .left li{
width: calc((100% - 20px)/3);
height: 100px;
background: #f00;
}
.box1 .right{
width: 150px;
background: #f00;
}
</style>
<style>
.box1{
width: 800px;
margin: 0 auto;
}
.box1 ul{
display: flex;
gap: 10px;
}
.box1 ul li{
/* 각 사진의 비율이 달라
사진이 정확하게 n등분이 되지 않는 경우도 있으니 이런 경우 flex : 1 사용해서
li의 등분은 1: 1:1로 틀을 잡아줘야한다 */
flex: 1;
}
.box1 ul a{
display: block;
background: #ccc;
padding: 10px;
}
.box1 ul img{
width: 100%;
height: 200px;
object-fit: cover;
}
.box1 ul p{
padding: 10px;
margin-top: 10px;
background: #fff;
}
</style>
<div class="box1">
<ul>
<li>
<a href="">
<img src="./img1.jpg" alt="">
<p>aaa</p>
</a>
</li>
<li>
<a href="">
<img src="./img2.jpg" alt="">
<p>vvvv</p>
</a>
</li>
<li>
<a href="">
<img src="./img3.jpg" alt="">
<p>bbbb</p>
</a>
</li>
</ul>
</div>