【问题标题】:Can I position and size a linear-gradient within the background?我可以在背景中定位和调整线性渐变的大小吗?
【发布时间】:2021-06-12 09:29:28
【问题描述】:

我今天一直在与分层的 CSS 背景作斗争。我正在尝试三层(从前景到背景):

  • 一张图片
  • 黑条(模拟linear-gradient
  • 渐变叠加

这是我的元素 CSS:

  width: 100%;
  height: 100%;
  background-image: linear-gradient(to right, #00000000 0%, #00000000 15%, #000000ff calc(100% - 40rem)), linear-gradient(to right, #000000ff 0%, #000000ff 100%),  url("../assets/images/bg-1080-1920.png");
  background-size: cover, 40rem 4rem, auto;
  background-position: top left, 0rem 3rem, top left;

由于某种原因,即使我设置了background-positionbackground-size 属性,我尝试插入的黑条也会占据整个屏幕。看了MDN,我相信我已经遵守了所有的规则。它确实表明它可能是一个浏览器问题,但是在属性名称中添加 -webkit 也没有帮助(我在编码时使用的是 Chromium 浏览器)。

MDN 没有在background-position 页面上提及渐变,即使我删除了该属性,它仍然会占据屏幕。我还尝试在px 中输入尺寸,以查看使用rem 单位是否存在问题。两者都无济于事。

属性值是否有明显错误?还是我疯了。

【问题讨论】:

  • 不确定您要在这里归档什么,请提供最小复制。
  • 我也找不到说明线性梯度是否可以调整大小的定义,而实验似乎证明它不能。虽然我可以看到针对您的特定情况的解决方法,但您能否说出您希望第一个线性渐变做什么,因为它具有 8 位颜色代码并且似乎会覆盖其他所有内容?还是您希望它保持原样但不透明
  • @AHaworth 诀窍是background-repeat

标签: css background-image linear-gradients


【解决方案1】:

永远不要忘记background-repeat

html {
  min-height: 100%;
  background-image: 
    linear-gradient(to right, #00000000 0%, #00000000 15%, #000000ff calc(100% - 40rem)), 
    linear-gradient(to right, #000000ff 0%, #000000ff 100%), 
    url("https://picsum.photos/id/1069/800/800");
  background-size: cover, 40rem 4rem, auto;
  background-position: top left, 0rem 3rem, top left;
  background-repeat:no-repeat; /* this is important !! */
}

【讨论】:

  • 这确实应该包含在 MDN 文档中与调整线性渐变大小相关的部分中。我将提出一个拉取请求以使用此信息更新页面。谢谢!
  • @SimpleProgrammer 不是真的。您面临的问题很特殊,因为您的渐变是纯色,因此您无法注意到重复。如果它是具有两种颜色的渐变,您可以轻松看到正确的大小和重复,并且在某些情况下需要重复(这是默认行为)
  • 完全同意。但是,SO 是我最后一次来就这个问题寻求建议的地方。在此之前,与我交谈过的所有开发人员对这是否可以完成都有不同的看法。这告诉我background-repeat 属性对许多其他人来说也是一个盲点。
猜你喜欢
  • 1970-01-01
  • 2012-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-19
  • 1970-01-01
  • 2015-03-06
  • 1970-01-01
相关资源
最近更新 更多