본문 바로가기

Mini Projects

Menu Slider & Modal (2) - Style Nav

본 포스트는 udemy.com에 올라온 Brad Traversy의 20 Web Projects With Vanilla JavaScript 강의 중 하나를 정리한 내용입니다.

https://www.udemy.com/course/web-projects-with-vanilla-javascript/ 

 

20 Web Projects With Vanilla JavaScript

Build 20 mini frontend projects from scratch with HTML5, CSS & JavaScript (No frameworks or libraries)

www.udemy.com

 

 

 

왼쪽 Navigation Bar을 CSS로 꾸며보겠다.

 

 nav {
  background-color: var(--primary-color);
  border-right: 2px solid rgba(200, 200, 200, 0.1);
  color: #fff;
  position: fixed;
  top: 0;
  left: 0;
  width: 200px;
  height: 100vh;
  z-index: 100;
}

배경색은 primary-color (#30336b)

오른쪽에 border을 줘서 header와 main section에 구분선

글자색은 흰색 #fff

 

position:fixed;

top:0;

left:0;

을 줘서 말 그대로 왼쪽 위에 달라붙게

 

 

width:200px로 너비를 주고

height:100vh;로 높이를 줘서 화면 아래까지 다 내려오도록

 

 

z-indx:100 큰 숫자 줘서(ㅋㅋ) 확실히 튀어 나와서 볼 수 있게!

 

 

 

 

nav .logo {
  padding: 30px 0;
  text-align: center;
}

로고 이미지(여기서는 저 남자 사진)이 들어가는 div 박스인데

위,아래 padding을 주고

text-align:center을 해서 사진을 중앙에 배치시킨다.

 

 

nav .logo img {
  height: 75px;
  width: 75px;
  border-radius: 50%;
}

 

이미지의 height과 width를 일치시키고 border-radius:50%를 주면 반듯한 동그라미 이미지가 완성

 

 

 

nav ul {
  padding: 0;
  margin: 0;
  list-style-type: none;
}

메뉴 ul들의 마진, 패딩을 없애고

li들 앞에 있는 점(dot)을 없애기 위해 list-style을 none으로 한다.

 

 

 

nav ul li {
  border-bottom: 2px solid rgba(200, 200, 200, 0.1);
  padding: 20px;
}

li들끼리 간격을 넓히기 위해 padding을 주고

구분선을 주기 위해 border-bottom

 

 

nav ul li:first-of-type {
  border-top: 2px solid rgba(200, 200, 200, 0.1);
}

:first-of-type pseudo selector를 이용해서 첫번째 li에는 border-top도 줬다

위에 logo 이미지와의 구분선을 위해서.

 

 

nav ul li a {
  color: #fff;
  text-decoration: none;
}

메뉴 li에 다 <a> tag를 걸어놨다.

anchor 태그의 경우에는 글자색과 아래에 생기는 파란선을 없애려면

이렇게 직접 a tag에 style을 줘야한다.

(li에 주면 효과 없음)

 

 

 

nav ul li a:hover {
  text-decoration: underline;
}

메뉴에 hover over했을 때, 해당 메뉴 underline이 생기게

(개인적으로 그냥 underline만 생기는건 크게 좋아하는 스타일을 아닌..........)

 

 

 

nav {
  background-color: var(--primary-color);
  border-right: 2px solid rgba(200, 200, 200, 0.1);
  color: #fff;
  position: fixed;
  top: 0;
  left: 0;
  width: 200px;
  height: 100vh;
  z-index: 100;
  transform: translateX(-100%);
}

 

nav bar 스타일을 다 마치고 나서

다시 <nav> 태그에

transform: translateX(-100%);

속성을 줬다.

nav bar는 우리가 toggle 버튼을 눌렀을 때만 나타나게 할 것이기 때문에

기본 스타일을 다 마친 후에는 일단 숨겨놨다.

 

나중에 toggle 버튼 기능이 다 완료되면,

toggle 버튼을 누르면 우리가 스타일한 nav 메뉴가 나타나고

다시 toggle 버튼을 누르면 화면에서 사라진다.

 

 

 

 

 

 

 

 

 

 


position:fixed와 position:sticky

참고: https://developer.mozilla.org/en-US/docs/Web/CSS/position

 

position

The position CSS property sets how an element is positioned in a document. The top, right, bottom, and left properties determine the final location of positioned elements.

developer.mozilla.org

 

 

나온 김에 복습하려고.. 그냥 mdn 문서를 혼자 직역하며 정리해본다..

 

position: fixed;

- position:fixed를 주면 그 element는 원래 html document에 있던 flow에서 아예 제거되버린다.

다시 좀 더 풀어써서 말해보자면, 

normal document flow에서 fixed element를 위한 자리가 아예 사라지고

그 element가 마치 처음부터 없었던 것처럼!!!

layout에서 그냥 사라진다!

그리고 그 다음 element들이 쭉쭉 배치됨.

- 그리고 혼자 화면에서 붕- 떠서는 top, right, bottom, left 값들에 의해 위치가 정해짐

 

 

position:sticky;

- sticky를 하면 일단 normal document flow에 그대로 위치해 있다.

- 근데 스크롤바를 내리면 다른 document element들은 사라지는데

position:sticky element는 그 자리에 그대로 붙어 있다.

'Mini Projects' 카테고리의 다른 글

Menu Slider & Modal (4) - Style Modal  (0) 2020.07.17
Menu Slider & Modal (3) - Style Header & Main Section  (0) 2020.07.17
Menu Slider & Modal (1) - HTML  (0) 2020.07.17
Wealth List (6) - Reduce()  (0) 2020.07.16
Wealth List (5) - filter()  (0) 2020.07.16