Css 为什么可以';t子元素用更大的值覆盖父元素的不透明度?
正如我们所知,子元素现在不能覆盖其父元素的Css 为什么可以';t子元素用更大的值覆盖父元素的不透明度?,css,opacity,Css,Opacity,正如我们所知,子元素现在不能覆盖其父元素的opacity属性。父对象的opacity属性始终生效 当子对象试图降低父对象的不透明度(使用较小的值覆盖)时,这是有意义的。但是如果孩子试图用一个更大的值覆盖它呢?难道这不应该被允许吗?为什么半透明的父对象不能有不透明的子对象?有人能分享一下为什么这样一个限制是CSS设计的一部分吗 如果有人能解释一下这其中的理论原因,我会非常感激的。我基本上是想找出为什么不能成为其中一部分(不是解决办法;因为已经讨论了很多次了)。我相信这是很多像我这样的新手都想知道的
opacity
属性。父对象的opacity
属性始终生效
当子对象试图降低父对象的不透明度(使用较小的值覆盖)时,这是有意义的。但是如果孩子试图用一个更大的值覆盖它呢?难道这不应该被允许吗?为什么半透明的父对象不能有不透明的子对象?有人能分享一下为什么这样一个限制是CSS设计的一部分吗
如果有人能解释一下这其中的理论原因,我会非常感激的。我基本上是想找出为什么不能成为其中一部分(不是解决办法;因为已经讨论了很多次了)。我相信这是很多像我这样的新手都想知道的。我从来没有把这看作是“凌驾”或“凌驾”。这是一个相对不透明的问题。如果父对象的不透明度为0.5
,则子对象也有不透明度(相对于父对象的堆叠上下文)。子对象可以在0
和1
之间有自己的不透明度值,但它始终与父对象的不透明度相对。因此,如果子级也设置了opacity:0.5
,则它将是0.25
不透明度1
的父级兄弟级的不透明度
将其视为alpha遮罩,其中不透明度只能移除。元素要么不透明,要么具有一定程度的透明度(任何东西都可以):
不透明度可以看作是一种后处理操作。从概念上讲,将元素(包括其子体)渲染到RGBA屏幕外图像后,“不透明度”设置指定如何将屏幕外渲染混合到当前合成渲染中
后来:
如果对象是一个容器元素,那么效果就好像容器元素的内容是使用遮罩与当前背景混合的,其中遮罩的每个像素的值都是
至于为什么要这样实施,我不认为这是“让我们禁止那样做”的故意行为。也许选择这种方法是为了更简单地计算,只是后来才认识到对不同事物的实际需求(然后引入了
rgba
color
和背景色
——我可能对这里的时间线错了)有一种方法可以实现这一点:在父对象中使用半透明背景(例如背景颜色:rgba(0,0,0,0.5);,其中父元素的背景是一种rgba
颜色,它有一个alpha通道。是的,我知道。如果我在父元素和子元素中使用背景图像呢?此外,我实际上没有寻找解决方法。我想了解为什么在CSS中做出这样的设计决策。是的,那部分是清晰的。不透明度不透明度为0.5时,0.5与0.25类似。但是,我仍然感到困惑的是,为什么半透明的父对象不能有完全不透明的子对象?为什么不是设计的呢?因为子对象是父对象的一部分,它们的不透明度是固有的。这意味着如果我们指定子对象的不透明度为a,则可以在0.5不透明的父对象上有一个不透明的子对象s 2.0-但这并没有发生,是吗?我相信还有更多的理由不允许这样做。用一个可能的理由更新了我的答案。使用rgba颜色模式处理这种效果是可能的。例如,这是有效的:。parent{background:rgba(background:255,255,255,0.7);}.parent.child{background:rgba(255,255,255,1);}