HTML,CSS만 사용해서 버튼 클릭으로 메뉴창 올리고 내리기
클릭 전
클릭 후
<input type="checkbox" id="menuicon"> //input의 checked시 transition이 동작하는 기능을 활용
<label for="menuicon"> //실제 클릭하게될 label_(
<span></span> //메뉴바 모양 작대기용
<span></span> //메뉴바 모양 작대기용
<span></span> //메뉴바 모양 작대기용
</label>
.menu {
background-color: #f6f6f6;
width: 100%;
height: 255px;
margin-top: 0;
position: fixed;
_ top: -300px;_
left: 0px;
z-index: 999;
transition: 0.5s ease-in-out 0s;
box-sizing: border-box;
}
- menu창의 기본 위치를 화면밖으로 설정
input[id="menuicon"] {
display: none;
}
- input의 checked 기능을 이용하는 것으로 input 박스 자체는 안보이게 설정
input[id="menuicon"]** + label {**
display: block;
width: 21px;
height: 21px;
z-index: 999999;
position: fixed;
right: 30px;
top: 30px;
cursor: pointer;
}
input[id="menuicon"] + label span {
display: block;
position: absolute;
width: 100%;
height: 3px;
border-radius: 30px;
background-color: #000;
transition: all 0.4s;
}
- span으로 bar 모양 만들기
input[id="menuicon"] + label span:nth-child(1) {
top: 0;
}
input[id="menuicon"] + label span:nth-child(2) {
top: 50%;
transform: translateY(-50%);
}
input[id="menuicon"] + label span:nth-child(3) {
bottom: 0;
}
input[id="menuicon"]:checked + label span:nth-child(1) {
top: 50%;
transform: translateY(-50%);
transform: rotate(45deg);
}
input[id="menuicon"]:checked + label span:nth-child(2) {
opacity: 0;
}
input[id="menuicon"]:checked + label span:nth-child(3) {
top: 50%;
transform: translateY(50%);
transform: rotate(-45deg);
}
- input을 클릭(checked)함과 동시에 transform 발생.
(bar모양에서 X모양으로 변경)
input[id="menuicon"]:checked + label + nav {
top: 0;
}
- checked시 menu바 위치 이동
여기서 +는 인접요소선택자를 의미. 따라서 html에서 input+label+nav는 나란히 작성되어야 함!