这是一个开始:http://jsfiddle.net/kizu/A7QX9/
问题:在Opera中,当你动画过渡的visibility
属性(通常与opacity
一起)它不是正确的动画:visibility
总是在过渡结束时改变,所以当块出现时,它不会顺利出现。
所以,问题是:是否有任何css只解决这个Opera的错误?
在我提出这个问题并思考了一段时间后,我自己找到了答案。
并想出了一个解决方案
那么,一步一步来:
- 让我们看看当你需要显示在开始时隐藏的块的情况。
- 当你切换
opacity
和visibility
的过渡,块保持与visibility: hidden
,而过渡是在运行中。所以,你不需要在这里为visibility
使用过渡。 - 但是当你再次隐藏块时,你需要在过渡结束时切换
visibility
,所以你显然需要这里的过渡。 - 所以,在块被隐藏的选择器中,你必须有
opacity
的过渡,而在它显示的选择器中,你不需要过渡。
这是我用这个解决方案做的一个小提琴:http://jsfiddle.net/kizu/A7QX9/1/
Opera中当前的过渡实现是基于旧版本的规范,该规范规定对于过渡可见性"1"为"可见",其他所有值为"隐藏"。
所以如果你尝试从"隐藏"过渡到"可见",那么你将看不到元素,直到底层0-1范围表示过渡值达到1。同时,如果你正在从"可见"过渡到"隐藏",那么元素将在过渡开始后立即消失,因为value将为<1.
你期望的行为是在规范的"草案"版本中指定的,它说"0"是"隐藏的",所有其他值都是"可见的"。
好消息- Opera 12将包括修复这个错误。