使用 CSS 覆盖透明 div 中的不透明文本

发布于 2024-08-23 11:34:23 字数 248 浏览 4 评论 0 原文

我试图使透明 div 内的文本没有不透明度,也就是完全黑色:

<div style="opacity:0.6;background:#3cc;">
    <p style="background:#000;opacity:1">This text should be all black</p>
</div>

这可能仅与 CSS 相关吗?

提前致谢

I am trying to make text inside a transparent div have no opacity, aka be completely black:

<div style="opacity:0.6;background:#3cc;">
    <p style="background:#000;opacity:1">This text should be all black</p>
</div>

Is this possible to do with only CSS?

Thanks in advance

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

盗梦空间 2024-08-30 11:34:24

最简单的方法是使用 opacity/alpha 设置父 div 的背景样式:

div  {
    background: #fff; /* for browsers that don't understand the following rgba rule */
    background-color: rgba(255,255,255,0.5); /* rgb, white, with alpha at 0.5 */
}

但是,这与 IE 不兼容。

对于 IE >= 7 兼容性,您可以使用:

div  {
    background-image: url('path/to/partially_transparent.png');
    background-position: 0 0;
    background-repeat: repeat;
}

我记得 IE <= 7 7 有一个专有的过滤器选项,但恐怕我不记得它是如何工作的。所以我省略了任何描述/展示它的尝试。如果我能找到有用的参考,我会在稍后添加它。

正如 easwee 所指出的,不透明度是由包含的元素继承的,这就是为什么你不能覆盖它,也是为什么我更喜欢使用 background-color/background-image 方法。

The easiest way is to style the background of the parent div with opacity/alpha:

div  {
    background: #fff; /* for browsers that don't understand the following rgba rule */
    background-color: rgba(255,255,255,0.5); /* rgb, white, with alpha at 0.5 */
}

This is not, however, compatible with IE.

For IE >= 7 compatibility, you could use:

div  {
    background-image: url('path/to/partially_transparent.png');
    background-position: 0 0;
    background-repeat: repeat;
}

I recall that IE < 7 has a proprietary filter option, but I'm afraid I can't recall how it works. So I've omitted any attempt to describe/show it. If I can find a useful reference though I'll add it in later.

As noted by easwee the opacity is inherited by contained elements, which is why you can't override it, and is why I prefer to use the background-color/background-image approach.

为你拒绝所有暧昧 2024-08-30 11:34:24

子元素继承不透明度。您可以做的是将

放置在不透明 div 外部,并设置负边距以将其移动到其上方。

我经常遇到这个问题,通常都是这样解决的。仅当您有动态内容并且 div 必须扩展时才会出现问题。

The child elements inherit the opacity. What you could do is to position the <p> outside the opaque div and set a negative margin to move it over it.

I came across this problem often and usually solved it like this. Problem is only when you have dynamic content and the div has to expand.

世界如花海般美丽 2024-08-30 11:34:24

背景是否由纯色组成?如果是这样,您还可以使用 RGBa 为 div 选择不被其子级继承的透明背景颜色。阅读 RGBa 浏览器支持了解更多信息、IE 和 另一个解决方案

如果 div 的背景不是纯色,您可以使用透明 PNG 作为背景。请记住在 IE6(和 5.5)中使用 AlphaImageLoader。

Does the background consist of a solid colour? If so, you could also use RGBa to select a transparent background colour for the div that isn't inherited by its the children. Read RGBa Browser Support for more information, a workaround for IE and another solution.

If the background of the div isn't solid, you can use a transparent PNG as background. Remember to use AlphaImageLoader in IE6 (and 5.5).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文