继上次max-height代替height做过渡动画的后续

碰到两个问题

第一个问题群里也有小伙伴在问

就是在mac系统下没有什么问题

大家看正常的展开

但是呢我们去windows里面

大家仔细看啊

注意

看到了吗

我再来一次

他在展开的过程中呢

他是有这个滚动条的闪现

我们可以把这个动画调慢一点

大家看一下我把它改成1.5秒

好再来一遍

看到了吗

那为什么会这样呢

我们趁它过度的时候

把动画暂停一下

我们首先啊调出这个开发者工具

然后点这点这:More tools

选animations

然后呢我把动画放慢一点25%

然后 点一下,暂停

大家看

现在是有滚动条的而且是能滚动的

所以呢很显然他现在是还没完全展开

但是呢里边内容比较高

那为什么在麦克系统下没问题呢

我们来我们先把这个复制过来看

看一下啊还

是我们调出开发者工具

然后呢More tools ,anmations

注意啊暂停

大家看啊

其实也有滚动条

只是呢在Mac系统下

他这个滚动条如果你不滚动

他默认是隐藏的

所以呢看上去像是没问题

那如果谈到解决方案呢

最好的方法肯定是在

他过度的这个过程中啊

临时的把这个滚动条禁用一下

(就是overflow: hidden)

但是呢

这个方案如果不借用JS是很难做到的

所以呢我想了另一个变相的解决方案 (不是很完美,但大部分情况够用)

什么呢就是我们呀

默认就让他(res的滚动条)这个是隐藏的

只是在他hover的时候呢

把这个overflow改成auto

然后默认的时候他是hidden

我们再试一下

windows

然后呢动画给他恢复一下

刷新好大家看

这就没问题了

我再把动画调快

这样就没问题了

好我们再来看第二个问题

就是我发现啊

当我们拿max-height

来作为过渡动画的时候

虽然视觉上他是展开到这了

但是呢他实际的动画执行是

到你设置的那个值

比如啊我们设置的是80vh

那他80位置呢

假如说是到这个位置

那他动画所消耗的时间呢

就是从这一直到这来计算的

所以呢如果把max-height设的比较大

他展开看不出问题

他在收起的时候他是从这开始收起

等他收起到这的时候

我们才能看出效果

所以呢就会感觉收起的时候有点延迟

我们来试一下啊

我们呢把这个max-height设的大一点

比如200vh

然后0.5过度

好我们来试一下啊

大家看我失去焦点在这点一下

好已经点了

他才收起

所以呢这个问题要想解决的话呢

我们要么就采用js

(先获取内容占用的高度)来直接设置他的height高度

但是呢我还是想尽量用CSS

后来呢

我在网上找到了一个这样的解决方案

我们先把这个复制过来

看一下啊他默认是这个

我把这个默认动画拿过来

0.5秒

同时呢他在打开的这个样式里边

设置了另一个曲线的效果

我们把整个拿过来放过来

一个是0.5秒一个是1秒

我们再回来看一下效果

展开现在是25%的速度啊

收起大家看就很快了

我们再恢复正常的速度展开收起

这样就很跟手了

最后更新于