我知道我无法将元素的高度从0
设置为auto
。这对我的情况来说很好。
单击标题时,下面的元素应占用其空间并淡入。再次单击时,它应淡出然后消失。
但是:height
的延迟似乎被忽略了。这意味着,它立即获得高度0
,然后淡出。你可以在红色边框上看得非常清楚。
有人可以解释为什么以及什么是一个好的解决方法?
HTML 的
<h1>Minion Ipsum</h1>
<p>[…]</p>
CSS
p {
visibility: hidden;
opacity: 0;
height: 0;
overflow: hidden;
border: 1px solid red;
-webkit-transition: opacity 0.55s linear, visibility 0 0.6s linear, height 0 0.7s linear;
-moz-transition: opacity 0.55s linear, visibility 0 0.6s linear, height 0 0.7s linear;
-ms-transition: opacity 0.55s linear, visibility 0 0.6s linear, height 0 0.7s linear;
-o-transition: opacity 0.55s linear, visibility 0 0.6s linear, height 0 0.7s linear;
transition: opacity 0.55s linear, visibility 0 0.6s linear, height 0 0.7s linear;
}
p.active {
visibility: visible;
opacity: 1;
height: auto;
-webkit-transition: opacity 0.55s cubic-bezier(0.405, 0.145, 0.505, 1);
-moz-transition: opacity 0.55s cubic-bezier(0.405, 0.145, 0.505, 1);
-ms-transition: opacity 0.55s cubic-bezier(0.405, 0.145, 0.505, 1);
-o-transition: opacity 0.55s cubic-bezier(0.405, 0.145, 0.505, 1);
transition: opacity 0.55s cubic-bezier(0.405, 0.145, 0.505, 1);
}
测试
答案 0 :(得分:0)
那是因为您无法使用height: auto
进行转换。当您将小提琴中的高度从auto
更改为20px
时,您将看到过渡正常。 (在OS X上使用Chrome 36)
解决方法是通过javascript找出正确的高度并将该样式应用于p.active
。