我已经查看了与我所面临的相关的所有内容,但仍无法解决问题。
我正在尝试做什么:
我得到了什么:
这是剧本(由慷慨的Jordon Mears改编):
<script type="text/javascript">
function animate_box() {
var offset = -15; /* set this to the starting margin-top in the css */
var element = document.getElementById('animate_box');
if(element) {
var top = Number(String(element.style.marginTop).substring(0,String(element.style.marginTop).indexOf('px')));
try {
if(document.body.scrollTop > 500) {
var difference = (document.body.scrollTop + offset);
} else if(document.documentElement.scrollTop > 0) {
var difference = (document.documentElement.scrollTop + offset);
} else {
var difference = offset;
}
} catch(e) {
var difference = offset;
}
difference = difference - top;
if(difference > 200) {
element.style.marginTop = (top + Math.abs(Math.ceil(difference / 30))) + 'px';
} else if(difference < 190) {
element.style.marginTop = (top - Math.abs(Math.ceil(difference / 30))) + 'px';
}
}
}
window.setInterval(animate_box, 50);
</script>
答案 0 :(得分:0)
我建议采用不同的方法:
这样的事情:
$(function() {
var backup_position_toolbar = $('#sidebar').offset().top;
$(window).scroll(function() {
if ( $('#sidebar').offset().top - $(window).scrollTop() < 0) $('#sidebar').addClass('fixed');
if ( $(window).scrollTop() < backup_position_toolbar ) $('#sidebar').removeClass('fixed');
});
});
请注意,我使用的“固定”类定义如下: .fixed { 位置:固定; 顶部:0; }
这使菜单更有用。 如果你想在某一点阻止侧边栏,你可以添加一点逻辑(即当底部太近时)。 这样您就不需要设置数值(500,200等)。
但是如果你想要更多的东西没有努力尝试使用“affix”的bootstrap(看左边的菜单,是你想要的) http://twitter.github.com/bootstrap/javascript.html#affix