<!DOCTYPE html>
<html lang="kr">
<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">
<title>Document</title>
<style>
/* 웹 표준 설정 (웹기능사) */
/* reset */
* {margin: 0; padding: 0;}
a {color:#222; text-decoration: none;}
</style>
공통클래스를 넣고 빼는 걸로 css 수정이 가능하도록...
hover는 css로, click은 js로
dl dt dd(dl의 자식태그는 dt, dd이며 둘은 형제 관계이다-title과 data-)는
사이트맵 등에 있는 표에 주로 사용 됨
그래서 보통 dl>dt+dd>ul>li*4>a{내용} 이런 식으로 쓰임
<style>
li, dt, dd {list-style: none;}
/* common */
/* 공통클래스 잘 짜는 사람이 잘 하는 사람... */
/* 공통클래스로 디테일 짜지 않는 게 중요 (하드코딩 안 돼) */
/* 모바일은 여백 필요x, 데스크탑은 여백 필요>
그래서 최대넓이 데스크탑 기준으로 설정 */
.container {min-width: 1280px; max-width: 1280px; margin: 0 auto;}/* 반응형 */
</style>
absolute를 최소한으로 하고 relative(자동>반응형)를 잘 써야함
rel은 서열이 있고 순차적으로 움직이기 때문에 수정하기 편함
그래서 default는 position: relative;relative를 먼저 짠 다음에 (필요할 시) absolute로 묶어주는 것!
<style>
.rel {position: relative;}
.abs {position: absolute;}
.d-block {display: block;}
.d-none {display: none;}
.d-flex {display: flex;}
.jc-btwn {justify-content: space-between;}
.ali-cntr {align-items: center;}
/* layout */
/* 공통클래스를 절대 layout에 추가해서 쓰지 않는다!!!! */
#hd {background-color: #84ade3;}
/* a는 컬러 매번 다르게 설정해줘야 함!! */
#hd a {color: white;}
#hd h1 a {font-size: 2em;}
</style>
<style>
/* margin-left: auto;로 하면 끄트머리에 붙게 됨!! 컨테이너 때매 이제 여백이 같게 보이는 거임 */
/* #gnb {margin-left: auto;} */
/* #gnb li {margin-left: 2rem;} */
/* #gnb li:not(:last-child) {margin-right: 2rem;} 내가 한 거*/
</style>
a에 :hover할 경우에는 적용되지 않음
li:hover이면 li의 자식들도 모두 hover로 인식
a:hover이면 각각의 a:hover상태만 인식하므로 active 지속되지 않고
a 하나에서 커서가 떨어질 때마다 끊어짐
<style>
/* 선생님이 한 margin */
#gnb li {margin-left: 1rem;}
#gnb li a {transition: 0.5s; padding: 1rem; border-radius: 2rem;}
/* #gnb li:hover a {background-color: #f3a861; color: black;} */
/* 대메뉴 li에만 hover가 걸리려면? ' > '를 사용한다*/
#gnb > li:hover > a {background-color: #f3a861; color: black;}
/* 대메뉴 li에 마우스가 올라가면 소메뉴 등장 */
#gnb > li:hover ul {height: 160px; /* display: block; */}
/* height: 0; */
/* ul#gnb 안의 ul값 */
#gnb ul {
border: 1px solid #84ade3;
background-color: white;
width: 120px;
/* 소메뉴 숨어 */
/* display: none; */
height: 0;
transition: 0.5s;
overflow: hidden;
}
#gnb ul a {color: black; display: block;}
</style>
</body>
#gnb ul
overflow: hidden; 은 넘치는 것을 숨겨줌
여기에 transition을 넣어줘야 ul 자체 애니메이션이 자연스럽게 흘러감
hover되지 않은 ul에서는 height값을 0으로 넣어주고(transition: 수치가 있어야 함 (화면에 보이는 것 기준, x축/y축)
그래서 z-index는 안 되고 line-height는 가능)#gnb > li:hover ul
에서 height: 160px로 보여지게끔 한다
<body>
<!-- 1단 메뉴 -->
<header id="hd">
<div class="container d-flex jc-btwn ali-cntr">
<h1><a href="">세계의 미술작품</a></h1>
<ul id="gnb" class="d-flex">
<li class="rel">
<a href="">소장처별</a>
<!-- ul.abs>li*3>a{소메뉴$} -->
<ul class="abs">
<li><a href="">소메뉴1</a></li>
<li><a href="">소메뉴2</a></li>
<li><a href="">소메뉴3</a></li>
</ul>
</li>
<li>
<a href="">장르별</a>
<ul class="abs">
<li><a href="">소메뉴1</a></li>
<li><a href="">소메뉴2</a></li>
<li><a href="">소메뉴3</a></li>
</ul>
</li>
<li>
<a href="">테마별</a>
<ul class="abs">
<li><a href="">소메뉴1</a></li>
<li><a href="">소메뉴2</a></li>
<li><a href="">소메뉴3</a></li>
</ul>
</li>
<li>
<a href="">시대별</a>
<ul class="abs">
<li><a href="">소메뉴1</a></li>
<li><a href="">소메뉴2</a></li>
<li><a href="">소메뉴3</a></li>
</ul>
</li>
</ul>
</div>
</header>
</body>
</html>
<!-- 1단 메뉴 -->
header#hd>.container>h1>a>img^^ul#gnb>li*4>a{대메뉴$}
<!-- 2단 메뉴 -->
header#hd>.container>h1>a>img^^ul#gnb>li*4>a{대메뉴$}+ul>li*5>a{소메뉴}