[HTML/CSS] 14. Airbnb 만들기

최재원's avatar
Mar 11, 2025
[HTML/CSS] 14. Airbnb 만들기
notion image
notion image
notion image
notion image

1. html 모양 구성

notion image
notion image
notion image
notion image
notion image
notion image
notion image
notion image
notion image
 

2. 완성

notion image
notion image
notion image
notion image

HTML 코드

<!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="css/style.css" /> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" /> <title>Document</title> </head> <body> <div class="root"> <header class="header"> <nav class="nav"> <div class="nav-icon"> <i class="fa-brands fa-airbnb"></i> </div> <ul class="nav-list"> <li>호스트가 되어보세요</li> <li>도움말</li> <li>회원가입</li> <li>로그인</li> </ul> </nav> <div class="reservation-container"> <div class="reservation-title"> <h1>특색 있는 숙소와 즐길 거리를 예약하세요.</h1> </div> <form class="reservation-form"> <div class="reservation-destination reservation-div"> <div class="reservation-destination-label label"> <label for="destination">목적지</label> </div> <div class="reservation-destination-input"> <input type="text" placeholder="모든 위치" id="destination" /> </div> </div> <div class="reservation-date"> <div class="reservation-date-checkin label reservation-div" > <div><label for="checkin">체크인</label></div> <div><input type="date" id="checkin" /></div> </div> <div class="reservation-date-checkout label reservation-div" > <div> <label for="checkout">체크아웃</label> </div> <div><input type="date" id="checkout" /></div> </div> </div> <div class="reservation-people reservation-div"> <div class="reservation-people-label label"> <label for="인원">인원</label> </div> <div class="reservation-people-select"> <select id="인원"> <option value="default">인원</option> <option value="1">1명</option> <option value="2">2명</option> <option value="3">3명</option> <option value="4">4명</option> <option value="5">5명</option> </select> </div> </div> <div class="reservation-btn"> <button>검색</button> </div> </form> </div> </header> <main class="main"> <section class="section look-around"> <div class="look-around-title title"> <h2>에어비앤비 둘러보기</h2> </div> <div class="look-around-grid"> <div class="look-around-grid-item"> <div><img src="img/card1.jpg" /></div> <div class="look-around-grid-item-text"> <p>숙소 및 부티크 호텔</p> </div> </div> <div class="look-around-grid-item"> <div><img src="img/card2.jpg" /></div> <div class="look-around-grid-item-text"> <p>트립</p> </div> </div> <div class="look-around-grid-item"> <div><img src="img/card3.jpg" /></div> <div class="look-around-grid-item-text"> <p>어드벤처</p> </div> </div> <div class="look-around-grid-item"> <div><img src="img/card4.jpg" /></div> <div class="look-around-grid-item-text"> <p>레스토랑</p> </div> </div> </div> <div class="look-around-view"> <img src="img/ad1.jpg" /> </div> </section> <section class="section recommend-places"> <div class="recommend-places-title title"> <h2>추천 여행지</h2> </div> <div class="recommend-places-grid"> <div class="recommend-places-grid-item"> <img src="img/choo1.png" /> </div> <div class="recommend-places-grid-item"> <img src="img/choo2.png" /> </div> <div class="recommend-places-grid-item"> <img src="img/choo3.png" /> </div> <div class="recommend-places-grid-item"> <img src="img/choo4.png" /> </div> <div class="recommend-places-grid-item"> <img src="img/choo5.png" /> </div> </div> </section> <section class="section ad"> <div class="ad-title title"> <h2>에어비앤비 플러스를 만나보세요!</h2> <p>퀄리티와 인테리어 디자인이 검증된 숙소 셀렉션</p> </div> <div class="ad-view"> <img src="img/ad2.png" /> </div> </section> <section class="section lodging"> <div class="lodging-title title"> <h2>전 세계 숙소</h2> </div> <div class="lodging-grid"> <div class="lodging-grid-item"> <div class="lodging-grid-item-img"> <img src="img/home1.png" /> </div> <div class="lodging-grid-item-info"> <p class="lodging-grid-item-location"> 오두막▪BALIAN BEACH, BALI </p> <h3 class="lodging-grid-item-title"> BALIAN TREEHOUSE w beautiful pool </h3> <div class="lodging-grid-item-footer"> <div class="lodging-grid-item-footer-rating" > <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> </div> <div>185</div> <div>슈퍼호스트</div> </div> </div> </div> <div class="lodging-grid-item"> <div class="lodging-grid-item-img"> <img src="img/home2.png" /> </div> <div class="lodging-grid-item-info"> <p class="lodging-grid-item-location"> 키클라데스 주택▪이아(OIA) </p> <h3 class="lodging-grid-item-title"> Unique Architecture Cave House </h3> <div class="lodging-grid-item-footer"> <div class="lodging-grid-item-footer-rating" > <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> </div> <div>188</div> <div>슈퍼호스트</div> </div> </div> </div> <div class="lodging-grid-item"> <div class="lodging-grid-item-img"> <img src="img/home3.png" /> </div> <div class="lodging-grid-item-info"> <p class="lodging-grid-item-location"> 성▪트웬티나인 팜스(TWENTYNINE PALMS) </p> <h3 class="lodging-grid-item-title"> Tile House </h3> <div class="lodging-grid-item-footer"> <div class="lodging-grid-item-footer-rating" > <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> </div> <div>367</div> <div>슈퍼호스트</div> </div> </div> </div> <div class="lodging-grid-item"> <div class="lodging-grid-item-img"> <img src="img/home4.png" /> </div> <div class="lodging-grid-item-info"> <p class="lodging-grid-item-location"> 검증됨▪케이프타운 </p> <h3 class="lodging-grid-item-title"> Modern, Chic Penthouse with Mountain, City & Sea Views </h3> <div class="lodging-grid-item-footer"> <div class="lodging-grid-item-footer-rating" > <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> </div> <div>177</div> <div>슈퍼호스트</div> </div> </div> </div> <div class="lodging-grid-item"> <div class="lodging-grid-item-img"> <img src="img/home5.png" /> </div> <div class="lodging-grid-item-info"> <p class="lodging-grid-item-location"> 아파트 전체▪마드리드(MADRID) </p> <h3 class="lodging-grid-item-title"> 솔광장에 위치한 개인 스튜디오 </h3> <div class="lodging-grid-item-footer"> <div class="lodging-grid-item-footer-rating" > <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> </div> <div>459</div> <div>슈퍼호스트</div> </div> </div> </div> <div class="lodging-grid-item"> <div class="lodging-grid-item-img"> <img src="img/home6.png" /> </div> <div class="lodging-grid-item-info"> <p class="lodging-grid-item-location"> 집 전체▪HUMAC </p> <h3 class="lodging-grid-item-title"> Vacation house in etno-eco vaillage Humac </h3> <div class="lodging-grid-item-footer"> <div class="lodging-grid-item-footer-rating" > <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> </div> <div>119</div> <div>슈퍼호스트</div> </div> </div> </div> <div class="lodging-grid-item"> <div class="lodging-grid-item-img"> <img src="img/home7.png" /> </div> <div class="lodging-grid-item-info"> <p class="lodging-grid-item-location"> 개인실▪마라케시 </p> <h3 class="lodging-grid-item-title"> The Cozy Palace </h3> <div class="lodging-grid-item-footer"> <div class="lodging-grid-item-footer-rating" > <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> </div> <div>559</div> <div>슈퍼호스트</div> </div> </div> </div> <div class="lodging-grid-item"> <div class="lodging-grid-item-img"> <img src="img/home8.png" /> </div> <div class="lodging-grid-item-info"> <p class="lodging-grid-item-location"> 게스트용 별채 전체▪로스앤젤레스 </p> <h3 class="lodging-grid-item-title"> Private Pool House with Amazing Views! </h3> <div class="lodging-grid-item-footer"> <div class="lodging-grid-item-footer-rating" > <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> <i class="fa-solid fa-star"></i> </div> <div>170</div> <div>슈퍼호스트</div> </div> </div> </div> </div> </section> </main> </div> </body> </html>

