在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
这个问题源自于掘金上的一个留言,一个朋友问到,为什么我下面这段代码的高度过渡动画失效了? 伪代码大概是这样: { height: unset; transition: all 0.3s linear; will-change: height; &.up { height: 0; } &.down { height: unset; } } 把它还原成一个实际的 Demo,效果大概是这样(本质想的想法是通过给元素切换它的 嗯哼?很奇怪,明明给 我们期待的效果是这样的: transition 不支持 height: auto当上述代码设置成 查看规范,究其原因,在于CSS transtion 不支持元素的高度为 auto 的变化。 如果把上述的 { &.up { height: 0; } &.down { - height: unset; + height: 500px; } } 但是,我们又希望能够做到动态高度的过渡转换,是不是就没有办法了么? 巧用max-height适配动态高度嘿嘿,这里有一个非常有意思的小技巧。既然不支持 我们改造一下上述代码,将 { max-height: 0; transition: max-height 0.3s linear; &.up { max-height: 0; } &.down { max-height: 1000px; } } 我们估算一下实际容器的最大高度,这里的 由于 CodePen Demo -- the height property transition unwork 小缺陷整体效果还是非常的 Nice 的,当然,可能有两个小缺陷,
因为本来展开动画是期望将容器的高度用 1s 的时间拉伸至 1000px,实际在 200px 的时候就停止了,所以动画时间只有 0.2 秒。综上,方法是好方法,但是具体使用的时候要需要具体分析。 到此这篇关于CSS 动态高度过渡动画效果的实现的文章就介绍到这了,更多相关css高度过渡动画内容请搜索极客世界以前的文章或继续浏览下面的相关文章,希望大家以后多多支持极客世界! |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论