背景图像上的半透明颜色层?
我有一个 DIV,我想放置一个图案作为背景。这个图案是灰色的。所以为了让它更漂亮一点,我想在上面放一个浅色透明的颜色“层”。以下是我尝试过但没有成功的方法。有没有办法将彩色图层放在背景图像上?
这是我的 CSS:
background: url('../img/bg/diagonalnoise.png');
background-color: rgba(248, 247, 216, 0.7);
I have a DIV and I would like to put a pattern as background. This pattern is gray. So to make it a little more nice, I would like to put a light transparent color "layer" over. Below is what I tried but which did not work. Is there a way to put the colored layer over the background image?
Here's my CSS:
background: url('../img/bg/diagonalnoise.png');
background-color: rgba(248, 247, 216, 0.7);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(20)
您还可以为叠加颜色添加不透明度。
您可以这样做
:
然后为不透明度颜色创建一个新样式:
将不透明度更改为您想要的低于 1 的任何数字。然后使该颜色样式与图像大小相同。它应该有效。
You can also add opacity to your overlay color.
Instead of doing
You can do:
Then create a new style for the opacity color:
Change the opacity to whatever number you want below 1. Then you make this color style the same size as your image. It should work.
在伪类之前使用并使用不透明度
Use before pseudo-class and use opacity
天哪,这里有一些复杂的答案。早在 2017 年,这是可以理解的,但现在你可以把...
在 2024 年 background-blend-mode 适用于一切除了 IE 和可怕的 Opera-Mini
Gosh there are some complicated answers here. Back in 2017 that was understandable, but nowadays you can just put...
In 2024 background-blend-mode works for everything except IE and the horrific Opera-Mini
我知道这是一个非常古老的线程,但它显示在 Google 的顶部,所以这里有另一个选择。
这是纯 CSS,不需要任何额外的 HTML。
盒子阴影功能的用途数量惊人。
I know this is a really old thread, but it shows up at the top in Google, so here's another option.
This one is pure CSS, and doesn't require any extra HTML.
There are a surprising number of uses for the box-shadow feature.
这是:
HTML:
当然,如果其中没有其他元素,您需要为
.background
类定义宽度和高度Here it is:
HTML for this:
Of course you need to define a width and height to the
.background
class, if there are no other elements inside of it来自 CSS-Tricks...有一种一步法可以做到这一点,无需 z 索引和添加伪元素 - 需要线性渐变,我认为这意味着你需要 CSS3 支持
From CSS-Tricks... there is a one step way to do this without z-indexing and adding pseudo elements-- requires linear gradient which I think means you need CSS3 support
您还可以使用线性渐变和图像:
http://codepen.io/anon/pen/RPweox
这是因为线性渐变函数创建了一个添加的图像到后台堆栈。 https://developer.mozilla.org/en-US/docs/Web/CSS/线性渐变
You can also use a linear gradient and an image:
http://codepen.io/anon/pen/RPweox
This is because the linear gradient function creates an Image which is added to the background stack. https://developer.mozilla.org/en-US/docs/Web/CSS/linear-gradient
试试这个。对我有用。
Try this. Works for me.
然后,您需要一个带有 bg 图像的包装元素,其中包含带有 bg color:
和 css: 的内容元素:
You need then a wrapping element with the bg image and in it the content element with the bg color:
and the css:
我使用此方法对图像应用色调和渐变,以便在无法控制图像颜色配置文件时更轻松地设置动态叠加文本的样式以提高易读性。您不必担心 z-index。
HTML
SASS
CSS
希望有帮助
I've used this as a way to both apply colour tints as well as gradients to images to make dynamic overlaying text easier to style for legibility when you can't control image colour profiles. You don't have to worry about z-index.
HTML
SASS
CSS
Hope it helps
请参阅我的答案 https://stackoverflow.com/a/18471979/193494 以全面了解可能的解决方案:
See my answer at https://stackoverflow.com/a/18471979/193494 for a comprehensive overview of possible solutions:
为什么这么复杂?您的解决方案几乎是正确的,只是它是一种更容易使图案透明且背景色纯色的方法。 PNG 可以包含透明胶片。因此,使用 Photoshop 将图层设置为 70% 并重新保存图像,使图案透明。那么你只需要一个选择器。跨浏览器工作。
CSS:
HTML:
这是基本的。下面是我从
background
切换到background-image
的用法示例,但两个属性的工作原理相同。请稍等!加载外部模式需要一些时间。
这个网站似乎相当慢......
Why so complicated? Your solution was almost right except it's a way easier to make the pattern transparent and the background color solid. PNG can contain transparencies. So use photoshop to make the pattern transparent by setting the layer to 70% and resaving your image. Then you only need one selector. Works cross browser.
CSS:
HTML:
This are the basic. A usage example follows where I switched from
background
tobackground-image
but both properties works the same.PLEASE WAIT A MINUTE! IT TAKES SOME TIME TO LOAD THE EXTERNAL PATTERNS.
This website seems to be rather slow...
来自我的回答 如何添加颜色叠加到背景图像?标记为该问题的重复其中不需要伪元素,也不需要额外元素。
就在这里,几年后,这个重复项仍然缺少
background-blend-mode
属性,现在已广泛实施(它位于多重背景和插图阴影示例)。所以这里是关于我的答案,答案为您提供了 3 种简单的方法,无需额外的标记或伪代码:
首先,我当时看到了两个简单的选项(2016 年,这两个选项也在此处的答案内,所以没有什么真正的选择)关于这些的新添加,...介意第三个(如果您已经阅读了有关 bg 和 box-shadow 的其他答案):
在旧图像上具有半透明单一渐变的多个背景<一href="http://codepen.io/gc-nomade/pen/wouBe" rel="noreferrer">codepen 我的,有几个例子。
巨大的嵌入阴影,其作用与渐变叠加大致相同
其中给出的示例:
渐变选项:
阴影选项:
我的一个旧的 codepen ,其中有一些示例
现在,这里缺少第三个选项< /strong> :
当然还有其他有价值的方法可以做到这一点,具体取决于您的项目、使用的 CSS 库以及您现有的选项。几乎从来没有单一的方式/方法,而是不同的方式。重要的是找到最适合您的需求且最有效的选项,您理解/掌握的方法,浏览器的特殊性,已经使用的选项留下的选项如果您对或已经拥有可以/完成这项工作的 javascript 或服务器端函数有信心,请使用它(如果它已经存在)。轮子就是轮子。
from an answer of mine at How to add a color overlay to a background image? marked as a duplicate of that question where no pseudo element ,nor extra element is required.
That duplicate, right here and after a few years, is still missing the
background-blend-mode
property , widely implemented nowdays (It lays below the multiple background and inset shadow examples).So here is about my answer out there, answer that gives you 3 easy ways without extra markup nor pseudos :
At first , i saw two easy options at that time (2016, those two option are also within answers standing here too, so nothing really new to add about these, ... mind the third one if you already read other answers about bg and box-shadow):
multiple background with a translucent single gradient over image from an an old codepen of mine with few examples.
huge inset shadow which does about the same thing as a gradient overlay
Examples given out there where:
gradient option:
shadow option:
an old codepen of mine with few examples
Now, that third option missing here :
There is of course and also other valuable ways to do this, depending on your project, CSS libraries used and the few option left over from what you already have. There is almost never a single way/method , but different ways .What matters is to find the option that suits your needs the best and efficiently, the method that you understand/master , the browser specifity, option left over from what already being used if you feel confident with or already have a javascript or a server side function that already can/do that job, use it if its already there. a wheel is a wheel.
您可以使用半透明像素,您可以在此处生成该像素,即使是在 base64 中
这是一个白色 50% 的示例:
没有上传
没有额外的 html
我猜加载应该比 box-shadow 或线性渐变更快
You can use a semitransparent pixel, which you can generate for example here, even in base64
Here is an example with white 50%:
without uploading
without extra html
i guess the loading should be quicker than box-shadow or linear gradient
这是一个更简单的技巧,仅使用 css。
Here is a more simple trick with only css.
另一种将 SVG 作为内联覆盖图像(注意:如果您在 svg 代码中使用
#
,则必须对其进行 urlencode!):Another one with an SVG as inline overlay-image (note: if you use
#
inside the svg-code you have to urlencode that!):我只是使用 background-image css 属性目标背景div。
注意背景图像仅接受渐变颜色函数。
因此,我使用线性渐变添加相同的所需叠加颜色两次(使用最后的 rgba 值来控制颜色不透明度)。
另外,还找到了这两个有用的资源:
HTML
CSS
I simply used background-image css property on the target background div.
Note background-image only accepts gradient color functions.
So I used linear-gradient adding the same desired overlay color twice (use last rgba value to control color opacity).
Also, found these two useful resources to:
HTML
CSS
实际上,我以不同的方式使用了
:before
,我只使用了一个 HTML 元素并仅使用了一个 CSS 类名并使用了伪元素技巧:
Actually, I used
:before
in a different way, I just used one HTML element<div>
and using just one CSS class name and using pseudo-element trick: