我有一个以下模板:
<div class='content'>
{{content}}
</div>
和以下样式:
.content {
margin-top: 30px;
background-color: skyblue;
width: 300px;
transition: all linear 0.5s;
}
请注意{{content}}
会变大或变小(技术上是为了扩展一张卡片来显示更多信息或隐藏它)。我已经设置了css transition
,当手动设置一个不同的height
到元素时,它确实工作。但是当更多的内容被注入content
时,没有过渡,只是一个普通的老尺寸调整。有什么帮助来获得正确的过渡吗?
请参阅following plunkr
谢谢你,
阿米特
3条答案
按热度按时间xa9qqrwz1#
我相信这是很正常的,过渡只适用于对CSS的更改,而不适用于计算的更改。
一个选项可能是有一个嵌套的
div
,在外部的overflow: hidden
上设置overflow: hidden
,然后获得内部的overflow: hidden
的计算高度,并在外部的overflow: hidden
上设置它以获得过渡。CSS:
于飞:
JS:
工作提琴:http://jsfiddle.net/Lnts7w1f/
jtw3ybtb2#
在@jcaron answer的帮助下,我设法在一个react组件中排序了这个。所以当'activeSubsection'按钮被点击时,useEffect钩子就会运行。
显然,这不是完整的组成部分,但希望足以给予你一个想法。
lx0bsm1f3#
嗯......有个小窍门你可以做......我不知道它是否适合你的需要。
css过渡效果应用于具有先前值的css属性,然后改变。虽然你确实改变了div内容的高度,但实际的css属性
height
并没有显式改变。这就是为什么你没有得到动画。一种解决方法是找到div的内部高度,然后将其设置为元素,使其具有动画效果。我已经为此创建了一个函数,并添加了一个
span
来控制div的内部大小。只需在每次更改时调用该函数:
JS功能:
http://plnkr.co/edit/p6QRAR5j4C8d0d0XRJRp?p=preview