LayoutShift - 根据页面上元素的移动来监测网页的稳定性

LayoutShift 是 Layout Instability API 的接口,可根据页面上元素的移动来监测网页的稳定性。

属性

LayoutShift.value

返回 impact fraction(影响分数)(偏移的视口的分数)乘以 distance fraction(距离分数)(以视口的分数移动的距离)的乘积。

LayoutShift.hadRecentInput

如果过去 500 毫秒内有用户输入,则返回 true

LayoutShift.lastInputTime

返回最近用户输入的时间。

LayoutShift.sources

返回 LayoutShiftAttribution 对象的数组,其中包含有关已偏移元素的信息。

方法

LayoutShift.toJSON()

将属性转换为 JSON。

实例

以下实例显示了如何捕获布局偏移并将其记录到控制台。

请注意,在此示例中,仅当用户离开选项卡时才将数据发送到服务器。

// 捕获错误,因为某些浏览器在使用新的 `type` 选项时抛出该错误。
// https://bugs.webkit.org/show_bug.cgi?id=209216
try {
  let cumulativeLayoutShiftScore = 0;

  const observer = new PerformanceObserver((list) => {
  for (const entry of list.getEntries()) {
    // 仅在没有最近用户输入的情况下计算布局偏移。
    if (!entry.hadRecentInput) {
      cumulativeLayoutShiftScore += entry.value;
    }
  }
  });

  observer.observe({type: 'layout-shift', buffered: true});

  document.addEventListener('visibilitychange', () => {
  if (document.visibilityState === 'hidden') {
    // 强制发送所有待处理的记录。
    observer.takeRecords();
    observer.disconnect();

    console.log('CLS:', cumulativeLayoutShiftScore);
  }
  });
} catch (e) {
  // 如果浏览器不支持此 API,则什么也不做。
}

规范

规范 状态 备注
Layout Instability API
LayoutShift 的定义
编者的草案 初始定义。

桌面浏览器兼容性

暂无兼容数据