일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- css3
- html5
- 풀스택
- 로그인
- 네비게이터
- 프레임워크
- 스프링
- spring
- 웹페이지
- 백엔드
- 마이바티스
- 회원가입
- mybatis
- 오라클
- MVC
- jQuery
- 웹개발
- 미로 생성 알고리즘
- jsp
- javascript
- Ajax
- 프론트엔드
- dbms
- 웹서비스
- Binding
- c programming
- 비밀번호찾기
- 제이쿼리
- Linked List
- 서블릿
- Today
- Total
Programmer's Progress
animate( ), slideUp( ), slideDown( )으로 네비게이터 구현하기 본문
animate( ), slideUp( ), slideDown( )으로 네비게이터 구현하기
Blanc et Noir 2021. 2. 3. 18:15애니메이션 구현을 배웠으니 본격적으로 애니메이션을 활용한 내비게이터를 구현해보았다.
구현에 앞서 내비게이터 설계의 감을 잡기 위해 이미 구성된 소스코드를 차근차근 분석했다.
기본적으로 ul, li, a 태그를 적절히 조합한 후에 float:left 속성을 적용해 수평으로 배치하였다.
대략적인 원리를 설명하자면, 우선 학과 소개, 교육과정, 입학안내 등의 텍스트에 마우스를 올리면(Mouseenter)
slideUp( ) 되어있던 인사말, 연혁, 수행사업 등의 하위 메뉴가 slideDown( )된다.
이때 페이지에 처음 방문했을때나 새로 고침 했을 때 slideDown( )을 통해 하위 메뉴를 집어넣고 시작하면
잠깐 동안은 하위 메뉴가 노출되는 문제가 발생한다.
//하위메뉴는 처음에 hidden 상태임
$("ul[id^='sub']").slideUp(0,"linear");
$("ul[id^='sub']").css("visibility","visible");
일단 hidden상태로 초기 지정한 상태에서 문서가 ready 되자마자 다음의 소스코드를 추가하면
정상적으로 네비게이터 하위 메뉴가 보이지 않고 slideUp( ) 하게 된다.
또 하나의 문제는 Mouseenter 이벤트와 Mouseleave이벤트를 모두 a태그에 지정하면 상위 메뉴에 포커스를 두고
하위 메뉴를 선택하려 할 때 Mouseleave이벤트가 발생하여, 정상적으로 하위 메뉴를 선택할 수 없게 된다.
이때 필요한 것이 div#wrapper이며, Mouseenter이벤트를 a태그에 등록하여 하위 메뉴를 꼭 상위 메뉴를 통해서만
열 수 있도록 하는 반면, Mosueleave 이벤트는 div#wrapper에 등록하여 상위 메뉴의 범위를 벗어나도
Mouseleave이벤트는 하위요소에도 범위가 적용되기 때문에 문제없이 작동하는 것을 알 수 있다.
'JavaScript + JQuery > Self Learning' 카테고리의 다른 글
Vertical 네비게이터 구현하기 (0) | 2021.02.05 |
---|---|
네비게이터 메뉴 선택시 삼각형 표시 추가하기, hover 이벤트로 간결하게 구현하기 (0) | 2021.02.04 |
이펙트 메소드 hide( ), show( ), fadeIn( ), fadeOut( ), slideDown( ), slideUp( ), fadeTo( ) (0) | 2021.02.03 |
라이브러리 이벤트로 select 태그 add( ), remove( ) 구현하기 (0) | 2021.02.03 |
JQuery 배열 관련 메소드 each( ), grep( ) (0) | 2021.01.25 |