如何删除Css3上的延迟滑出使用最大高度转换的转换

Tim*_*Tim 11 css-transitions

我遇到了一个问题,我正在使用滑动面板进行滑动.

请看下面的jsbin http://jsbin.com/uvejuj/1/

请注意,当我第一次立即转换时单击切换按钮.

但是,如果我再次单击该按钮关闭,则转换会在执行之前延迟转换的时间.

什么导致关闭延迟,我怎么能摆脱它?

谢谢

ego*_*xyz 28

固定JS Bin

修复延迟解决方案

将cubic-bezier(0,1,0,1)转换函数放入元素.

.text {
  overflow: hidden;
  max-height: 0;
  transition: max-height 0.5s cubic-bezier(0, 1, 0, 1);
  &.full {
    max-height: 1000px;
    transition: max-height 1s ease-in-out;
}
Run Code Online (Sandbox Code Playgroud)

  • 我已经在您提供的另一个(完全相同)答案中说过:这个答案需要解释。它得到了相当多的支持,但它甚至无法正常工作。我看到的唯一效果是,缩回过渡仅为 0.5 秒,而扩展过渡则为 1 秒,并且所使用的函数基本上是极端的“缓出”。所以基本上,你只是很快地收缩最大高度的 1000px,最后放慢速度,所以最后一点看起来有点像常规的“缓入缓出”。这不是修复,这是一种解决方法,我很难称其为好的解决方法。 (3认同)
  • 这应该是实际的答案——完美的解决方案。虽然 @Jay Rafferty 的解决方案非常有意义,但这只是技术解决方案。 (2认同)

小智 21

这是因为你的动画最大高度为0到1000px,但你的内容只有120px高.延迟是您无法看到的880像素上发生的动画.

将max-height设置为内容的已知高度(如果您知道 - 例如:http://jsbin.com/onihik/1/)或尝试其他方法.也许像/sf/answers/454025771/

  • 很好地解释了为什么会发生延迟! (5认同)