【发布时间】:2019-03-19 22:56:02
【问题描述】:
我正在将多个图像显示为幻灯片。图像高度是动态的,而不是静态的。我只想在移动到下一张图片时在高度过渡上显示动画。
这是我的父 div 容器。
<div style={ {height: '100%',margin: '0px',width: '100%',transition:'height 2s',}}>
<ImageSlide
url={this.images[currentImageIndex]}
/>
</div>
这是我的图片幻灯片组件。
<div style={{ position: 'relative' }}>
<img style={width: '100%',display: 'inline-block',transition: 'height 2s',} alt=" " src={url} />
</div>
如何在移动到下一张图片时渲染高度过渡动画?
【问题讨论】:
-
只有在高度属性实际发生变化时,过渡才有意义。默认情况下,图像高度为
auto。所以没有变化被动画化。如果您设置显式 cssheight值,则将显示过渡。您可以在图像元素上使用onload回调并计算实际高度并在 ImageSlide 组件中使用setState进行渲染。您只需要在更改height属性的 dom 元素中使用transition。 -
你的意思是图片标签的高度?
-
我的意思是图像样式标签的高度css属性(例如
style="{height: 500px;}")。transition适用于 css 属性,不适用于 dom 元素属性 -
是的,但我不知道图像的高度。它具有动态高度。我该怎么办?
-
在图像上使用
onload回调。加载后,您可以访问表示图像完整大小的naturalHeight、naturalWidth,以及表示元素渲染大小的width和height。然后您可以计算新高度并更改组件状态以更新样式。
标签: css reactjs css-transitions css-animations