私は、ヘッダーとメニューを含む固定メニューを持っています。スクロールダウンすると、メニューが消えてからスクロールが止まると再び表示されます。スクロール時のslideDownと非アクティブ時のslideUp
背景の位置yをアニメーション化している背景イメージもあります。私が抱えている問題は、メニューが消えて再び表示されることですが、背景画像は-70pxにアニメーションされますが、メニューが表示されたときに0pxにアニメーション化されません。
私はJSFiddleを作成しました。
HTML
<body>
<div id="header-wrapper">
<div id="branding-wrapper">
</div>
<a href="#!">
<div id="inone-wrapper"></div>
</a>
<div id="navbar-wrapper">
</div>
</div>
</body>
jQueryのあなたの問題がいっぱいのアニメーションキューから来ている
$(document).ready(function($) {
var $menu = $("#navbar-wrapper");
var opacity = $menu.css("opacity");
var scrollStopped;
var fadeInCallback = function() {
if (typeof scrollStopped != 'undefined') {
clearInterval(scrollStopped);
}
scrollStopped = setTimeout(function() {
$menu.slideDown({
duration: 300,
easing: 'linear'
});
$('#inone-wrapper').animate({
'background-position-y': '0'
});
$('#branding-wrapper').css('background', 'rgba(255,255,255,1)');
}, 800);
}
$(window).scroll(function() {
if (!$menu.is(":animated") && opacity == 1 && $(window).scrollTop() > 130 && $('#navbar').not('.in') && ($(window).width() >= 992)) {
$menu.slideUp({
duration: 300,
easing: 'linear',
complete: fadeInCallback
});
setTimeout(function() {
$('#inone-wrapper').animate({
'background-position-y': '-70px'
});
}, 200);
$('#branding-wrapper').css('background', 'rgba(255,255,255,0.9)');
} else {
fadeInCallback.call(this);
}
});
});
@DaniP - - 私はJSFIDDLEを更新しましたし、それが今働いて、プレースホルダイメージがある
.stop()
のデフォルトはフィドルfalse, false
ですどのようにバックグラウンドサイズを-72pxにアニメーション化するかは、メニューが再び表示されたとき0pxに戻さない – nsilva
それは、ちょうどt akes a while ...あなたのタイミングを変更する必要があります – Adjit
少なくとも私のために戻ってくることはありませんが、少なくともChromeではない@Adjit – nsilva