[CSS] 반응형 헤더 만들기
본문 바로가기
프레임워크/CSS

[CSS] 반응형 헤더 만들기

by 은돌1113 2021. 12. 19.
// index.html

<!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" />
    <link rel="stylesheet" href="style.css" />
    <script src="main.js" defer></script>
    <title>Nav Bar</title>
    <script src="https://kit.fontawesome.com/2d323a629b.js"></script>
    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    <link
      href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@100&display=swap"
      rel="stylesheet"
    />
  </head>
  <body>
    <nav class="navbar">
      <div class="navbar__logo">
        <i class="fab fa-accusoft"></i>
        <a href="#">DreamConding</a>
      </div>
      <ul class="navbar__menu">
        <li><a href="">Home</a></li>
        <li><a href="">Gallery</a></li>
        <li><a href="">Weddings</a></li>
        <li><a href="">FAQ</a></li>
        <li><a href="">Bookings</a></li>
      </ul>
      <ul class="navbar__icons">
        <li><i class="fab fa-twitter"></i></li>
        <li><i class="fab fa-facebook-f"></i></li>
      </ul>

      <a href="#" class="navbar__toogleBtn">
        <i class="fas fa-bars"></i>
      </a>
    </nav>
  </body>
</html>

 

// style.css

body {
  margin: 0;
  font-family: "Noto Sans KR", sans-serif;
}

a {
  text-decoration: none;
  color: white;
}

.navbar {
  display: flex;
  justify-content: space-between;
  /* 가로 정렬  */
  align-items: center;
  /* 세로 정렬 */
  background-color: #263343;
  padding: 8px 12px;
}

.navbar__logo {
  font-size: 24px;
  color: white;
}

.navbar__logo i {
  color: #d49466;
}

.navbar__menu {
  display: flex;
  list-style: none;
  /* 꾸밈세 없애기 */
  padding-left: 0;
}

.navbar__menu li {
  padding: 8px 12px;
}

.navbar__menu li:hover {
  background-color: #d49466;
  border-radius: 4px;
}

.navbar__icons {
  list-style: none;
  color: white;
  display: flex;
  padding-left: 0;
}

.navbar__icons li {
  padding: 8px 12px;
}

.navbar__toogleBtn {
  display: none;
  position: absolute;
  right: 32px;
  font-size: 32px;
  color: #d49466;
}

// 반응형 웹 만들기
@media screen and (max-width: 768px) {
  .navbar {
    flex-direction: column;
    align-items: flex-start;
    padding: 8px 24px;
  }
  .navbar__menu {
    display: none;
    flex-direction: column;
    align-items: center;
    width: 100%;
  }

  .navbar__menu li {
    width: 100%;
    text-align: center;
  }

  .navbar__icons {
    display: none;
    justify-content: center;
    width: 100%;
  }

  .navbar__toogleBtn {
    display: block;
  }

// toggle 클릭하면 icons 띄우게
  .navbar__menu.active,
  .navbar__icons.active {
    display: flex;
  }
}

 

// main.js

const toggleBtn = document.querySelector('.navbar__toogleBtn');
const menu = document.querySelector('.navbar__menu');
const icons = document.querySelector('.navbar_icons');

toggleBtn.addEventListener('click', ()=>{
    menu.classList.toggle('active');
    icons.classList.toggle('active');
})

https://www.youtube.com/watch?v=X91jsJyZofw&t=1351s 

 

댓글