1. 구현화면

2. HTML 코드
태그 정리하기 (위에서부터 순서대로 )
- body
- section(1) : width:50%; 으로 화면을 2개로 나누기 (div 좌우로 나누기)
- article(4) : 페이지에 독립적으로 구성할 수 있는 태그
- div class='bg'(4) : 배경색을 가진 div
- div class='info'(4) : 텍스트박스를 가진 div
코드
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>repl.it</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<h1>The Best Colors</h1>
<section>
<article class="color">
<div class="color__bg"></div>
<div class="color__info">
<h3>Tomato</h3>
<h5>
</div>
</article>
<article class="color">
<div class="color__bg"></div>
<div class="color__info">
<h3>Teal</h3>
<h5>
</div>
</article>
<article class="color">
<div class="color__bg"></div>
<div class="color__info">
<h3>Burlywood</h3>
<h5>
</div>
</article>
<article class="color">
<div class="color__bg"></div>
<div class="color__info">
<h3>Thistle</h3>
<h5>
</div>
</article>
</section>
</body>
</html>
3. CSS
내용정리
1. flex
- flex가 바로 위 부모에 적용되야 자식태그에 flex 가 적용
- flex 에선 태그들의 위치와 정렬, 간격 등을 훨씬 유연하게 조정가능
> padding, margin, flex-direction, align-items, justify-content 등
2. 의사클래스 (HTML 요소의 특별한 '상태(state)'를 명시)
- 태그들의 순서, 상태 등을 통해 꾸며줄 대상을 더 쉽게 특정
- nth-child(n) 형제들 사이에 n번째 요소를 선택할 수 있는 의사선택자
3. position
- absolute : 가장 상위 태그(body)를 기준으로 위치를 조정
단, 상위 태그에 relative가 잡혀있으면 그 태그 기준으로 조정됨
4. padding vs margin
- margin: 경계선 외부의 여백
- padding: 경계선 안쪽의 여백
코드
body {
height: 100vh;
background-color: whitesmoke;
display: flex;
flex-direction: column;
align-items: center;
}
h1 {
margin-bottom: 50px;
}
section {
width: 50%;
margin: 0 auto;
display: flex;
justify-content: space-between;
flex-wrap: wrap;
}
.color {
width: 48%;
position: relative;
margin-bottom: 20px;
}
.color:first-child .color__bg {
background-color: tomato;
}
.color:nth-child(2) .color__bg {
background-color: teal;
}
.color:nth-child(3) .color__bg {
background-color: burlywood;
}
.color:last-child .color__bg {
background-color: thistle;
}
.color__bg {
height: 300px;
border: 5px solid white;
}
.color__info {
position: absolute;
width: 100%;
background-color: white;
top: 20px;
padding: 0px 10px;
box-sizing: border-box;
}