jQuery.offset()设置位置:绝对.我需要位置:固定

jQuery.offset() sets position: absolute. I need position: fixed

本文关键字:位置 固定 绝对 offset 设置 jQuery      更新时间:2023-09-26

使用jQuery.offset({coords})设置元素的偏移量时,还会将CSS属性position设置为absolute

然而,我有一个div,我在CSS中设置为position: fixed,我希望它保持这种状态,即使在用jQuery设置元素的偏移量之后也是如此。

现在,我确信我可能可以设置偏移量,然后再次设置position: fixed,但我想知道是否有一种方法可以告诉jQuery在设置偏移量时将位置设置为固定而不是绝对。

HTML

<div class="searchResults">
    ...
</div>

CSS

DIV.searchResults {
    position: fixed;
    padding: 20px;
    background-color: red;
    z-index: 501;
}

jQuery

$("DIV.searchResults").offset({left: 0, top: 0});

渲染HTML

<div class="searchResults" style="position: absolute; top: 0px; left: 0px;">
    ...
</div>

显然,由于jQuery正在设置样式中的位置,它将胜过我的CSS类的值。因此,我需要一种方法来告诉jQuery将position设置为fixed而不是absolute,或者告诉它在不设置CSS属性position的值的情况下设置偏移量。

正如我上面所评论的,在您的情况下,您只需要修改顶部和左侧的CSS,如下所示:

$("DIV.searchResults").css({left: 0, top: 0});

因为$offset setter方法只操作left、top和position值,使元素相对于页面(从静态到相对,从固定到绝对)。由于您希望它的位置固定,请直接设置值。

也许没有那么优雅,但我认为你可以在那之后链式.css(),以确保position设置为fixed,如下所示:

jquery

$("DIV.searchResults").offset({
    left: 0, 
    top: 0
}).css("position" : "fixed");

没有测试,但我认为这会奏效。