제이쿼리 ( JQuery ) 예제

one page scroll

 

코드펜  https://codepen.io/gamza/pen/RgJZzz?editors=1111

 

▣ 구상

  - 원페이지 웹을 만듭니다.

  - 네비게이션 메뉴 클릭시 해당 메뉴가 가리키는 컨텐츠로 스크롤이 이동합니다.

 

 

▣ 조건

   네비게이션

 ➋  컨텐츠

 ➌  네비게이션 클릭 이벤트 - 스크롤 이동

 

 

 

◆ 레이아웃 ( html, css )

1.  네비게이션 영역 / 컨텐츠 영역을 div 로 나눕니다.

2.  네비게이션을, 스크롤 이동에 영향받지 않고 화면상단에 고정시키기 위해 position : fixed 시킵니다.

3.  네비게이션과의 겹침 방지를 위해 컨텐츠를 네비게이션의 height 만큼 내려온 위치에서부터 추가합니다.  

4.  네비게이션과의 연동을 위해, 네비게이션 내부 <a> 태그 의 href 속성과 컨텐츠의 id를 각각 일치시킵니다.

 

● html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<div id="navigation">
<ul>
<li><a href="#SALMON"> SALMON </a> </li>
<li><a href="#ROYALBLUE"> ROYALBLUE </a> </li>
<li><a href="#GOLD"> GOLD </a> </li>
<li><a href="#BLACK"> BLACK </a> </li>
</ul>
</div>
<div id="wrap">
<div id="SALMON"></div>
<div id="ROYALBLUE"></div>
<div id="GOLD"></div>
<div id="BLACK"></div>
</div>

● css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
*{margin:0px; padding:0px;} <!-- 약식초기화 -->
#navigation{
position:fixed;
top:0px;
left:0px;
height:80px;
width:100%;
background:#000;
text-align:center;
font-size:14px;
}
#navigation ul { list-style:none; margin-top:50px; }
#navigation li { display:inline; margin-right:10px; }
#navigation li a { text-decoration:none; color:#FFF;}
#navigation li a:hover {color:#0F0;}
#wrap { width:100%;margin:0 auto;margin-top:80px; }
#SALMON{ background:salmon; height:1000px; }
#ROYALBLUE{ background:RoyalBlue; height:1000px; }
#GOLD{ background:Gold; height:1000px; }
#BLACK{ background:black; height:1000px; }

 

 

 

◆ 기능 ( jquery )

1.  네비게이션 메뉴 클릭 

2.  클릭된 <a> 태그의 href 를 id 로 가진 컨텐츠로 이동

3.  이동시에 스크롤 애니메이션 사용

 

● javascript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var speed = 700; // 스크롤 스피드 수치로 사용할 변수
//로직
function scrolling(obj){
if (!obj){ // 예외처리, 현재는 기능적으로 필요한 부분은 아님, 관례적 사용
$('html, body').animate({scrollTop:0},speed);
}else{
var posTop = $(obj).offset().top -80; // posTop = 매개변수로 들어온 컨텐츠 obj 의 offset().top - 네비게이션 높이
$('html, body').animate({scrollTop:posTop}, speed ) // body의 스크롤이동 : posTop
}
};
$("ul li a").click(function(){ // 네비게이션 클릭시
var direction = $(this).attr("href"); // direction = 클릭한 요소의 href 속성
scrolling( direction ); // direction 을 인자로 함수 실행
return false; // 본래 이벤트 방지
});

 

댓글

댓글 본문
  1. 김민정
    안녕하세요!.
    메뉴를 눌렀을때 speed가 안먹혀요 ㅜㅜ ㅜㅜㅜㅜ
  2. gamza
    댓글 달아주셔서 감사합니다^^

    조만간 다시 업데이트 예정이에요
    대화보기
    • 감사합니다!!!
    버전 관리
    gamza
    현재 버전
    선택 버전
    공동공부
    graphittie 자세히 보기