【问题标题】:Fade out while scrolling "not smooth" / "stuttering"滚动“不流畅”/“口吃”时淡出
【发布时间】:2021-11-06 17:44:00
【问题描述】:

我编写了一个小的 jquery 代码,它通过在向下滚动时更改不透明度来淡出叠加层。我认为一切正常,但不幸的是,在一些明显较旧的 PC 上,淡入淡出效果不流畅且卡顿。但是在我的电脑上一切都很完美。

这是我的脚本:

$(window).on('scroll', function() {
    var scrollTop = $(this).scrollTop();

    if($('.overlay').is(':visible') || (scrollTop < lastScrollTop)){
        if ($(this).scrollTop() < 150) {
            $('.overlay').show();
            $('.overlay').css('opacity', (150 - $(this).scrollTop()) / 150);
            $('.container-gesamt').css('padding-top', $(this).scrollTop());
        }else{
            $('.overlay').hide();
        }
    }
    lastScrollTop = scrollTop;
});

在我看来,这一定是旧硬件的问题,或者您怎么看?
如果是这样,您知道是否有办法让旧硬件上的效果更流畅?

【问题讨论】:

  • @DarkBee 感谢您在我的文字中的更正!

标签: jquery opacity fadeout


【解决方案1】:

一些小的性能改进可能是

const $overlay = $('.overlay');
const $window = $(window);
const $container = $('.container-gesamt');
const overlayIsVisible = $overlay.is(':visible');

$window.on('scroll', function() {
  const scrollTop = $window.scrollTop();

  if (overlayIsVisible || (scrollTop < lastScrollTop)) {
    if (scrollTop < 150) {
      if (!overlayIsVisible) {
        $overlay.show();
        overlayIsVisible = true;
      }
      $overlay.css('opacity', (150 - scrollTop) / 150);
      $container.css('padding-top', scrollTop);
    } else {
      if (overlayIsVisible) {
        $overlay.hide();
        overlayIsVisible = false;
      }
    }
  }
  lastScrollTop = scrollTop;
});

【讨论】:

  • 感谢您的改进。我会检查这是否有影响。
猜你喜欢
  • 2014-12-06
  • 2018-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多