具有多个属性的CSS过渡速记?

我似乎无法find具有多个属性的CSS过渡速记正确的语法。 这不会做任何事情:

.element { -webkit-transition: height .5s, opacity .5s .5s; -moz-transition: height .5s, opacity .5s .5s; -ms-transition: height .5s, opacity .5s .5s; transition: height .5s, opacity .5s .5s; height: 0; opacity: 0; overflow: 0; } .element.show { height: 200px; opacity: 1; } 

我用javascript添加了show class。 元素变得更高和可见,它只是不转换。 在最新的Chrome,FF和Safari中进行testing。

我究竟做错了什么?

编辑:只是要清楚,我正在寻找速记版本缩放我的CSS。 它充满了所有供应商的前缀。 还扩展了示例代码。

句法

 transition: <property> || <duration> || <timing-function> || <delay> [, ...]; 

请注意,如果指定了延迟时间,延迟时间必须延迟。 个人过渡合并在速记声明中:

 -webkit-transition: height 0.3s ease-out, opacity 0.3s ease 0.5s; -moz-transition: height 0.3s ease-out, opacity 0.3s ease 0.5s; -o-transition: height 0.3s ease-out, opacity 0.3s ease 0.5s; transition: height 0.3s ease-out, opacity 0.3s ease 0.5s; 

或者只是将它们全部转换:

 -webkit-transition: all 0.3s ease-out; -moz-transition: all 0.3s ease-out; -o-transition: all 0.3s ease-out; transition: all 0.3s ease-out; 

这是一个简单的例子 。 这是另一个延迟属性 。


编辑:此前列出的是转换的兼容性和已知问题。 删除为了便于阅读。

底线:只是使用它。 这个属性的性质对所有的应用程序来说都是不折不扣的,现在全球的兼容性已经远高于94%。

如果您仍想确定,请参阅http://caniuse.com/css-transitions

如果你有几个特定的​​属性,你想以相同的方式进行转换(因为你也有一些你不想转换的属性,比如说opacity ),另外一个select就是做这样的操作(为了简洁,省略了前缀):

 .myclass { transition: all 200ms ease; transition-property: box-shadow, height, width, background, font-size; } 

第二个声明覆盖了它上面的速记声明中的all ,并且(偶尔)更简洁的代码。

演示

通过将不透明属性转换为.5s的延迟,元素在其高度转换的整个时间将是完全透明的(并因此是不可见的)。 所以你唯一能看到的是不透明度的变化。 所以你会得到和高度属性离开转换一样的效果:

“过渡:不透明.5s。5s;”

那是你想要的吗? 如果不是,并且想要看到高度过渡,则在过渡期间不能有不透明度为零的情况。

我认为这个工作:

 element{ transition: all .3s; -webkit-transition: all .3s; -moz-transition: all .3s; -o-transition: all .3s;