我有一个DIV,我想把一个模式作为背景。这种模式是灰色的。所以为了让它更好一点,我想把一个透明的浅色“层”放在上面。以下是我尝试但不起作用的内容。有没有办法将彩色图层放在背景图像上?
这是我的CSS:
background: url('../img/bg/diagonalnoise.png');
background-color: rgba(248, 247, 216, 0.7);
答案 0 :(得分:262)
我知道这是一个非常古老的主题,但它出现在Google的顶部,所以这是另一个选择。
这是一个纯CSS,并不需要任何额外的HTML。
box-shadow: inset 0 0 0 1000px rgba(0,0,0,.2);
盒子阴影功能的使用数量惊人。
答案 1 :(得分:179)
这是:
.background {
background:url('../img/bg/diagonalnoise.png');
position: relative;
}
.layer {
background-color: rgba(248, 247, 216, 0.7);
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
HTML for this:
<div class="background">
<div class="layer">
</div>
</div>
当然,如果里面没有其他元素,你需要为.background
类定义宽度和高度
答案 2 :(得分:97)
来自CSS-Tricks ......有一个步骤可以做到这一点,没有z-indexing和添加伪元素 - 需要线性渐变,我认为这意味着你需要CSS3支持
.tinted-image {
background-image:
/* top, transparent red */
linear-gradient(
rgba(255, 0, 0, 0.45),
rgba(255, 0, 0, 0.45)
),
/* your image */
url(image.jpg);
}
答案 3 :(得分:39)
您还可以使用线性渐变和图像: http://codepen.io/anon/pen/RPweox
.background{
background: linear-gradient(rgba(0,0,0,.5), rgba(0,0,0,.5)),
url('http://www.imageurl.com');
}
这是因为线性渐变功能会创建一个添加到背景堆栈的Image。 https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient
答案 4 :(得分:23)
然后你需要一个带有bg图像的包装元素,其中包含带有bg颜色的content元素:
<div id="Wrapper">
<div id="Content">
<!-- content here -->
</div>
</div>
和css:
#Wrapper{
background:url(../img/bg/diagonalnoise.png);
width:300px;
height:300px;
}
#Content{
background-color:rgba(248,247,216,0.7);
width:100%;
height:100%;
}
答案 5 :(得分:20)
试试这个。适合我。
.background {
background-image: url(images/images.jpg);
display: block;
position: relative;
}
.background::after {
content: "";
background: rgba(45, 88, 35, 0.7);
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 1;
}
.background > * {
z-index: 10;
}
答案 6 :(得分:12)
我已将此作为一种方法,既可以将颜色色调和渐变应用于图像,也可以在无法控制图像颜色配置文件时使动态叠加文本更易于设置。你不必担心z-index。
<强> HTML 强>
<div class="background-image"></div>
<强> SASS 强>
.background-image {
background: url('../img/bg/diagonalnoise.png') repeat;
&:before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(248, 247, 216, 0.7);
}
}
<强> CSS 强>
.background-image {
background: url('../img/bg/diagonalnoise.png') repeat;
}
.background-image:before {
content: '';
position: absolute;
top: 0;
bottom: 0;
right: 0;
left: 0;
background: rgba(248, 247, 216, 0.7);
}
希望有所帮助
答案 7 :(得分:5)
请参阅https://stackoverflow.com/a/18471979/193494的答案,全面了解可能的解决方案:
答案 8 :(得分:3)
为什么这么复杂?你的解决方案几乎是正确的,除了它更容易使图案透明,背景颜色坚固。 PNG可以包含透明胶片。因此,通过将图层设置为70%并重新保存图像,使用photoshop使图案变得透明。那你只需要一个选择器。跨浏览器工作。
CSS:
.background {
background: url('../img/bg/diagonalnoise.png');/* transparent png image*/
background-color: rgb(248, 247, 216);
}
HTML:
<div class="background">
...
</div>
答案 9 :(得分:2)
您可以使用半透明像素,即使在base64中也可以生成例如here 以下是白色50%的示例:
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8Xw8AAoMBgDTD2qgAAAAASUVORK5CYII=),
url(../img/leftpanel/intro1.png);
background-size: cover, cover;
无需上传
没有额外的HTML
我认为加载应该比盒阴影或线性渐变
答案 10 :(得分:1)
我只是在目标背景div上使用了 background-image css属性。
请注意,背景图片仅接受渐变颜色功能。
因此,我使用线性渐变两次添加了相同的所需叠加颜色(使用上一个rgba值来控制颜色不透明度)。
还找到了以下两个有用的资源:
HTML
<div class="header_div">
</div>
<div class="header_text">
<h1>Header Text</h1>
</div>
CSS
.header_div {
position: relative;
text-align: cover;
min-height: 90vh;
margin-top: 5vh;
background-position: center;
background-repeat: no-repeat;
background-size: cover;
width: 100vw;
background-image: linear-gradient(rgba(38, 32, 96, 0.2), rgba(38, 32, 96, 0.4)), url("images\\header img2.jpg");
filter: blur(2px);
}
.header_text {
position: absolute;
top: 50%;
right: 50%;
transform: translate(50%, -50%);
}
答案 11 :(得分:0)
这是只有CSS的更简单的技巧。
<div class="background"> </div>
<style>
.background {
position:relative;
height:50px;
background-color: rgba(248, 247, 216, 0.7);
background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAAJElEQVQYV2NctWrVfwYkEBYWxojMZ6SDAmT7QGx0K1EcRBsFAADeG/3M/HteAAAAAElFTkSuQmCC);
}
.background:after {
content:" ";
background-color:inherit;
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
</style>
答案 12 :(得分:0)
另一种带有SVG的内嵌重叠式图片(请注意:如果您在svg代码内使用#
,则必须对此进行urlencode!):
background: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1 1"><path fill="rgba(255, 255, 255, 0.4)" d="M0 0h1v1H0z"/></svg>')
no-repeat center center/cover,
url('overlayed-image.jpg') no-repeat center center/cover;
答案 13 :(得分:0)
您还可以为覆盖颜色添加不透明度。
代替做
background: url('../img/bg/diagonalnoise.png');
background-color: rgba(248, 247, 216, 0.7);
您可以这样做:
background: url('../img/bg/diagonalnoise.png');
然后为不透明度颜色创建新样式:
.colorStyle{
background-color: rgba(248, 247, 216, 0.7);
opacity: 0.8;
}
将不透明度更改为低于1的任意数字。然后使该颜色样式与图像的大小相同。应该可以。
答案 14 :(得分:0)
isPoisoned
#img-div{
height: 100vh;
background-image: url("https://images.pexels.com/photos/46160/field-clouds-sky-earth-46160.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=750&w=1260");
background-position: center;
background-size: cover;
background-repeat: no-repeat;
position: relative;
}
#overlay-div{
background-color: rgba(0, 0, 0, 0.5);
height: 100vh;
position: relative;
}