CSS - 覆盖图像上的渐变?

时间:2017-07-01 12:17:36

标签: html css background-image cover

如何在封面图像上设置渐变图层?

例如:



header {
  position: relative;
  height: 300px;
  background-repeat: no-repeat;
  background-position: center bottom;
  background-image: url('http://www.planwallpaper.com/static/images/Free-Wallpaper-Nature-Scenes.jpg');
  background-size: cover;
  border-bottom-left-radius: 50%;
  border-bottom-right-radius: 50%;
}

h1 {
  margin: 0;
  padding: 100px 0;
  font: 44px "Arial";
  text-align: center;
}

header h1 {
  color: white;
}

<header>
  <h1>Header Content</h1>
</header>

<section>
  <h1>Section Content</h1>
</section>
&#13;
&#13;
&#13;

我希望这个渐变覆盖该图像:

background-image: linear-gradient(to bottom right, #002f4b, #dc4225);

有可能吗?

4 个答案:

答案 0 :(得分:6)

您可以定义多个背景,然后将background-blend-mode设置为multiply。像这样的东西

header {
  position: relative;
  height: 300px;
  background-repeat: no-repeat;
  background-position: center bottom;
  background-size: cover;
  border-bottom-left-radius: 50%;
  border-bottom-right-radius: 50%;
  background-blend-mode: multiply;
  background: linear-gradient(to bottom right, #002f4b, #dc4225), url('http://www.planwallpaper.com/static/images/Free-Wallpaper-Nature-Scenes.jpg');
  background-size: cover;
}

h1 {
  margin: 0;
  padding: 100px 0;
  font: 44px "Arial";
  text-align: center;
}

header h1 {
  color: white;
}
<header>
  <h1>Header Content</h1>
</header>

<section>
  <h1>Section Content</h1>
</section>

答案 1 :(得分:6)

使用透明度rgba并加倍background-image

&#13;
&#13;
header {
  position: relative;
  height: 300px;
  background-repeat: no-repeat;
  background-position: center bottom;
  background-image: linear-gradient(to bottom right, rgba(0, 47, 75, .5), rgba(220, 66, 37, .5)), url('http://www.planwallpaper.com/static/images/Free-Wallpaper-Nature-Scenes.jpg');
  background-size: cover;
  border-bottom-left-radius: 50%;
  border-bottom-right-radius: 50%;
}
h1 {
  margin: 0;
  padding: 100px 0;
  font: 44px "Arial";
  text-align: center;
}

header h1 {
  color: white;
}
&#13;
<header>
  <h1>Header Content</h1>
</header>

<section>
  <h1>Section Content</h1>
</section>
&#13;
&#13;
&#13;

答案 2 :(得分:4)

您可以在:before或:after元素

上添加叠加层

header {
  position: relative;
  height: 300px;
  background-repeat: no-repeat;
  background-position: center bottom;
  background-image: url('http://www.planwallpaper.com/static/images/Free-Wallpaper-Nature-Scenes.jpg');
  background-size: cover;
  border-bottom-left-radius: 50%;
  border-bottom-right-radius: 50%;
}

header:before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image: linear-gradient(to bottom right,#002f4b, #dc4225);
    opacity: .6; 
    border-bottom-left-radius: 50%;
    border-bottom-right-radius: 50%;
}

h1 {
  margin: 0;
  padding: 100px 0;
  font: 44px "Arial";
  text-align: center;
}

header h1 {
  color: white;
}
<header>
  <h1>Header Content</h1>
</header>

<section>
  <h1>Section Content</h1>
</section>

答案 3 :(得分:1)

注意:您可以使用opacity调整以更改渐变的强度。

&#13;
&#13;
header {
  position: relative;
  height: 300px;
  background-repeat: no-repeat;
  background-position: center bottom;
  background-image: url('http://www.planwallpaper.com/static/images/Free-Wallpaper-Nature-Scenes.jpg');
  background-size: cover;
  border-bottom-left-radius: 50%;
  border-bottom-right-radius: 50%;
  z-index: -1;
}

h1 {
  margin: 0;
  padding: 100px 0;
  font: 44px "Arial";
  text-align: center;
}

header h1 {
  color: white;
}

div#gradient {
 position: absolute;
 top: 0;
 left: 0;
 width: 100%;
 height: 300px;
 background-image: linear-gradient(to bottom right, #002f4b, #dc422b);
 border-bottom-left-radius: 50%;
 border-bottom-right-radius: 50%;
 z-index: -1;
 opacity: 0.75;
}
&#13;
<header>
  <div id="gradient"></div>
  <h1>Header Content</h1>
</header>

<section>
  <h1>Section Content</h1>
</section>
&#13;
&#13;
&#13;