주로 사이드바가 열릴때 쓰는 햄버거 버튼을
닫기버튼 (x버튼)으로 변경하는 css 소스 입니다.
버튼을 클릭 시에 클래스가 추가되어
첫번째와 마지막 작대기는 transform의 rotate로 회전시키고
가운데 작대기는 opcity를 0로 변경해 안보이게 처리했습니다.
html 소스입니다.
<div class="menu-wrap">
<span class="line"></span>
<span class="line"></span>
<span class="line"></span>
</div>
css 소스입니다
.menu-wrap{
margin-top:50px;
margin-left:100px;
position: relative;
width: 28px;
height: 16px;
cursor: pointer;
}
.menu-wrap .line{
position: absolute;
width: 100%;
height: 2px;
border-radius: 2px;
background: #222;
left: 0;
}
.menu-wrap .line:first-child{
top: 0;
transform-origin: 25% 50%;
transition: .3s;
}
.menu-wrap .line:nth-child(2){
top: calc(50% - 1px);
}
.menu-wrap .line:last-child{
bottom: 0;
transform-origin: 25% 50%;
transition: .3s;
}
.menu-wrap.open .line:first-child{
transform: rotate(45deg) translateX(10%);
}
.menu-wrap.open .line:nth-child(2){
opacity: 0;
}
.menu-wrap.open .line:last-child{
transform: rotate(-45deg) translateX(10%);
}
javascript 소스입니다.
버튼 클릭 이벤트에 클래스 추가를 합니다.
const menu = document.querySelector('.menu-wrap');
menu.addEventListener('click',function(){
if(menu.classList.contains('open')){
menu.classList.remove('open');
}else{
menu.classList.add('open');
}
});
'coding > web' 카테고리의 다른 글
javascript tab menu 탭메뉴 클래스만 붙여서 만들기 (0) | 2023.12.13 |
---|---|
javascript typed.js 사용법 텍스트 타이핑 효과 (0) | 2023.12.11 |
jquery 부드럽게 흘러가는 marquee 효과 전광판 (0) | 2023.12.08 |
css 자주쓰는 마우스오버 이벤트 mouse over hover (1) | 2023.12.07 |
javascript 스크롤 애니메이션 스크롤 내릴때 선 채우기 progress bar gsap scrollTrigger scroll animation (2) | 2023.12.03 |