0

大家好,我正在制作一个 div,它将在滚动时具有固定位置看这里

现场演示

和代码是

var div = $('.PropertyContainer');
    var start = $(div).offset().top;

    $.event.add(window, "scroll", function () {
        var p = $(window).scrollTop();
        var height = $(div).height();
        $(div).css('position', ((p) > start) ? 'fixed' : 'static');
        $(div).css('top', ((p) > start) ? '0px' : '');
        $(div).css('min-height', ((p) > start) ? '336px' : '70%');
        $('.FormWrapper').css('margin-left', ((p) > start) ? '181px' : '');
    });

请帮帮我,我正在研究这两天,但没有做任何事情

提前致谢

4

2 回答 2

1

问题是由PropertyContainer的高度引起的。这是页面上最大的元素,因此定义了垂直滚动条。

但是当您开始滚动时,您将他的位置更改为“固定”。此时,PropertyContainer的高度不再计入页面的总高度,页面垂直收缩,导致滚动条很快消失。

然后你陷入无限循环:

滚动条消失 > scrollamount=0 > 位置再次变为静态 > 页面变高 > 滚动条重新出现 > ...

可能的解决方案:

当您使Formwrapper更高以便PropertyContainer不再定义页面高度时,您的脚本就可以工作。

http://jsfiddle.net/willemvb/CdpeK/

于 2012-10-10T11:53:48.203 回答
0

您是否尝试过使用来固定您的元素?这应该比 JavaScript 工作得更好更快,尽管如果你的目标是移动设备,这个选项是没有问题的(它们还不支持固定定位,至少旧版本的 Android 和 iPhone 不支持)。

于 2012-10-10T10:32:54.403 回答