如果是,它是否有效地弃用了 visibility属性?
visibility
(我知道 Internet Explorer 还不支持这个 css2属性。) 布局引擎的比较
另请参阅: 可见性: 隐藏和显示: 无之间的区别是什么
我并不完全确定这一点,但我认为屏幕阅读器不会阅读设置为隐藏可见性的内容,但他们可能会阅读不透明的内容。
这是我能想到的唯一区别。
我不完全确定,但这是我如何做跨浏览器透明度:
opacity: 0.6; -moz-opacity: 0.6; filter: alpha(opacity=60);
具有可见性的物体: 隐藏仍然有形状,他们只是不可见。不透明度零元素仍然可以单击并对其他事件作出反应。
菲尔说的是真的。
IE 支持不透明性:
filter:alpha(opacity=0);
以下是来自不同答案的经过核实的信息汇编。
这些 CSS 属性中的每一个都是唯一的。除了呈现不可见的元素外,它们还有以下附加效果:
collapse events taborder opacity: 0 No Yes Yes visibility: hidden No No No visibility: collapse Yes* No No display: none Yes No No * Yes inside a table element, otherwise No.
这些属性具有不同的 语义上的含义。虽然语义 CSS 听起来可能有点傻,但正如其他用户所提到的,它会对屏幕阅读器等设备产生影响——在这些设备中,语义会影响页面的可访问性。
没有。
具有不透明度的元素创建新的堆叠上下文。
另外,CSS 规范没有定义这一点,但是具有 opacity:0的元素是可点击的,而具有 visibility:hidden的元素则不是。
opacity:0
visibility:hidden
不,不是这样的,这两者有很大的区别。 它们是相似的,因为如果可见性是隐藏的,或者不透明度为0,您可以看穿元素
不透明度: 0 : 背后元素的 你不能点击。
可见性: 隐藏 : 你可以点击在其后面的元素上。
在创建影响 contenteditable中元素的用户样式时,我注意到,如果将某些内容设置为 visibility: hidden,那么输入插入符号实际上并不希望与其交互。如果有的话
contenteditable
visibility: hidden
<div contenteditable><span style='visibility: hidden;'></span></div>
... 那么看起来如果你把 div/span 集中在一起,你就不能真正地输入它。而使用 opacity: 0似乎可以。我还没有进行过广泛的测试,但是我认为值得在这里提一下,因为在这个页面上还没有其他人讨论过对文本输入的影响。这可能与上面提到的 事件有关。
opacity: 0
visibility和 opacity之间有很多不同之处。大多数答案都提到了一些不同之处,但这里有一个完整的列表。
opacity
不透明性不继承,而可见性继承
不透明是可动画的,而可见性是不可动画的。 (好吧,是 严格来说,但是没有定义任何行为,比如说,“37% 折叠,63% 隐藏”,所以你可以认为这是不可动画的。)
使用不透明度,不能使子元素比其父元素更不透明。例如,如果一个 p 的颜色为: 黑色,不透明度为: 0.5,则不能使其任何子元素完全为黑色。不透明度的有效值在0到1之间,这个示例需要2! 因此,根据 马丁的评论,您可以在一个不可见的父级中拥有一个可见的子级(可见性: 可见)(可见性: 隐藏)。对于不透明,这是不可能的; ,如果父级不透明: 0; ,其子级始终是不可见的。
Kornel 的回答 提到,不透明度值小于1会创建自己的堆栈上下文; 可见性值则不会。 (我希望我能想到一种方法来证明这一点,但我想不出任何方法来显示可见性的堆叠上下文: 隐藏元素。)
根据 Philnash 的回答,具有不透明度: 0的元素仍然被屏幕阅读器读取,而可见: 隐藏元素则不会。
根据 Chris Noe 的回答,可见性有更多选项(比如折叠) ,不可见的元素不再响应单击,也不能选项卡。
(让这成为一个社区维基,因为从现有的答案中借鉴是不公平的。)