【发布时间】:2015-10-20 10:17:49
【问题描述】:
我在一个特别大的元素上使用 linear-gradient 时遇到了问题。
在较小的元素上,可以通过以下方式实现硬边:
background-image: linear-gradient(180deg, #000, #000 33%, #0f0 0);
但是当元素的高度非常大时,边缘是软的。您可以在下图和下面的示例中看到,当元素非常大并且应用相同的渐变时,第二个版本具有柔和的边缘。
我尝试了许多线性渐变的变体,但无法在大版本上实现硬边。有没有办法在大元素上应用带有硬边的渐变?
HTML 示例:
div {
height: 5000px;
background-repeat: no-repeat;
margin-bottom: 1em;
background-image: linear-gradient(180deg, #000, #000 20px, #0f0 0);
}
div:first-child {
height: 100px;
}
<div></div>
<div></div>
编辑
此渐变的目标是与另一个背景图像一起使用,因此我更喜欢与以下兼容的技术(不要覆盖图像):
div {
height: 5000px;
background-repeat: no-repeat;
margin-bottom: 1em;
background-image: url(http://placehold.it/600x20), linear-gradient(180deg, #000, #000 20px, #0f0 0);
}
<div></div>
编辑 2
感谢@Tarun,这似乎与浏览器有关。上图是 Chromium 45 的屏幕截图。Safari 和 Firefox 似乎可以正确呈现。
编辑 3
关于这个问题,铬有一个开放的bug report。
【问题讨论】:
-
正如您在 chromium 错误中提到的,我之前已经问过这个问题 - stackoverflow.com/questions/33151371/…...顺便说一句,移动 chrome 上也会发生这种情况。
标签: css gradient linear-gradients