CSS 코드

폴더 구조

notion image

style.css

/* css/style.css */ @import url("common.css"); @import url("header.css"); @import url("main.css");

common.css

/* css/common.css */ * { padding: 0; margin: 0; box-sizing: border-box; } img { width: 100%; height: 100%; object-fit: cover; } li { list-style: none; } input, select { border: 1px solid rgba(0, 0, 0, 0.2); padding: 10px 0; font-size: 16px; } input, label, select { width: 100%; } button { border: none; }

header.css

/* css/header.css */ .header { height: 95vh; background-image: url(../img/background.jpg); background-size: cover; background-position: center; position: relative; } .nav { display: flex; justify-content: space-between; align-items: center; padding: 20px; } .nav-icon { font-size: 36px; color: white; } .nav-list { display: flex; gap: 30px; } .nav-list li { color: white; font-weight: 600; cursor: pointer; } .reservation-container { position: absolute; top: 150px; left: 50px; background-color: white; width: 430px; padding: 20px 30px; border-radius: 5px; } .reservation-title { font-size: 15px; text-wrap: balance; } .reservation-form { margin-top: 20px; display: flex; flex-direction: column; gap: 10px; } .reservation-form label { font-weight: 600; font-size: 13px; } .reservation-div { display: grid; gap: 10px; } .reservation-date { display: grid; grid-template-columns: 1fr 1fr; gap: 3px; } .reservation-btn { display: flex; justify-content: end; padding: 20px 0; } .reservation-btn button { background-color: rgb(255, 94, 94); color: white; padding: 10px 20px; border-radius: 5px; font-weight: 600; font-size: 16px; cursor: pointer; }

main.css

/* css/main.css */ .main { padding: 30px 80px; display: grid; gap: 30px; } .section { display: grid; gap: 30px; } .look-around-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; } .look-around-grid-item { display: grid; grid-template-columns: 1fr 3fr; border-radius: 5px; box-shadow: 0 0 3px rgba(0, 0, 0, 0.5); overflow: hidden; } .look-around-grid-item-text { padding: 25px 10px; display: flex; align-items: center; font-weight: 600; } .look-around-view { border-radius: 30px; overflow: hidden; } .recommend-places-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 10px; } .lodging-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; } .lodging-grid-item { display: grid; grid-template-rows: 180px; } .lodging-grid-item-img { margin-bottom: 5px; } .lodging-grid-item-info { display: grid; gap: 5px; align-content: start; } .lodging-grid-item-location { color: rgba(0, 0, 0, 0.5); font-size: 13px; } .lodging-grid-item-title { font-weight: 600; font-size: 18px; } .lodging-grid-item-footer { display: flex; align-items: center; font-size: 12px; gap: 5px; } .lodging-grid-item-footer-rating { font-size: 8px; }
Share article

jjack1