jQuery-아래로 스크롤 할 때 축소되는 고정 헤더
페이지를 아래로 스크롤하면 고정 헤더를 축소 (애니메이션 포함)하고 페이지를 위로 스크롤하면 정상 상태로 돌아가는 방법이 궁금합니다. 정리할 두 가지 예는 다음과 같습니다.
http://themenectar.com/demo/salient/
http://www.kriesi.at/themes/enfold/
고정 할 부분을 얻었지만 사용자가 아래로 스크롤 할 때 헤더를 축소하려면 어떻게해야합니까?
엄청 고마워
이것은 jQuery를 사용하여 찾고있는 것이어야합니다.
$(function(){
$('#header_nav').data('size','big');
});
$(window).scroll(function(){
if($(document).scrollTop() > 0)
{
if($('#header_nav').data('size') == 'big')
{
$('#header_nav').data('size','small');
$('#header_nav').stop().animate({
height:'40px'
},600);
}
}
else
{
if($('#header_nav').data('size') == 'small')
{
$('#header_nav').data('size','big');
$('#header_nav').stop().animate({
height:'100px'
},600);
}
}
});
데모 : http://jsfiddle.net/jezzipin/JJ8Jc/
여기에 jezzipin 솔루션의 CSS 애니메이션 포크가 있습니다. 스타일링에서 코드를 분리합니다.
JS :
$(window).on("scroll touchmove", function () {
$('#header_nav').toggleClass('tiny', $(document).scrollTop() > 0);
});
CSS :
.header {
width:100%;
height:100px;
background: #26b;
color: #fff;
position:fixed;
top:0;
left:0;
transition: height 500ms, background 500ms;
}
.header.tiny {
height:40px;
background: #aaa;
}
http://jsfiddle.net/sinky/S8Fnq/
scroll / touchmove에서 "$ (document) .scrollTop ()"이 0보다 크면 css 클래스 "tiny"가 "#header_nav"로 설정됩니다.
CSS 전환 속성은 "height"및 "background"속성을 멋지게 애니메이션화합니다.
http://callmenick.com/2014/02/18/create-an-animated-resizing-header-on-scroll/
이 링크에는 재생할 수있는 소스 코드가 포함 된 훌륭한 자습서가 있으며 헤더 내부의 요소와 헤더 자체를 더 작게 만드는 방법을 보여줍니다.
트위터 스크롤 문제를 기반으로합니다 ( http://ejohn.org/blog/learning-from-twitter/ ).
다음은 js 스크롤 이벤트를 조절하는 솔루션입니다 (모바일 장치에 유용)
JS :
$(function() {
var $document, didScroll, offset;
offset = $('.menu').position().top;
$document = $(document);
didScroll = false;
$(window).on('scroll touchmove', function() {
return didScroll = true;
});
return setInterval(function() {
if (didScroll) {
$('.menu').toggleClass('fixed', $document.scrollTop() > offset);
return didScroll = false;
}
}, 250);
});
CSS :
.menu {
background: pink;
top: 5px;
}
.fixed {
width: 100%;
position: fixed;
top: 0;
}
HTML :
<div class="menu">MENU FIXED ON TOP</div>
http://codepen.io/anon/pen/BgqHw
나는 jezzipin의 대답의 업그레이드 버전을 수행했습니다 (그리고 높이 대신 패딩 상단을 애니메이션하고 있지만 여전히 요점을 얻습니다.
/**
* ResizeHeaderOnScroll
*
* @constructor
*/
var ResizeHeaderOnScroll = function()
{
this.protocol = window.location.protocol;
this.domain = window.location.host;
};
ResizeHeaderOnScroll.prototype.init = function()
{
if($(document).scrollTop() > 0)
{
$('header').data('size','big');
} else {
$('header').data('size','small');
}
ResizeHeaderOnScroll.prototype.checkScrolling();
$(window).scroll(function(){
ResizeHeaderOnScroll.prototype.checkScrolling();
});
};
ResizeHeaderOnScroll.prototype.checkScrolling = function()
{
if($(document).scrollTop() > 0)
{
if($('header').data('size') == 'big')
{
$('header').data('size','small');
$('header').stop().animate({
paddingTop:'1em',
paddingBottom:'1em'
},200);
}
}
else
{
if($('header').data('size') == 'small')
{
$('header').data('size','big');
$('header').stop().animate({
paddingTop:'3em'
},200);
}
}
}
$(document).ready(function(){
var resizeHeaderOnScroll = new ResizeHeaderOnScroll();
resizeHeaderOnScroll.init()
})
참고 URL : https://stackoverflow.com/questions/16442016/jquery-sticky-header-that-shrinks-when-scrolling-down
'Programing' 카테고리의 다른 글
| PHP 양식 제출에서 어떤 버튼이 클릭되었는지 어떻게 알 수 있습니까? (0) | 2020.10.24 |
|---|---|
| foreach 루프에서 null 확인 (0) | 2020.10.23 |
| 최신 appcompat 및 지원 라이브러리로 업데이트 한 후 DexIndexOverflowException 문제 (0) | 2020.10.23 |
| Maven에서 Javac 컴파일러를 찾을 수 없습니다. (0) | 2020.10.23 |
| Visual Studio에서 현재 탭을 제외한 모든 탭을 닫는 바로 가기 키? (0) | 2020.10.23 |