Opera的可见性转换错误是否有CSS解决方法?

时间:2011-10-17 19:05:15

标签: css css3 opera css-transitions

这是开始的小提琴:http://jsfiddle.net/kizu/A7QX9/

问题:在Opera为visibility属性的转换设置动画时(通常与opacity一起),它没有正确设置动画:visibility总是在转换结束时更改,所以当块出现时,它看起来并不顺畅。

所以,问题是:这个Opera的bug是否有任何仅限CSS的解决方法?

2 个答案:

答案 0 :(得分:4)

在我提出问题并思考了一段时间后,我自己找到了答案。

并提出了一个解决方案。

所以,一步一步:

  1. 让我们看一下当你需要显示一开始就隐藏的块时的情况。
  2. 当您使用转换切换opacityvisibility时,块会在转换处于运行状态时保持visibility: hidden。因此,您无需在visibility处使用转换。
  3. 但是当你再次隐藏该块时,你需要在转换结束时切换visibility,所以你需要在这里进行转换。
  4. 因此,在隐藏块的选择器中,您必须具有opacity的转换,并且在显示它的选择器中,您不需要转换。
  5. 这是我用这个解决方案制作的小提琴:http://jsfiddle.net/kizu/A7QX9/1/

答案 1 :(得分:3)

Opera当前的转换实现基于older version of the spec说,转换可见性“1”是“可见的”,所有其他值都是“隐藏”。“

因此,如果您尝试从“隐藏”转换为“可见”,那么在表示转换的基础0-1范围达到值1之前,您将看不到该元素。 同时,如果您从“可见”转换为“隐藏”,则只要转换开始,元素就会消失,因为值将为< 1。

您期望的行为在"draft" version of the spec中指定,其中“0”被隐藏“并且所有其他值都是”可见的“。”。

虽然好消息 - Opera 12将包含针对此bug的修复程序。期待很快就会在Desktop Team blog上看到测试版本。