CSS 带图像叠加的背景渐变
CSS background gradient with image overlay
只是一个非常快的问题,我遇到了一些麻烦 - 即背景 css 元素的排序。
我有以下内容:
background-color: #3C3E89; /* For browsers that do not support gradients */
background: -webkit-linear-gradient(#3C3E89, #6265E4); /* For Safari 5.1 to 6.0 */
background: -o-linear-gradient(#3C3E89, #6265E4); /* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(#3C3E89, #6265E4); /* For Firefox 3.6 to 15 */
background: linear-gradient(#3C3E89, #6265E4); /* Standard syntax */
background-image: url('../images/logo.png');
background-size: cover;
出于某种原因,png - 尽管它具有透明层 - 覆盖了我希望它所在的线性渐变。
我有点扎根,想看看正确的方法是什么,尝试过,但没有成功。我想知道是否有人有一种久经考验的方法可以在渐变背景上叠加 png...
我相信每个人都会对我尖叫说这是一个重复的问题 - 但除非我遗漏了什么,否则我无法成功实施他们的建议。
更新:
我也试过以下方法:
background-image:
-webkit-linear-gradient(#3C3E89, #6265E4), /* For Safari 5.1 to 6.0 */
-o-linear-gradient(#3C3E89, #6265E4), /* For Opera 11.1 to 12.0 */
-moz-linear-gradient(#3C3E89, #6265E4), /* For Firefox 3.6 to 15 */
linear-gradient(#3C3E89, #6265E4), /* Standard HTML Syntax */
url('../images/logo.png');
还有...
background:
-webkit-linear-gradient(#3C3E89, #6265E4), /* For Safari 5.1 to 6.0 */
-o-linear-gradient(#3C3E89, #6265E4), /* For Opera 11.1 to 12.0 */
-moz-linear-gradient(#3C3E89, #6265E4), /* For Firefox 3.6 to 15 */
linear-gradient(#3C3E89, #6265E4), /* Standard HTML Syntax */
url('../images/logo.png');
您正在通过设置 background-image
覆盖背景。相反,您需要使用多个背景:
background-image: url('../images/logo.png'), linear-gradient(#3C3E89, #6265E4);
根据documentation,背景是从最近到最远绘制的。所以在你的情况下,图像应该首先绘制在渐变上。
线性渐变的行为类似于 background-image
,因为您也可以使用此语法:
.content {
background-image: linear-gradient(#3C3E89, #6265E4);
height:200px;
}
<div class="content">
</div>
这就是为什么您的 CSS 背景图像规则会覆盖它。相反,您需要像这样指定多个背景:
.content {
height: 200px;
background: linear-gradient(#3C3E89, rgba(98, 101, 228, 0.21)), url(https://lorempixel.com/200/100/);
}
<div class="content">
</div>
您应该注意订单。在我的示例中,渐变位于图像上方,因为它是 first 并且我添加了一些不透明度以便能够看到图像。如果您使用没有透明度的纯色 and/or 图像,您将只能看到 第一个 背景。
只是一个非常快的问题,我遇到了一些麻烦 - 即背景 css 元素的排序。
我有以下内容:
background-color: #3C3E89; /* For browsers that do not support gradients */
background: -webkit-linear-gradient(#3C3E89, #6265E4); /* For Safari 5.1 to 6.0 */
background: -o-linear-gradient(#3C3E89, #6265E4); /* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(#3C3E89, #6265E4); /* For Firefox 3.6 to 15 */
background: linear-gradient(#3C3E89, #6265E4); /* Standard syntax */
background-image: url('../images/logo.png');
background-size: cover;
出于某种原因,png - 尽管它具有透明层 - 覆盖了我希望它所在的线性渐变。
我有点扎根,想看看正确的方法是什么,尝试过,但没有成功。我想知道是否有人有一种久经考验的方法可以在渐变背景上叠加 png...
我相信每个人都会对我尖叫说这是一个重复的问题 - 但除非我遗漏了什么,否则我无法成功实施他们的建议。
更新:
我也试过以下方法:
background-image:
-webkit-linear-gradient(#3C3E89, #6265E4), /* For Safari 5.1 to 6.0 */
-o-linear-gradient(#3C3E89, #6265E4), /* For Opera 11.1 to 12.0 */
-moz-linear-gradient(#3C3E89, #6265E4), /* For Firefox 3.6 to 15 */
linear-gradient(#3C3E89, #6265E4), /* Standard HTML Syntax */
url('../images/logo.png');
还有...
background:
-webkit-linear-gradient(#3C3E89, #6265E4), /* For Safari 5.1 to 6.0 */
-o-linear-gradient(#3C3E89, #6265E4), /* For Opera 11.1 to 12.0 */
-moz-linear-gradient(#3C3E89, #6265E4), /* For Firefox 3.6 to 15 */
linear-gradient(#3C3E89, #6265E4), /* Standard HTML Syntax */
url('../images/logo.png');
您正在通过设置 background-image
覆盖背景。相反,您需要使用多个背景:
background-image: url('../images/logo.png'), linear-gradient(#3C3E89, #6265E4);
根据documentation,背景是从最近到最远绘制的。所以在你的情况下,图像应该首先绘制在渐变上。
线性渐变的行为类似于 background-image
,因为您也可以使用此语法:
.content {
background-image: linear-gradient(#3C3E89, #6265E4);
height:200px;
}
<div class="content">
</div>
这就是为什么您的 CSS 背景图像规则会覆盖它。相反,您需要像这样指定多个背景:
.content {
height: 200px;
background: linear-gradient(#3C3E89, rgba(98, 101, 228, 0.21)), url(https://lorempixel.com/200/100/);
}
<div class="content">
</div>
您应该注意订单。在我的示例中,渐变位于图像上方,因为它是 first 并且我添加了一些不透明度以便能够看到图像。如果您使用没有透明度的纯色 and/or 图像,您将只能看到 第一个 背景。