반응형
웹페이지의 내용이 많으면 스크롤해서 보게 됩니다. 그러면 페이지에 있는 모든 내용이 움직이고 상단에 있는 메뉴도 위로 사라지게 됩니다.
이렇게 되면 페이지의 내용을 다 보고 다른 메뉴로 이동하려 할 때 다시 문서의 위로 스크롤해서 올라가야 하는 불편이 있습니다.
이 불편을 해소하는 방법 중의 하나가 메뉴의 위치를 고정시키는 것입니다. 간단한 예제는 다음과 같습니다.
http://book.cmsfactory.net/jQuery/V01/Tips/jquery-tip-fixed-header.html
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<title>Fixed Header</title>
<style>
body {
margin: 0px;
padding: 0px;
}
.jbTitle {
text-align: center;
}
.jbMenu {
text-align: center;
background-color: yellow;
padding: 10px 0px;
width: 100%;
}
.jbContent {
height: 2000px;
}
.jbFixed {
position: fixed;
top: 0px;
}
</style>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$( document ).ready( function() {
var jbOffset = $( '.jbMenu' ).offset();
$( window ).scroll( function() {
if ( $( document ).scrollTop() > jbOffset.top ) {
$( '.jbMenu' ).addClass( 'jbFixed' );
}
else {
$( '.jbMenu' ).removeClass( 'jbFixed' );
}
});
} );
</script>
</head>
<body>
<div class="jbTitle">
<h1>Site Title</h1>
</div>
<div class="jbMenu">
<p>
First Menu
Second Menu
Third Menu
Fourth Menu
</p>
</div>
<div class="jbContent">
</div>
</body>
</html>


스크립트 부분만 살펴보면
var jbOffset = $( '.jbMenu' ).offset();
메뉴의 위치를 파악합니다.
$( window ).scroll( function() {
스크롤이 발생하면 함수를 실행시킵니다.
if ( $( document ).scrollTop() > jbOffset.top ) {
문서의 스크롤바 위치가 메뉴의 수직 위치보다 아래라면
$( '.jbMenu' ).addClass( 'jbFixed' );
메뉴에 jbFixed 클래스를 추가하여 고정시키고,
else {
$( '.jbMenu' ).removeClass( 'jbFixed' );
}
그렇지 않다면 제거합니다.
반응형
'유용한정보' 카테고리의 다른 글
| HTML5 오디오 404 오류시 다른 파일 재생 (0) | 2015.07.29 |
|---|---|
| HTML5 Audio Element, 한 판 붙자! (0) | 2015.07.29 |
| 스마트폰 음악방송 앱 다운로드 및 설치 방법 (0) | 2015.07.04 |
| 유튜브 영상 첨부할 때 사용 가능한 옵션 총정리 (0) | 2015.07.02 |
| Windows 8을 저사양PC에 최적화하기! (0) | 2015.04.05 |
| HTML 5 video 코드 사용 및 jQuery로 동영상 동적 load (0) | 2015.02.21 |
| [HTML5] Video & Audio (0) | 2015.02.21 |
| JavaScript 최적화 (CompressorRater) (0) | 2015.02.20 |
댓글