코딩/수업메모

컴포넌트 제작 및 반응형 상단바 코딩

ponyo118 2025. 12. 9. 16:51

 

반응형 상단바 2차.zip
5.56MB

 

 

 

피그마로 이동

전체 화면을 줄였을 경우 상단바가 위 사진 처럼 나올 수 있게 하는 반응형

 

 

 

 

[index.html]

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>반응형 상단바_2차</title>
  <link rel="stylesheet" href="./css/style.css">
  <link rel="stylesheet" href="./css/componant.css">
  <link rel="stylesheet" href="./css/main.css">
</head>

<body>
  <section class="hd-section">
    <header>
      <div class="container con-1920">
        <!-- 큰 메뉴 -->
        <div class="hd-screen-1920 flex-ac ">
          <div class="logo-box"><img src="./image/logo.png" alt="로고이미지"></div>
          <nav class="menu-bar ss6 bk t300">
            <ul>
              <li><a href="#">EVENT</a></li>
              <li><a href="#">PRODUCT</a></li>
              <li><a href="#">BRAND</a></li>
              <li><a href="#">REVIEW</a></li>
              <li><a href="#">MAGAZINE</a></li>
              <li><a href="#">고객센터</a></li>
            </ul>
          </nav>
          <div class="user-menu-box flex-ac">
            <div class="menu-btn">
              <a href="#">매장안내</a>
            </div>
            <div class="user-btn">
              <a href="#"><img src="./image/search.png" alt="search"></a>
              <a href="#"><img src="./image/shop.png" alt="shop"></a>
              <a href="#"><img src="./image/profile.png" alt="profile"></a>
            </div>
          </div>
        </div>
        <!-- 작은 메뉴 -->
        <nav class="menu-bar hd-screen-1024 ss6 bk t300">
            <ul>
              <li><a href="#">EVENT</a></li>
              <li><a href="#">PRODUCT</a></li>
              <li><a href="#">BRAND</a></li>
              <li><a href="#">REVIEW</a></li>
              <li><a href="#">MAGAZINE</a></li>
              <li><a href="#">고객센터</a></li>
            </ul>
        </nav>
      </div>
    </header>
    <div class="banner">
      <div class="banner-title ml2 wh">
        <a href="#">MONIEL</a>
      </div>
      <div class="banner-text ss1 wh">
        <a href="#">오전 11시마다 선착순 한정 0원딜 오픈, 인기 교구 모음집 60% 세일</a>
      </div>
    </div>
  </section>
</body>

</html>

 

[componant.css]

.hd-section {
  height: 100vh;
}
/* 상단바 */
.con-1920 {
  max-width: 1920px;
  padding-left: 20px; padding-right: 20px;
  justify-content: space-between;
}
.container {
  margin-left: auto; margin-right: auto;
  box-sizing: border-box;
}
/* 로고 */
.logo-box img {
  width: 160px;
  display: block;
}
/* 메뉴 */
/* 1차 - 1920 */
.menu-bar {display: flex; align-items: center;  height:100px;}
.menu-bar > ul {display: flex; gap: 40px;}

/* 1차 -1024 */
.hd-screen-1024 {height: 0; overflow: hidden; justify-content: center;}

/* 유저 메뉴 */
.user-menu-box {gap:14px;}
.user-btn {gap: 4px;}
.user-btn img {
  width: 26px; height: 26px;
  object-fit: cover;
}
/* 배너 */
.banner {  
  position: relative;
  background-size: cover;
  background-repeat: repeat;
  background-image: url(../image/banner.jpg);
  height: 100vh;
}
.banner-title {
  position: absolute;
  bottom: 20%; left: 40%;
}
.banner-text {
  position: absolute;
  bottom: 15%; left: 35%;
}

 

[main.css]

 

.hd-screen-1920 {display: flex; justify-content: space-between;}

@media screen and (max-width:1024px) {
  /* display:none;은 transition을 사용할 수 없다. -> font-size 줄이기 */
  .hd-screen-1920 .menu-bar {font-size: 0; gap:0;}
  .hd-screen-1024 {height: 100px;}
}

  

1. @media screen and (max-width:1024px) 의미

조건 : 브라우저(또는 화면) 가로 길이가 1024px 이하일 경우에만 중괄호 안의 CSS가 적용된다는 뜻.

  • PC(1920px) → 적용 안 됨
  • 태블릿(768~1024px) → 적용됨
  • 모바일(375~480px) → 당연히 적용됨

2. /* display:none;은 transition을 사용할 수 없다. -> font-size 줄이기 */

여기서 의도는:

메뉴를 사라지게 해야 하는데 display:none 을 쓰면 transition 애니메이션이 아예 불가능함

그래서 “없애는 것처럼 보이게” font-size를 0으로 줄여 숨긴 것


3. .hd-screen-1920 .menu-bar { font-size: 0; gap: 0; }

1024px 이하에서는: menu-bar 의 항목 폭을 줄이기 위한 설정

  • font-size:0;
    → 텍스트가 보이지 않게 됨 (사라지는 효과)
  • gap:0;
    → 메뉴 사이 간격을 없앰

목적은:

공간을 차지하지 않게 하여 다른 요소가 레이아웃을 깨지 않도록 유지 또는 네비게이션을 아이콘만 보이게 만들거나 숨기기 위함

즉, 메뉴를 부드럽게 사라지게 하는 방식이야.


4. .hd-screen-1024 { height: 100px; }

1024px 이하에서 헤더 전체 height를 100px로 고정하겠다는 의미

  • PC용 헤더는 보통 더 크고 복잡함
  • 태블릿/모바일에서는 헤더를 더 간단하고 얇게 만들어야 하기 때문에

 

'코딩 > 수업메모' 카테고리의 다른 글

JS 2강 개념 -변수  (0) 2026.02.20
JS 1강 개념 - 출력문  (0) 2026.02.20
251103 반응형  (0) 2025.11.03
251017 picogram (버튼)  (0) 2025.10.17
251013 코딩 연습 (개구리게임)  (0) 2025.10.13