如何在无限滚动上创建渐变背景?

How to create a gradient background on infinite scroll?

我正在尝试创建一个无限滚动页面,其中背景是根据滚动位置而变化的渐变。

我发现了这个适用于时间和日期的无限滚动代码。我想用梯度任务代替它。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
</head>

<body>

<h1>Scroll me</h1>

<script>
  function populate() {
    while(true) {
      let windowRelativeBottom = document.documentElement.getBoundingClientRect().bottom;
      if (windowRelativeBottom > document.documentElement.clientHeight + 100) break;
      document.body.insertAdjacentHTML("beforeend", `<p>Date: ${new Date()}</p>`);
    }
  }

  window.addEventListener('scroll', populate);

  populate(); // init document
</script>

</body>
</html>

真的很简单,没必要把这个复杂化。假设渐变被视为背景图像,您可以这样重复它。背景可以重复 "infinitely" 因此,我们可以将背景的垂直高度设置为我们知道会重复的高度。即定义渐变后,使用 background-size:

background-size: 100% 400vh;
background-repeat: repeat-y; /* this is set to repeat by default, but putting this in helps drive the point home */

我们的渐变将每 4 个视口高度重复一次,由于您的 JS,文档会随着高度不断增加,所以我们看到它无限重复。只需确保渐变以与开始时相同的颜色结束,否则您会看到一个切口。

如果你不想看一些闪烁的颜色,请不要打开此代码笔:https://codepen.io/joshdavenport/pen/rNNOJWM