【问题标题】:How to avoid inheriting opacity property in CSS?如何避免在 CSS 中继承 opacity 属性?
【发布时间】:2016-08-20 18:12:55
【问题描述】:

我有一个 div 元素,我在 CSS 文件中设置了 opacity: 0.7;,因为我希望它里面的文本是不透明的。我在这个div 中显示了一些图像,但这些图像出现时带有继承的 opacity 属性。结果是不透明的图像。

是否可以为图像赋予 CSS 属性以不继承包含它们的 div 的不透明度?如果不是,我怎样才能避免图像不透明?

谢谢。

【问题讨论】:

  • 你想通过设置opacity来达到什么目的?可以用background-colorrgba完成吗?
  • CSS Opacity Property的可能重复
  • 我想让 div 中的文本不透明。没有。不能重复,抱歉。
  • 不透明的意思是“不透明或半透明”。我认为您的意思是您希望文本是半透明的。使用color: rgba(0,0,0,0.7);

标签: css opacity


【解决方案1】:

如果您使用opacity 来允许文本 具有部分透明度,那么只需设置元素的color

#elemId {
    color: rgba(0,0,0,0.7);
}

这可以让您避免调整opacity 属性,并且应该在所有支持opacity 属性的浏览器中也可以工作。

【讨论】:

  • 遗憾的是这不起作用。如果我删除 opacity: 0.7; 行并将 color: rgba(0, 0, 0, 0.7); 文本变为黑色,并且它不是半透明/不透明的,因为我想要它。我正在运行最新版本的 Chrome,所以我认为这不是浏览器问题...
  • 我不知道为什么,但我测试过,文本是不透明的,但没有我想要的那么多。我将您的建议修改为:color: rgba(0,0,0,0.55);,它似乎有效。我不知道为什么,但通过这种方式,我可以实现与opacity: 0.7 类似的东西。非常感谢!
【解决方案2】:

唯一的方法是定位。这是一篇来自 CSS Tricks 的精彩文章:http://css-tricks.com/non-transparent-elements-inside-transparent-elements/

使用position: relative; 和一个最高值使元素相互叠加。

如果您只是想让背景透明,那么您可以在背景中使用 rgba() 值。

编辑:

这是一个疯狂的想法。您可以使用 PHP GD 来呈现带有灰色背景(透明)的图像,并带有您希望在正确位置显示的白色文本。然后使用mask-box-imagemask-image CSS 属性并将其设置为渲染图像。

如果您的内容当然不是动态的,那么您可以在 Photoshop/任何程序中制作图像。

从浏览器到 GD 渲染的抗锯齿不会相同,但如果您不想使用定位,则这是最好的 hack。

【讨论】:

  • 我不希望以这种方式修改 HTML。我正在寻找 CSS 解决方案,但谢谢。
  • @Masar 添加了涉及 CSS 和一些 PHP 的解决方案
  • 谢谢,这是一个有趣的解决方案,我喜欢它,因为它很疯狂,但我会选择color: 解决方案!无论如何 +1 =)
【解决方案3】:

在你的 css 中添加以下代码

z-index:111

它有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 2021-04-26
    • 2021-07-23
    相关资源
    最近更新 更多