1. 문제
아래와 같은 화면을 출력하시오.

2. 풀이
1️⃣ 뼈대 만들기
1) 전체 박스
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
div {
border: 1px solid black;
padding: 5px;
}
</style>
</head>
<body>
<div></div>
</body>
</html>
2) title / 내용 박스
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
div {
border: 1px solid black;
padding: 5px;
}
</style>
</head>
<body>
<div>
<div>title</div>
<div>내용</div>
</div>
</body>
</html>
3) card 박스
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
div {
border: 1px solid black;
padding: 5px;
}
</style>
</head>
<body>
<div>
<div>에어비앤비 둘러보기</div>
<div>
<div>Card 1</div>
<div>Card 2</div>
<div>Card 3</div>
<div>Card 4</div>
</div>
</div>
</body>
</html>
4) 각 카드마다 사진/설명 박스 만들기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
div {
border: 1px solid black;
padding: 5px;
}
</style>
</head>
<body>
<div>
<div>에어비앤비 둘러보기</div>
<div>
<div>
<div>사진</div>
<div>설명</div>
</div>
<div>
<div>사진</div>
<div>설명</div>
</div>
<div>
<div>사진</div>
<div>설명</div>
</div>
<div>
<div>사진</div>
<div>설명</div>
</div>
</div>
</div>
</body>
</html>
2️⃣ 레이아웃
1) 사진/설명 박스 가로로 나열
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
div {
border: 1px solid black;
padding: 10px;
}
.grid_box {
display: grid;
grid-template-columns: auto auto auto auto;
column-gap: 10px;
}
</style>
</head>
<body>
<div>
<div>에어비앤비 둘러보기</div>
<div class="grid_box">
<div class="grid_item">
<div>사진</div>
<div>설명</div>
</div>
<div>
<div>사진</div>
<div>설명</div>
</div>
<div>
<div>사진</div>
<div>설명</div>
</div>
<div>
<div>사진</div>
<div>설명</div>
</div>
</div>
</div>
</body>
</html>
2) 사진, 설명 가로로 나열
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
div {
border: 1px solid black;
padding: 10px;
}
.grid_box {
display: grid;
grid-template-columns: auto auto auto auto;
column-gap: 10px;
}
.grid_item {
display: grid;
grid-template-columns: 2fr 5fr;
}
</style>
</head>
<body>
<div>
<div>에어비앤비 둘러보기</div>
<div class="grid_box">
<div class="grid_item">
<div>사진</div>
<div>설명</div>
</div>
<div class="grid_item">
<div>사진</div>
<div>설명</div>
</div>
<div class="grid_item">
<div>사진</div>
<div>설명</div>
</div>
<div class="grid_item">
<div>사진</div>
<div>설명</div>
</div>
</div>
</div>
</body>
</html>
3) 설명이 세로 가운데 정렬되게
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
div {
border: 1px solid black;
padding: 10px;
}
.grid_box {
display: grid;
grid-template-columns: auto auto auto auto;
column-gap: 10px;
}
.grid_item {
display: grid;
grid-template-columns: 2fr 5fr;
}
.content {
display: grid;
align-items: center;
}
</style>
</head>
<body>
<div>
<div>에어비앤비 둘러보기</div>
<div class="grid_box">
<div class="grid_item">
<div>사진<br /><br /></div>
<div class="content">설명</div>
</div>
<div class="grid_item">
<div>사진</div>
<div class="content">설명</div>
</div>
<div class="grid_item">
<div>사진</div>
<div class="content">설명</div>
</div>
<div class="grid_item">
<div>사진</div>
<div class="content">설명</div>
</div>
</div>
</div>
</body>
</html>
3️⃣ 이미지/설명 넣기
1) 이미지 넣기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
div {
border: 1px solid black;
padding: 10px;
}
.grid_box {
display: grid;
grid-template-columns: auto auto auto auto;
column-gap: 10px;
}
.grid_item {
display: grid;
grid-template-columns: 2fr 5fr;
}
.content {
display: grid;
align-items: center;
}
.grid_item img {
width: 100%;
height: 100%;
object-fit: cover;
}
</style>
</head>
<body>
<div>
<div>에어비앤비 둘러보기</div>
<div class="grid_box">
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">설명</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">설명</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">설명</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">설명</div>
</div>
</div>
</div>
</body>
</html>

