Buggysnap-scrollingwhileDOMchanges
创始人
2024-12-24 16:00:56
0

问题描述:

在页面上有一个可滚动的HTML元素,并且在滚动过程中,DOM内容可能会更新。当用户快速滚动时,元素的滚动可能会不流畅,并出现卡顿现象。

原因:

这个问题在DOM更改时会发生,因为元素滚动依赖于页面布局的计算。而页面布局的计算会在DOM发生更改时进行。这样,当DOM更改时,滚动计算可能会被破坏,导致页面滚动不流畅。

为了解决这个问题,我们可以使用自定义滚动方案,而不是使用默认的滚动行为。这种自定义滚动方案可以运行在requestAnimationFrame的回调中,该回调会在主线程的下一帧中调用。这样,滚动计算将在DOM更改完成后进行,避免了页面滚动不流畅的问题。

具体实现方法可参考下面的示例代码:

// 1. 选择需要滚动的元素
const scroller = document.querySelector('.scroller');

// 2. 初始化一些变量
let startY; // 记录开始滚动时的Y坐标
let lastY; // 记录上一帧结束时的Y坐标
let scrollY = 0; // 记录真正的滚动位置

// 3. 监听触摸事件
scroller.addEventListener('touchstart', e => {
  startY = e.touches[0].pageY;
  lastY = startY;
});

scroller.addEventListener('touchmove', e => {
  const y = e.touches[0].pageY;
  const diff = y - startY;
  scrollY -= diff; // 计算滚动位置
  startY = y;
});

// 4. 在requestAnimationFrame回调中更新滚动位置
function update() {

相关内容

热门资讯

此事迅速冲上热搜!wepoke... 此事迅速冲上热搜!wepoker辅助是真的假的,德扑之星怎么开辅助,总是真的是有挂(有挂解密)1、德...
黑科技辅助挂!wepoker轻... 您好,德普之星有透视辅助吗这款游戏可以开挂的,确实是有挂的,需要了解加去威信【136704302】很...
昨日!wpk透视辅助方法,德普... 昨日!wpk透视辅助方法,德普之星怎么开辅助,本来真的是有挂(有挂秘诀)1、玩家可以在德普之星怎么开...
针对!哈糖大菠萝助手,德扑之星... 针对!哈糖大菠萝助手,德扑之星怎么开辅助,总是是有挂(有挂分析)1)德扑之星怎么开辅助免费钻石:进一...
第三方技巧!hhpoker有没... 第三方技巧!hhpoker有没有外挂,智星菠萝辅助,真是存在有挂(有挂分析)1、智星菠萝辅助透视辅助...
为切实保障!wejoker辅助... 为切实保障!wejoker辅助器要钱玩吗,德普之星怎么开辅助,本来是有挂(有挂技术)1、让任何用户在...
受玩家影响!淘宝买wepoke... 受玩家影响!淘宝买wepoker透视有用吗,德普之星私人局辅助免费,切实确实有挂(有挂神器)1、让任...
黑科技插件!wepoker免费... 黑科技插件!wepoker免费辅助器,德普之星透视辅助插件,其实确实有挂(存在有挂)德普之星透视辅助...
插件辅助挂!约局吧德州可以透视... 插件辅助挂!约局吧德州可以透视吗,红龙poker辅助,果然真的是有挂(有挂教程)1、进入到红龙pok...
此事引发广泛关注!wepoke... 此事引发广泛关注!wepoker辅助分析器,如何下载德普之星辅助软件,切实真的是有挂(有挂头条)1、...