它是你想要变小的标志吗?您可能想使用 jquery-ui 使用 css-class 进行动画处理以更改高度和其他元素(例如隐藏搜索块)
但如果它是詹姆斯所做的高度,但你不需要将它存储在元素上的数据中:
$(document).ready(function() {
var main_nav = $(".main_nav"),
oldHeight = main_nav.height(),
scrollUpTo = 30,
hideHeight = 50,
w = window;
$(window).scroll(function(e){
var scrollTop = $(w).scrollTop();
setTimeout(function() {
if(scrollTop > hideHeight && main_nav.height() !== scrollUpTo ){
main_nav.stop(/*clearQueue*/true).animate({ height: scrollUpTo });
} else if(scrollTop < hideHeight && main_nav.height() !== oldHeight ) {
main_nav.stop(/*clearQueue*/true).animate({ height: oldHeight });
}
}, 100);
});
});
如果高度不等于旧高度并且 scrollTop 小于 50,则对其进行一次动画处理。
您可能还想使用超时,这样您就不会在滚动时一直触发(建议在滚动事件上设置超时)
但要修复 main_nav 的所有子元素,我的猜测是 jquery-ui switchClass http://jqueryui.com/docs/switchClass/可能会修复它。