javascript - 当滚动元素底部到达父元素末尾时停止 jQuery 固定位置滚动

标签 javascript jquery html css

我正在使用下面的 jQuery(由 James Montagne 回答)在用户向下滚动 250 像素后开始固定位置滚动,以便元素保持固定在浏览器的顶部。

$(window).scroll(function(){
    $("#theFixed").css("top",Math.max(0,250-$(this).scrollTop()));
});

问题:另外,当滚动固定位置元素的底部到达父 div 元素的末尾时,我想停止固定位置滚动。这样可以防止固定位置元素溢出父元素并被 chop 。

我的示例代码在这里:http://jsfiddle.net/b43hj/2020/

<div>
    <div id="theFixed" style="position: fixed; top: 250px; background-color: red">
        0 SOMETHING<br />
        1 SOMETHING<br />
        2 SOMETHING<br />
        3 SOMETHING<br />
        4 SOMETHING<br />
        5 SOMETHING<br />
        6 SOMETHING<br />
        7 SOMETHING<br />
        8 SOMETHING<br />
        9 SOMETHING<br />
        10 SOMETHING<br />
        11 SOMETHING<br />
        12 SOMETHING<br />
        13 SOMETHING<br />
        14 SOMETHING<br />
        15 SOMETHING<br />
        16 SOMETHING<br />
        17 SOMETHING<br />
        18 SOMETHING<br />
        19 SOMETHING<br />
        20 SOMETHING<br />
        21 SOMETHING<br />
        22 SOMETHING<br />
        23 SOMETHING<br />
        24 SOMETHING<br />
        25 SOMETHING<br />
        26 SOMETHING<br />
        27 SOMETHING<br />
        28 SOMETHING<br />
        29 SOMETHING<br />
    </div>
    THIS IS A LONG SENTENCE THAT GOES PAST THE RED SOMETHINGS
    <br>
    THIS IS A LONG SENTENCE THAT GOES PAST THE RED SOMETHINGS
    <br>
    ... END
</div>

截图: screenshot of issue

(此原始问题和答案的附加问题:Stopping fixed position scrolling at a certain point?)

最佳答案

为了防止固定元素溢出父元素,我提出了这个解决方案。 Example code

$(window).scroll(function(){
    var scroll_top = $(this).scrollTop(); // get scroll position top
    var height_element_parent =  $("#theFixed").parent().outerHeight(); //get high parent element
    var height_element = $("#theFixed").height(); //get high of elemeneto
    var position_fixed_max = height_element_parent - height_element; // get the maximum position of the elemen
    var position_fixed = scroll_top < 250 ? 250 - scroll_top : position_fixed_max > scroll_top ? 0 : position_fixed_max - scroll_top;
    $("#theFixed").css("top",position_fixed);
});

关于javascript - 当滚动元素底部到达父元素末尾时停止 jQuery 固定位置滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22261460/

相关文章:

html - 输入带有 Bootstrap 图标

javascript - 循环创建具有多个图像的多个 Canvas 并不总是显示图像

javascript - PHP 在所有浏览器上禁用缓存

javascript - Jquery拖放恢复到原始位置,双击div

html - float :right is limited by its parent div, 使其右对齐/向下对齐

javascript - 如何使用jQuery获取具有特定类的元素的索引,位置编号

javascript - 如何从异步函数返回

javascript - MapBox 方向——获取自己的 Lat 和 Lng 方向

ajax - $.ajax 始终返回成功,即使有错误

jquery - 在 ASP.NET MVC 3 中使用不显眼的客户端验证编写什么 jQuery?