【发布时间】:2012-10-07 17:31:51
【问题描述】:
【问题讨论】:
-
@Phil:你是什么意思?
-
只是和你搞砸了',对不起。
标签: jquery html scroll overlay
【问题讨论】:
标签: jquery html scroll overlay
我已经修改了您上面的代码,使其运行顺畅并且不会浮在停止元素上。代码风格也得到了改进。
var menu = "#menu",
stop = '#stop';
$(function(){
var $menu = $(menu),
$stop = $(stop),
baseOffset = $menu.offset().top,
stopOffset = $stop.offset().top;
$(window).scroll(function () {
var newOffset = baseOffset + $(document).scrollTop();
if($menu.offset().top < stopOffset || newOffset < stopOffset)
{
if (newOffset > stopOffset){
newOffset = stopOffset;
}
$menu.animate({top:newOffset},{duration:300,queue:false});
}
});
});
【讨论】:
试试下面的代码 - 它按预期工作http://jsfiddle.net/sasindu555/xaYTt/
var name = "#special_features";
var menuYloc = null;
$(document).ready(function(){
$(name).css("top", $("#start").offset().top - 10);
menuYloc = parseInt($(name).css("top").substring(0,$(name).css("top").indexOf("px")))
$(window).scroll(function () {
var offset = menuYloc+$(document).scrollTop();
if(offset > $("#stop").offset().top){
offset = $("#stop").offset().top - 10;
}
else if(offset < $("#start").offset().top){
offset = $("#start").offset().top - 10;
}
offset = offset+"px"; $(name).animate({top:offset},{duration:500,queue:false});
});
});
【讨论】:
你可以在 jquery 中使用 offset().top 来做这样的事情。
if($(name).offset().top < $(stop).offset().top || newOffset < $(stop).offset().top)
{
$(name).animate({top:newOffset},{duration:200,queue:false});
}
这是我的尝试(不准确)。
编辑:哇,SE 的人真快……
【讨论】: