[html,css]메뉴바 클릭으로 올리고 내리기

JEONGSIK KIM·2020년 9월 8일
0

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;
}
  1. menu창의 기본 위치를 화면밖으로 설정
input[id="menuicon"] {
  display: none;
}
  1. 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;
}
  1. 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);
}
  1. input을 클릭(checked)함과 동시에 transform 발생.
    (bar모양에서 X모양으로 변경)
input[id="menuicon"]:checked + label + nav {
  top: 0;
}
  1. checked시 menu바 위치 이동
    여기서 +는 인접요소선택자를 의미. 따라서 html에서 input+label+nav는 나란히 작성되어야 함!
profile
개발꿈나무

0개의 댓글