代码之家  ›  专栏  ›  技术社区  ›  Evert

在一定高度后停止线性梯度

  •  0
  • Evert  · 技术社区  · 2 年前

    我正在尝试使用CSS为背景添加渐变。我希望这个梯度不是“固定的”,而是随页面滚动。对于非常高的页面,我只希望渐变结束。

    这是我的CSS:

    body {
      min-height: 100%;
      background-color: #F00;
      background-repeat: no-repeat;
      background: linear-gradient(
        180deg,
        #F00 0px,
        #0F0,
        #00F,
        #F00 3000px
      )
    }
    

    问题是,当我向下滚动时,在页面折叠后,梯度会重新开始。在我1200像素高的屏幕上,它从不变成蓝色。

    我的目标是让渐变渲染一次,如果页面大于渐变(比如3000px),它就会 #F00 永远没有重复也没有效果。

    Codepen for reference .

    1 回复  |  直到 2 年前
        1
  •  1
  •   abney317    2 年前

    您可以分别设置背景图像和背景颜色。

    document.addEventListener('DOMContentLoaded', () => {
      const p = document.getElementsByTagName('p')[0];
    
      console.log(p)
      for (let i = 0; i < 1000; i++) {
        document.body.appendChild(p.cloneNode(true));
      }
    
    });
    body {
      min-height: 100%;
      background-color: #F00;
      background-repeat: no-repeat;
      background-image: linear-gradient(180deg, #F00 0px, #0F0, #00F, #F00 3000px);
      background-size: 100% 3000px;
    }
    <p>Long line test</p>