2) 설명 넣기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
div {
border: 1px solid black;
padding: 10px;
}
.grid_box {
display: grid;
grid-template-columns: auto auto auto auto;
column-gap: 10px;
}
.grid_item {
display: grid;
grid-template-columns: 2fr 5fr;
}
.content {
display: grid;
align-items: center;
}
.grid_item img {
width: 100%;
height: 100%;
object-fit: cover;
}
</style>
</head>
<body>
<div>
<div>에어비앤비 둘러보기</div>
<div class="grid_box">
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">숙소 및 호텔</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">트립</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">어드벤처</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">레스토랑</div>
</div>
</div>
</div>
</body>
</html>
3) 패딩 조절
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
div {
border: 1px solid black;
padding: 0px;
}
.grid_box {
display: grid;
grid-template-columns: auto auto auto auto;
column-gap: 10px;
}
.grid_item {
display: grid;
grid-template-columns: 2fr 5fr;
}
.content {
display: grid;
align-items: center;
padding: 5px;
}
.grid_item img {
width: 100%;
height: 100%;
object-fit: cover;
}
</style>
</head>
<body>
<div>
<div>에어비앤비 둘러보기</div>
<div class="grid_box">
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">숙소 및 호텔</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">트립</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">어드벤처</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">레스토랑</div>
</div>
</div>
</div>
</body>
</html>

4️⃣ 디자인
1) ‘에어비앤비 둘러보기’ 디자인
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
.title {
font-size: 25px;
font-weight: 700;
}
.grid_box {
display: grid;
grid-template-columns: auto auto auto auto;
column-gap: 10px;
}
.grid_item {
display: grid;
grid-template-columns: 2fr 5fr;
}
.content {
display: grid;
align-items: center;
padding: 5px;
}
.grid_item img {
width: 100%;
height: 100%;
object-fit: cover;
}
</style>
</head>
<body>
<div>
<div class="title">에어비앤비 둘러보기</div>
<div class="grid_box">
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">숙소 및 호텔</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">트립</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">어드벤처</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">레스토랑</div>
</div>
</div>
</div>
</body>
</html>

2) 사진 설명 디자인
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
.title {
font-size: 25px;
font-weight: 700;
}
.grid_box {
display: grid;
grid-template-columns: auto auto auto auto;
column-gap: 10px;
}
.grid_item {
display: grid;
grid-template-columns: 2fr 5fr;
border: 1px solid rgb(187, 184, 184);
border-radius: 5px;
box-shadow: 5px 5px 0px 0px rgb(185, 183, 183);
}
.content {
display: grid;
align-items: center;
padding: 5px;
}
.grid_item img {
width: 100%;
height: 100%;
object-fit: cover;
}
</style>
</head>
<body>
<div>
<div class="title">에어비앤비 둘러보기</div>
<div class="grid_box">
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">숙소 및 호텔</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">트립</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">어드벤처</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">레스토랑</div>
</div>
</div>
</div>
</body>
</html>
3) 너비 조정
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
.title {
font-size: 25px;
font-weight: 700;
}
.grid_box {
display: grid;
grid-template-columns: auto auto auto auto;
column-gap: 10px;
}
.grid_item {
display: grid;
grid-template-columns: 2fr 5fr;
border: 1px solid rgb(187, 184, 184);
border-radius: 5px;
box-shadow: 5px 5px 0px 0px rgb(185, 183, 183);
}
.content {
display: grid;
align-items: center;
padding: 5px;
}
.grid_item img {
width: 100%;
height: 100%;
object-fit: cover;
}
.mb10 {
margin-bottom: 10px;
}
.mt5 {
margin-top: 5px;
}
</style>
</head>
<body>
<div>
<div class="title">에어비앤비 둘러보기</div>
<div class="grid_box mt5">
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">숙소 및 호텔</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">트립</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">어드벤처</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">레스토랑</div>
</div>
</div>
</div>
</body>
</html>

5️⃣ 최종
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
<style>
.title {
font-size: 25px;
font-weight: 700;
}
.grid_box {
display: grid;
grid-template-columns: auto auto auto auto;
column-gap: 10px;
}
.grid_item {
display: grid;
grid-template-columns: 2fr 5fr;
border: 1px solid rgb(187, 184, 184);
border-radius: 5px;
box-shadow: 5px 5px 0px 0px rgb(185, 183, 183);
}
.content {
display: grid;
align-items: center;
padding: 5px;
}
.grid_item img {
width: 100%;
height: 100%;
object-fit: cover;
}
.mb10 {
margin-bottom: 10px;
}
.mt5 {
margin-top: 5px;
}
main {
display: grid;
justify-content: center;
}
section {
width: 1000px;
}
</style>
</head>
<body>
<main>
<section>
<div class="title">에어비앤비 둘러보기</div>
<div class="grid_box mt5">
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">숙소 및 호텔</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">트립</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">어드벤처</div>
</div>
<div class="grid_item">
<div>
<img
src="https://a0.muscache.com/4ea/air/v2/pictures/8b7519ec-2c82-4c09-8233-fd4d2715bbf9.jpg?t=r:w375-h250-sfit,e:fjpg-c80"
/>
</div>
<div class="content">레스토랑</div>
</div>
</div>
</section>
</main>
</body>
</html>

Share article