< 2차 메뉴가 있는 header 구성해보기 >
css 초기화 하기 전 구조를 다 짠 모습이 이렇게 보여야한다.
2차 메뉴 구조 코딩 ↓
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>2차 메뉴가 있는 header</title>
<!-- css연결/ 항상 초기화 파일이 먼저 연결되어야한다 -->
<link rel="stylesheet" href="./css/reset.css" />
<link rel="stylesheet" href="css/style.css" />
</head>
<body>
<header>
<div class="header_con">
<!-- 로고 -->
<h1>
<a href="/">kakao</a>
</h1>
<!-- 메뉴 -->
<nav>
<ul>
<li>
<a href="#">소개</a>
<ul class="submenu">
<!--원래는 여기아래에 a 태그 넣어야한다-->
<li>menu</li>
<li>menu</li>
<li>menu</li>
</ul>
</li>
<li>
<a href="#">이야기</a>
<ul class="submenu">
<li>menu</li>
<li>menu</li>
<li>menu</li>
</ul>
</li>
<li>
<a href="#">기술과 서비스</a>
<ul class="submenu">
<li>menu</li>
<li>menu</li>
<li>menu</li>
</ul>
</li>
<li>
<a href="#">약속과 책임</a>
<ul class="submenu">
<li>menu</li>
<li>menu</li>
<li>menu</li>
</ul>
</li>
<li>
<a href="#">뉴스</a>
<ul class="submenu">
<li>menu</li>
<li>menu</li>
<li>menu</li>
</ul>
</li>
<li>
<a href="#">투자정보</a>
<ul class="submenu">
<li>menu</li>
<li>menu</li>
<li>menu</li>
</ul>
</li>
</ul>
</nav>
<!-- 아이콘들 -->
<div class="icons">
<div class="search">
<img src="./img/search.svg" alt="검색" />
</div>
<div class="language">
<img src="./img/language.svg" alt="언어" />
</div>
<div class="dark">
<img src="./img/dark_mode.svg" alt="다크모드" />
</div>
</div>
</div>
</header>
</body>
</html>
1. css 파일에서 웹폰트 연결해주고 boby불러와서 font-family랑 글자 색 폰트 사이즈를 지정해준다.
(height 5000은 스크롤 만들기위해서 잠시 해놓은 것뿐이다. 신경 안써도 된다.)
2. nav에서 li 안에 또 다시 ul 과 li를 만들어주면 2차 메뉴를 만들 수 있다.
로고는 클릭하면 메인페이지로 연결되어야하니깐 a태그에 /(=메인페이지) 라고 써준다.
2차 메뉴 ul들을 class submenu로 지정해준다.
3. 해더의 전체영역은 width 브라우저 100%으로 해주고 height는 원하는 해더 높이값 지정해준다.
☆ header에 position: fixed;를 해주면 스크롤을 움직여도 해더가 브라우저 탑부분 위치에 고정되어 따라다닌다.
position: fixed;을 쓰고 top:0; left:0;으로 좌표값 설정해줘야한다.
로고, 메뉴, 아이콘들이 들어있는 header_con에 display:flex와 justify-content:space-between으로 위치 잡아준다.
4. 메뉴 영역 nav는 width와 height를 fit-content로 넓이 높이를 자식요소에 맞춰 감싸게 설정해준다.
5. 뒤에서부터 hover을 해석하면 이해하기 쉽다. ul에 마우스를 올리면/ 마우스를 올리지 않은, li는 컬러를 #888로 바꿔라
6. ☆ 2차 메뉴들을 묶어놓은 .submenu는 숨겨져있다가 1차 메뉴에 마우스를 올리면 나타나야한다
숨기는 법은,
height:0px; 을 주고 overflow:hidden;을 줘서 숨겨놓는다. 높이값이 있을 때 overflow:hidden;을 쓰면 높이값을 벗어난 부분을 숨기는 특징이 있으니 높이를 0px로 두고 숨기는 것이다. (펼쳐지는 효과를 줄려면 dispaly:none;이 아니라overflow:hidden; 써야한다)
위에 ul에 line-height를 84px를 줬어서 .submenu들도 이걸 상속받게 된다. 근데 그러면 너무 넓기때문에 .submenu도 따로 line-height을 준다.
*** submenu에 position: relative;를 주면 나중에 서브메뉴 글자들끼리 사이를 좁히고 싶거나 넓히고 싶을 때 top에 숫자를 조절해주면 조절할 수 있기 때문에 position: relative;을 적용해준다.
7. ☆ 1차 메뉴에 마우스를 올렸을 때 2차 메뉴를 보여주는 방법 2가지
-1번째 방법:
1차 메뉴에 마우스를 올리면 해당하는 2차 메뉴를 보여줘라
nav의 자손 ul의 자손 li의 영역에 마우스가 올라가면 해당 li안의 있는 .submenu를 보여줘라 (단일메뉴)
메뉴들이 각 한개당 40px line-height고 서브메뉴가 3개씩 들어가 있으니 높이가 40*3해서 120이니 height를 120으로 설정
높이 0, 오버플로우히든으로 숨겨놨으니깐 높이를 다시 줘서 나타나게 한다.
-2번째 방법:
1차 메뉴에 마우스를 올리면 모든 2차 메뉴를 보여줘라
nav의 자손 ul 영역에 마우스가 올라가면 모든 자손 li 안의 모든 .submenu를 보여줘라
=========================
8. 아이콘은 패딩으로 가운데 정렬해준다. (아이콘에 패딩 줄땐 박스사이징 보더박스 잊지말기- )
'예제 실습' 카테고리의 다른 글
실습) split shire 사이트 클론 코딩 (0) | 2024.06.25 |
---|---|
실습) Google (0) | 2024.06.24 |
실습) 네이버 회원가입 창 (0) | 2024.06.21 |
실습) table 게시판 만들기 (0) | 2024.06.19 |
1차 메뉴만 있는 Header 구성해보기 (0) | 2024.06.17 |