是否有办法在转换完成后立即更改其他属性时过渡更改某些属性?
我想将height
的{{1}}从0
过渡到100%
。当height
为0
时,我希望其overflow
为hidden
,当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}}。怎么办呢?
答案 0 :(得分:2)
单靠CSS转换是不可能的。如果您不想使用其他任何内容,则可以设置overflow:scroll
,以便从一开始就显示滚动条。
有transitionend
事件允许您对JS的转换结束作出反应。所以使用一个小的小处理函数,你可以添加overflow:auto
(或者设置一个类来实现那个效果)。
使用animation代替过渡可能是另一种方式。您需要在每个关键帧中指定overflow
,因为overflow
是一个无法插值的属性,因此完全会从动画中删除。