일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ThemeProvider
- 좌우슬라이드
- 카카오톡알림설정 #카톡알림설정
- GIT
- fade-in
- list추가하기
- 숫자게임만들기
- 티스토리 #폰트변경 #꾸미기
- todolist
- 파비콘 #파비콘만들기 #포토샵파비콘
- 메뉴
- 요일구하기
- array #object #lodash #javascript
- 음악검색기능 #음악찾기기능 #음악찾기 #음악검색 #네이버음악검색 #다음음악검색 #멜론음악검색
- darkmode
- 자바스크립트
- 윈도우10캡쳐 #윈도우10캡처 #윈도우10스크린샷 #캡쳐하기 #캡처하기 #스크린샷찍기 #캡쳐지연 #스크린샷지연
- 오류
- 요일구하는공식
- React
- 동영상다운 #영상다운 #크롬웹스토어 #드래그되지않는 #클릭되지않는 #동영상
- fadeint
- 슬라이드다운
- 문자열다루기
- hover효과
- 리액트
- 네트워크 #5G안터질때 #4G로바꾸는법 #5G를4G로 #5G를LTE로 #갤럭시5G변경
- 가장작은자연수
- 자바스크립트 #메뉴만들기
- 프로그래머스
- Today
- Total
잿꽃's posting Garden
자바스크립트로 메뉴 fade-in 효과 만들기 본문
2022.05.10 - [WEB] - 자바스크립트로 메뉴 dropdown - slidedown효과 만들기
자바스크립트로 만드는 메뉴 dropdown - slidedown효과
자바스크립트로 만드는 서브메뉴 slidedown효과 자바스크립트로 메뉴를 만들 때 제이쿼리를 이용하지 않고 dropdown시에 slidedown의 효과를 만들고 싶은데 단순히 height값만 조정으로는 잘 되지 않았
flowerofashes.tistory.com
저번 글에 이어서 자바스크립트로 메뉴가 나타나는 효과 중 fade-in를 적용해본다.
0. CSS의 :hover를 이용하여 CSS로만 구현하기
.menu_list .main .sub{
opacity: 0;
visibility: hidden;
transition: all 0.4s;
}
.menu_list .main:hover .sub{
opacity: 1;
visibility: visible;
transition: all 0.4s;
}
자세한 설명은 2-2 참고
1. 제이쿼리로 메뉴를 fade-in, fade-out효과를 넣는 방법
$('#gnb li').mouseenter(function(){
$('.sub').stop().fadeIn();
});
$('#gnb li').mouseleave(function(){
$('.sub').stop().fadeOut();
});
제이쿼리를 활용하여 간단하게 만들어 볼 수 있다.
2-1. 자바스크립트를 활용하여 fade-in, fade-out효과 넣기
저번과 동일한 코드를 사용하였다. 복잡해 보이지만 클래스 부여하는 작동밖에 없다.
//메인 메뉴를 선택
const menuhover = document.querySelectorAll('.main__title');
//하위 메뉴를 선택
const subShow = document.querySelectorAll('.sub');
//모든 메인 메뉴에 이벤트 적용
menuhover.forEach(function(item, index){
item.addEventListener('mouseenter',()=>{
subShow[index].classList.add('show');
})
//메인 메뉴에서 떠날 때
item.addEventListener('mouseleave',()=>{
subShow.forEach(function(item,index){
//메인 메뉴에서 떠났지만 서브메뉴에 머무를 때
item.addEventListener('mouseenter',()=>{
subShow[index].classList.add('show');
})
//메인 메뉴에서 떠났고 서브메뉴에 떠날 때
item.addEventListener('mouseleave',()=>{
subShow[index].classList.remove('show');
})
})
//서브 메뉴에서 머무르지 않고 메인에서 바로 떠날 때
if(subShow[index].classList.contains('show')){
subShow[index].classList.remove('show');
}
})
});
2-2. CSS에서 opacity 적용하기
참고로 opacity는 투명도로 opacity만 적용하면 흔적이 남는다. 보통 하위 메뉴에는 텍스트가 있으므로 마우스를 갖다 대면 마우스 포인터가 I모양으로 변하거나 a태그로 작성된 경우 포인터의 모양으로 변한다. 만약 그 밑에 클릭해야 하는 요소가 있다면 메뉴와 겹쳐져서 클릭이 되지 않을 것이다.
.menu_list .main .sub{
opacity: 0;
visibility: hidden;
transition: all 0.4s;
}
.menu_list .main .sub.show{
opacity: 1;
visibility: visible;
transition: all 0.4s;
}
기본적으로 display에 관해서는 transition이 작동되지 않기 때문에 visibility를 이용하였다. visibility는 자리는 유지하되 보이는 속성을 조절할 수 있다.
'WEB > JAVASCRIPT' 카테고리의 다른 글
자바스크립트로 좌우 슬라이드 만들기 (0) | 2022.05.20 |
---|---|
자바스크립트로 슬라이드 fade-in효과 만들기 (0) | 2022.05.19 |
자바스크립트로 메뉴 dropdown - slidedown효과 만들기 (0) | 2022.05.10 |
자바스크립트로 숫자야구 게임 만들기 (0) | 2022.05.04 |
자바스크립트로 끝말잇기 만들기 (0) | 2022.04.30 |