转换后更改属性

时间:2015-02-24 02:52:57

标签: html css html5 css3

是否有办法在转换完成后立即更改其他属性时过渡更改某些属性?

我想将height的{​​{1}}从0过渡到100%。当height0时,我希望其overflowhidden,当height到达100%时,我想要overflow auto 1}}成为#foo{ height: 0; overflow: hidden; transition: height 0.25s; } #foo.some-state{ height: 100%; overflow: auto; }

我试过了:

height: 0

这会产生奇怪的效果。如果最终状态以足够的高度结束以便不需要滚动条,则会发生的情况是overflow处首先不存在滚动条。然后它会在转换开始时出现,并在转换过程中保持高度不足。当高度变得足够时,滚动条会再次消失。

在这种情况下,我希望滚动条在转换期间不显示。换句话说,我希望hidden在转换完成后从auto切换到{{1}}。怎么办呢?

1 个答案:

答案 0 :(得分:2)

单靠CSS转换是不可能的。如果您不想使用其他任何内容,则可以设置overflow:scroll,以便从一开始就显示滚动条。

transitionend事件允许您对JS的转换结束作出反应。所以使用一个小的小处理函数,你可以添加overflow:auto(或者设置一个类来实现那个效果)。

使用animation代替过渡可能是另一种方式。您需要在每个关键帧中指定overflow,因为overflow是一个无法插值的属性,因此完全会从动画中删除。