html - 滚动闪烁问题 - 使用带有滚动捕捉类型的 cdk-virtual-scroll

标签 html css angular-cdk angular-cdk-virtual-scroll scroll-snap-type

我正在使用cdk-virtual-scroll .

它在不使用 css 属性 scroll-snap-type 的情况下工作正常。

当我使用scroll-snap-type时,它会闪烁几秒钟。我附上了代码示例 https://stackblitz.com/edit/angular-gchlgl?file=src%2Fstyles.scss,src%2Fapp%2Fcdk-virtual-scroll-data-source-example.css,src%2Fapp%2Fcdk-virtual-scroll-data-source-example.html

有什么帮助吗?谢谢。

最佳答案

如果您使用cdk-virtual-scroll,您应该定义容器和元素的确切像素大小。因为 itemSize 属性定义了元素的大小。因此,在您的代码中,元素的大小相同,但采用响应式大小(不使用像素固定),但您将 itemSize 定义为 740px。我认为这会导致 cdk-virtual-scroll 崩溃,以提高网站的性能,同时进行渲染大量元素的计算。

我已更新您的代码并添加属性 itemSizeminBufferPxmaxBufferPx:

查看演示:StackBlitz

HTML
<cdk-virtual-scroll-viewport
  itemSize="500"
  class="example-viewport"
  minBufferPx="1000"
  maxBufferPx="5000"
>
  <div *cdkVirtualFor="let item of ds" class="example-item">
    <div class="info">{{item}}</div>
    <img
      src="https://images.pexels.com/photos/7913028/pexels-photo-7913028.jpeg?auto=compress&cs=tinysrgb&w=1600&lazy=load"
      alt="Girl in a jacket"
    />
  </div>
</cdk-virtual-scroll-viewport>

并将一些响应式 CSS 属性更新为固定大小:

CSS
.example-viewport {
  overflow-y: scroll;
  scroll-snap-type: y mandatory;
  width: 100%;
  height: 500px; /* updated from 100vh */
}

.example-item {
  height: 500px; /* updated from 100vh */
  scroll-snap-align: start;
  margin: 0 !important;
  padding: 0 10px !important;
  position: relative;
}

.info {
  position: absolute;
  top: 10px;
  left: 10px;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  background-color: #0000008a;
  height: 25px;
  border-radius: 50px;
  padding: 0 10px;
  width: -webkit-fit-content;
  width: -moz-fit-content;
  width: fit-content;
  margin: 0 0 0 12px;
}

img {
  height: 500px; /* updated from 100vh */
  -o-object-fit: cover;
  object-fit: cover;
  -o-object-position: center center;
  object-position: center center;
}

关于html - 滚动闪烁问题 - 使用带有滚动捕捉类型的 cdk-virtual-scroll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72770274/

相关文章:

javascript - 如何使用 Handlebars 数据填充隐藏的 div?

html - 是否可以设置 iFrame 的样式

html - 如何让背景颜色缩放到窗口大小?

jquery - 动态页面导航元素对齐

在 Windows 上使用 url() 加载图像的 CSS 会导致路径困惑

css - Angular cdk拖放: keep element style after drop into other container

jquery stop() 导致悬停效果停止

javascript - 为什么 Owl Carousel 一次显示3张图片

angular - @angular/cdk/overlay 全局和居中位置不起作用

带有表格主体/行扭曲宽度的 Angular CDK 拖/放列表(无 Material )