개발/개발일지

반응형 Navbar 만들기

pizzaYami 2023. 8. 28.

 

이번에 반응형 Navbar를 만들면서 내 능력에 대한 자괴감이 들었다.

엄청 쉬운거같은데 생각의 정리를 안하고 무작정 코드를 짜면 이렇게 되는구나 느꼈던 프로젝트이다.

 

핵심적 코드

 

가장 핵심적인 부분은 화면이 줄어들면 menu와 sns가 없어지는 @media부분 그리고 list_menu 아이콘을 누르면 세로로 menu들이 나오는 부분이다.

여기에서 너무 막무가내로 코드를 짜서 엄청 헤매었다.

 

이런거를 할때는

 

변하기 전, 변한 뒤 코드를 짜고

이걸 연결시키면 편하다는 걸 너무 늦게 깨달아버렸다.

 

이것들을 만드는 코드 ui를 먼저 만들고 연결해주면 편하다.

 

media 부분

@media all and (max-width: 725px) {
  // sns 아이콘 사라짐
  #sns {
    display: none;
  }
  // list.menu 아이콘 생김
  .list {
    display: block;
  }
  // container column으로 바꿈
  .nav_container {
    display: flex;
    flex-direction: column;
    transition: all 1.1s;
    overflow: hidden;
    #nav_title {
      margin-bottom: 10px;
    }
  }
  // menu column으로 바꿈
  .nav_menus {
    display: flex;
    flex-direction: column;
    div {
      margin-top: 15px;
      transition: all 1s;
      &:hover {
        transform: translateX(20px);
        background-color: rgb(205, 205, 255);
      }
    }
  }
}

 

배운부분

 

overflow :hidden; 의 사용

 

메뉴를 누르면 메뉴리스트가 나오게하는 부분에서 자꾸 위의 영상처럼 안 이쁘게 나와서 답답했었다.

 

이때의 방식은 hidden 클래스를 만들어서 display: none;으로 

classList.toggle("hidden")으로 메뉴를 누르면 hidden클래스가 붙여야 뗴어졌다하는식으로 만들었었다.

.hidden {
  display: none !important;
}
list.addEventListener("click", function () {
  nav_menus.classList.toggle("hidden");
  nav_container.classList.toggle("size");
});

 

근데 이렇게 하는것보단 메뉴를 누르면 nav_container의 height만 변경되게 하고 overflow :hidden하면 더 이쁘게 되었다.

 

 .list {
    display: block;
  }
list.addEventListener("click", function () {
  nav_container.classList.toggle("size");
});
@media all and (max-width: 725px) {
 ... (생략)
  .nav_container {
    display: flex;
    flex-direction: column;
    transition: all 1.1s;
    overflow: hidden;
    ...(생략)
  }

 

!importe

이거를 하기전에 자꾸 hidden 클래스가 다른 클래스한테 묻혀서 적용이 안되었다.

그래서 알아보니 !important;를 사용하면 무조건적으로 적용이 된다고 하여 사용하게되었다.

 

전체적인 스타일 적용 우선 순위는 다음과 같다.

 

  • 인라인 스타일(inline style) >내부 스타일(internal style)>외부 스타일(external sytle)>브라우저 기본값 순
  • 두 가지가 똑같은 등급일 때, 가장 마지막으로 적용한 것이 가장 우선한다.
  • 특정도 값이 높을 수록 우선순위
    • 인라인 스타일 1000점
    • ID 선택자 100점
    • 클래스 & 가상 클래스 10점
    • 태그 선택자 1점

 

'개발 > 개발일지' 카테고리의 다른 글

before after 사용해서 줄 긋기  (0) 2023.10.11
모달 만들기  (0) 2023.08.30
sidebar 만들기  (0) 2023.08.25
리뷰 캐러셀 만들기  (0) 2023.08.25
tap 만들기  (0) 2023.08.23

댓글