1. 미리보기
메뉴에서 많이 쓰이는 햄버거 메뉴 애니메이션을 만들어보자!
이 애니메이션을 만들기 위해서는transform
을 사용해야한다.
See the Pen by KumJungMin (@kumjungmin) on CodePen.
2. 코드 설명
(1) html
label
의for="checkbox_id"
를 이용하면, label 영역을 클릭시 checkbox가 checked가 된다.label
내부에 3개의 bar들을 배치한다.<div class="frame"> <div class="center"> <label class="menu-wrap" for="check-menu"> <input class="check-menu" type="checkbox" id="check-menu"> <div class="menu-bar"></div> <div class="menu-bar"></div> <div class="menu-bar"></div> </label> </div> </div>
(2) css
translate(x축, y축)
을 이용해 요소의 위치를 변경할 수 있다.rotate(각도)
를 사용해 요소를 회전시킬 수 있다.
.center {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
}
.menu-wrap {
cursor: pointer;
.check-menu {
display: none;
}
}
.menu-bar {
width: 5rem;
height: 0.7rem;
margin-bottom: 3px;
border: 0.1rem solid #F5F5F5;
background-color: #fff;
border-radius: 5px;
transition: 0.5s;
}
.top-bar {
transform: translate(0, -1rem) rotate(-45deg);
}
.middle-bar {
transform: scale(0);
}
.last-bar {
transform: translate(0, 1rem) rotate(45deg);
}
(3) js
checkbox
를 클릭했을 때tranform
클래스를 추가한다.let clickBox = document.querySelector('.check-menu'); let menuBar= document.querySelectorAll('.menu-bar'); let animateClass = ['last-bar', 'middle-bar', 'top-bar'];
clickBox.addEventListener("click", function() { for(let i=0; i<menuBar.length; i++) { menuBar[i].classList.toggle(animateClass[i]); } })
반응형
'개발 기술 > css 애니메이션 (with js)' 카테고리의 다른 글
carousel slider 만들기 (with js) (0) | 2021.09.27 |
---|---|
계산기 만들기(with js, css) (0) | 2021.09.27 |
hover시 색이 변하는 애니메이션(with. box-shadow로 네온 효과) (0) | 2021.09.25 |
이미지 로딩 애니메이션(feat. 저화질, skeleton loading) (0) | 2021.09.23 |
로딩 화면 만들기 (with css) (0) | 2021.09.21 |
댓글