Reputation: 57206
How can I have a gradient layer over a cover image?
For instance:
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>
I want this gradient over that image:
background-image: linear-gradient(to bottom right, #002f4b, #dc4225);
Is it possible?
Upvotes: 5
Views: 10468
Reputation: 335
You could put an overlay on the :before or :after elements
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>
Upvotes: 4
Reputation:
Note: You can tweak with the opacity
to change the strength of gradient.
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;
}
<header>
<div id="gradient"></div>
<h1>Header Content</h1>
</header>
<section>
<h1>Section Content</h1>
</section>
Upvotes: 1
Reputation: 15786
Use rgba
with transparency and double background-image
.
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;
}
<header>
<h1>Header Content</h1>
</header>
<section>
<h1>Section Content</h1>
</section>
Upvotes: 7
Reputation: 2267
You can define multiple backgrounds and then set background-blend-mode
to multiply
. Something like this
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>
Upvotes: 7