看起来您拥有的大多数 jQuery + 动画 CSS 对于您正在尝试做的事情并不是真正必要的(如果我正确掌握了这个概念)。
删除 jQuery 代码以及您当前拥有的 animate.css 并尝试将其插入:
$('a[href^="#"]').on('click', function(){
// Cache
var _this = $(this);
// Get the section name that you want to show
var section_to_show = $(_this.prop('hash'));
// Hide all other sections except the one you want to show
// but make sure it's not currently being animated
_this.closest('section').not(':animated').animate({
'margin-top': '-100px',
opacity: 0
}, 750, function() {
// Hide the current element so it can be
// faded in next time it's called
$(this).hide();
// Fade in the section that you wanted
section_to_show.css({
opacity: 1,
'margin-top': '0'
}).fadeIn(750);
});
});
由于您的所有部分都与每个链接中的哈希命名相同,因此您可以从您单击的链接中调用哈希值,淡出当前部分(带有一点向上滑动 + 淡出动画)然后淡出在新的每次点击。
最后,.animated .fadeInDown
从该部分中删除类,#start
因为它似乎摆脱了动画:
<section id="start" class="start">
PS您可能希望将导航移动到所有精美部分动画之外的自己的容器中,以避免在每个部分上为同一菜单创建标记。只是一个建议。
这是一个小提琴示例:http: //jsfiddle.net/aPPYT/3/