Answers:
这是来自各种答案的经过验证的信息的汇总。
这些CSS属性中的每一个都是唯一的。除了使元素不可见之外,它们还具有以下附加效果:
崩溃事件标签 不透明度:0否是是 可见性:隐藏否否否 能见度:崩溃是*否否 显示:无是否否 *是在表格元素中,否则为否。
visibility:hidden
,则您需要使用opacity: 0
它来检测鼠标单击。
opacity:0
或display:none
,但是如果使用visibility: hidden
,可以使用visibility: visible
不,不是的。有一个很大的不同。它们是相似的,因为如果可见性被隐藏或不透明度为0,则您可以透视该元素,但是
不透明度:0 :您不能单击其后面的元素。
可见性:隐藏:您可以单击其后面的元素。
visibility
和之间有许多差异opacity
。大多数答案都提到了一些区别,但这是完整列表。
不透明度不会继承,而可见性会继承
不透明度是可动画的,而可见性则不能。
(从技术上讲是正确的,但是根本没有为“ 37%塌陷和63%隐藏”定义行为,因此您可以将其视为不可动画。)
使用不透明度,您不能使子元素比其父元素更不透明。EG,如果您使用的颜色是:黑色和不透明度:0.5,则不能使它的任何子级变成全黑。不透明度的有效值在0到1之间,此示例需要2!
因此,根据马丁的评论,您可以在不可见的父项中(具有可见性:隐藏)有一个可见的子项(可见性:visible)。对于不透明这是不可能的。如果父母的不透明度为0;它的孩子总是看不见的。
Kornel的答案提到不透明度值小于1会创建自己的堆栈上下文;可见性没有价值。
(我希望我能想到一种方法来证明这一点,但我想不出任何方法来显示可视性:hidden元素的堆叠上下文。)
根据philnash的回答,屏幕阅读器仍会读取不透明度为0的元素,而可见的:隐藏的元素则不会。
根据Chris Noe的回答,可见性具有更多选项(例如合拢),不可见的元素不再响应点击,因此无法将其切换为选项卡。
(将其设为社区Wiki,因为从现有答案中借用是不公平的。)
我对此并不完全确定,但我认为屏幕阅读器不会阅读设置为隐藏可见性的内容,但不管它们的不透明性,他们都可以阅读。
这是我能想到的唯一区别。
我不能完全确定,但这是我跨浏览器透明度的方法:
opacity: 0.6;
-moz-opacity: 0.6;
filter: alpha(opacity=60);
具有可见性的对象:隐藏的仍具有形状,因此看不见。不透明零元素仍然可以单击并对其他事件做出反应。
菲尔说的是真的。
IE支持不透明性:
filter:alpha(opacity=0);