正如我们所知,子元素现在不能覆盖其父元素的opacity属性。父对象的opacity属性始终生效
当子对象试图降低父对象的不透明度(使用较小的值覆盖)时,这是有意义的。但是如果孩子试图用一个更大的值覆盖它呢?难道这不应该被允许吗?为什么半透明的父对象不能有不透明的子对象?有人能分享一下为什么这样一个限制是CSS设计的一部分吗
如果有人能解释一下这其中的理论原因,我会非常感激的。我基本上是想找出为什么不能成为其中一部分(不是解决办法;因为已经讨论了很多次了)。我相信这是很多新手都想知道的
我从来没有将其视为“凌驾于”或“凌驾于”之上。这是一个相对不透明的问题。如果父对象的不透明度为0.5,则子对象也有不透明度(相对于父对象的堆叠上下文)。子对象可以在0和1之间有自己的不透明度值,但它始终与父对象的不透明度相对。因此,如果子级也设置了opacity:0.5,则它将是0.25不透明度1的父级兄弟级的不透明度
规范将其视为alpha遮罩,其中不透明度只能移除。元素要么不透明,要么具有一定程度的透明度(任何<;1):
不透明度可以看作是一种后处理操作。从概念上讲,将元素(包括其子体)渲染到RGBA屏幕外图像后,“不透明度”设置指定如何将屏幕外渲染混合到当前合成渲染中
后来:
如果对象是容器元素,则效果就像使用遮罩将容器元素的内容与当前背景混合,其中遮罩的每个像素的值为
<;alphavalue>
至于为什么是这样实施的,我不认为这是“让我们禁止那样做”的故意行为。也许选择这种方法是为了计算更简单,只是后来才认识到对不同事物的实际需求(然后引入了rgbacolor和背景色——我可能对这里的时间线有误)