关于使用背景附件的移动友好替代方案的问题:已修复,改为使用伪元素

Question about a mobile friendly alternative to using background-attachment: fixed, using pseudo element instead

我一直在分析这段代码,它是使用 background-attachment: fixed 的替代方法,但有一些我似乎无法弄清楚的问题。我试图在网上找到答案但没有成功。有人可以帮忙吗? 代码是:

body::before {
  content:”;
  position: fixed;
  top: 0;
  left: 0;
  height: 100%;
  width: 100%;
  z-index: -1;
  background: var(—color-darkblue);
  background-image: linear-gradient(rgba(58, 58, 158,0.8), rgba((136, 136, 206,   0.7)),url(#);background-size: cover;
  background-repeat: no-repeat;background-position: center;
}

问题1:固定位置,固定背景颜色(深蓝色)和url图片,滚动时不移动吗?

问题 2:哪个 属性 或属性修改背景颜色和/或背景图像?例如 top:0 和 left: 0 是否只修改背景颜色? background -size 是否仅修改 url(jpeg)?

问题3:代码中是否需要加上(will-change: transform;)

非常感谢。在过去的 3 天里,我一直在努力解决这个问题。

问题1:位置是否固定,固定背景颜色(深蓝色)和url图像,使其在滚动时不移动

是的——基本上就是固定的意思。

问题 2:哪个 属性 或属性修改背景颜色和/或背景图像?例如 top:0 和 left: 0 是否只修改背景颜色? background -size 是否仅修改 url(jpeg)?

top和left不(直接)修改背景。他们所做的是定位整个伪元素,因此,他们间接地改变了背景的位置,因为他们已经改变了包括其背景在内的整个伪元素的位置。背景大小会影响图像。

问题三:代码中是否需要加上(will-change:transform;)

我不明白为什么这是必要的,因为没有任何即将发生的事情正在被改变。是的,用户可能会滚动,但系统已经获得了保持背景(伪元素)固定所需的信息。

事实上有几种滥用 will-change 的可能性 - 它会使事情变得更糟,所以我会避免它,除非你真的看到性能问题。有关更多信息,请参阅 https://developer.mozilla.org/en-US/docs/Web/CSS/will-change 对此进行深入讨论。

这是一个片段,显示向下滚动时背景保持不变。

body {
  width: 100vw;
  --color-darkblue: darkblue;
  color: white;
}

body::before {
  content: '';
  position: fixed;
  top: 0;
  left: 0;
  height: 100vh;
  width: 100%;
  z-index: -1;
  background: var(--color-darkblue);
  background-image: linear-gradient(rgba(58, 58, 158, 0.8), rgba(136, 136, 206, 0.7)), url(https://picsum.photos/id/1015/300/300);
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center;
}
<body>
  <br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line<br>line
</body>