【问题标题】:Implementing fixed position in javascript causes jitter in Safari when scrolling在javascript中实现固定位置会导致Safari在滚动时出现抖动
【发布时间】:2013-05-08 22:11:44
【问题描述】:

固定位置不适用于我的用例,因为它固定在浏览器窗口中,您可能会处于文本离开屏幕右侧而无法访问的状态。无论如何,我尝试使用绝对定位,然后在 javascript 中调整“顶部”。它在 Firefox 和 Chrome 中运行良好,但在 Safari 中滚动时内容会抖动。

http://jsfiddle.net/Z8UFE/4/

<div class="fixed sticky" data-offset-top="50"><p>fixed</p></div> 

$(document).ready(function() {
    var documentHeight = $(document).height();
    $(document).scroll(function() {
      var scrollTop = $(window).scrollTop();

      $(".sticky").offset(function() {
        $this = $(this);
        var offsetTop = $this.data("offset-top");

        if (scrollTop < 0) {
          scrollTop = 0;
        }

        var newTop = offsetTop + scrollTop;
        if (newTop < offsetTop) {
          newTop = offsetTop;
        }

        // Prevents document from infinitely expanding.
        var maxTop = documentHeight - $this.height();
        if (newTop > maxTop) {
          newTop = maxTop
        }

        // Prevents a bit of jitter since the current offset can be
        // not precisely the initial offset. 338 Vs. 338.12931923
        var currentTop = $this.offset().top;
        if ( Math.abs(currentTop - newTop) >= 1 ) {
          return { top: newTop }
        } else {
          return {}
        }
      });
    });
})

【问题讨论】:

    标签: javascript jquery safari scroll


    【解决方案1】:

    我想我理解你想要达到的目标。

    如果您在元素上保持固定位置并使用 javascript/jquery 将其水平重新定位,您可以保持平滑的垂直滚动并允许它也保持其水平定位:

    $(function() {
        var $sticky = $('.sticky');
        var target  = 800;
    
        $(document).scroll(function() {
            var left = $(window).scrollLeft();
            var adj  = target - left;
            $sticky.css({left: adj});
        });
    });
    

    这使用 scrollLeft() 这是 scrollTop() 的水平对应

    http://jsfiddle.net/Z8UFE/18/

    【讨论】:

      猜你喜欢
      • 2022-06-12
      • 2018-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-16
      • 2019-08-11
      相关资源
      最近更新 更多