css高度上的过渡动画为什么不生效

li{
    .subnav{
        display: flex;
        flex-direction: column;
        transition:height 2s;//这个高度什么不生效
        padding: 10px 0;
        height: 0;
        overflow: hidden;
    }
}

#navmenu li:hover .subnav{
    height: auto;
}
阅读 7.6k
2 个回答

因为heigth:auto 不是具体值,无法触发过渡。
transition 必须满足是具体值,比如 opacity:0->opacity:1
可以将height:automax-height:xxx代替

刚好看到

使用 CSS transitions - CSS(层叠样式表) | MDN

哪些 CSS 属性可以动画?
auto 值常常较复杂,规范指出不要在它上动画。一些用户代理,比如基于 Gecko 的,遵循这点;一些,比如基于 WebKit的,没有这么严格限制。在 auto 上动画结果可能不可预期,这取决于浏览器及其版本,应当避免使用。
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题