Auto值的CSS3 Transition解决方案

66 篇文章 1 订阅
59 篇文章 0 订阅

今天在准备明天的课堂案例时,遇到了Auto值的Transition Bug问题,各种搜索之后得到解决方案,备忘如下。

问题描述

当我们需要给width、height等值设置Transition(过渡)时,如果我们的起始状态(或结束状态)为auto时,Transition会失效。

情境重现

例如,在该案例中,二级菜单数量不定,因此ul.sub高度不定,我们需要为其赋予auto值(根据内容高度决定其高度),这时的Transition(过渡)就不灵了。
ul.menu li .sub{
    height: 0;
    overflow: hidden;
    transition: all 1s;
}
ul.menu li:hover .sub{
    height:auto;
}
hover状态会起效,但是Transition失灵。

解决方案一

这里的解决方案是我们需要尽可能的绕过auto值,这里我们可以通过使用max-height绕过 height:auto值。当然,width可以使用max-width。
ul.menu li .sub{
    max-height: 0;
    overflow: hidden;
    transition: all 1s;
}
ul.menu li:hover .sub{
    max-height: 200px;
}

注意事项

1.我们需要确保max-height的值超过所有项中的最大值,也就是说一定要罩得住。
2.我们这里的transiton是从0到200px之间过渡,需要赋予合适的过渡持续时间、合理的max-height值以取得最佳的效果。

---------------------------------------------------------------

前端开发whqet,关注web前端开发技术,分享网页相关资源。
---------------------------------------------------------------

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值