添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

当一个元素不设置height时,它的默认值是 auto,浏览器会计算出实际的高度。宽度类似。

但如果想给一个 height:auto 的块级元素的高度添加 CSS3 动画时,该怎么办呢?

MDN 的描述可以查到 CSS 支持动画的属性中的 height 属性如下:

height yes, as a length , percentage or calc();   // 意思是当 height 的值是 length,百分比或 calc() 时支持 CSS3 过渡。

所以当元素 height : auto 时,是不支持 CSS3 动画的。

那么如何处理 auto 的过渡动画呢?解决方案有2个:

1、第一种:通过 JS 获取精确的 height 值的方法 —— 不推荐,特别是在VUE这种框架下不推荐使用。

2、第二种:其实我们可以使用 max-height 代替 height。

只要我们设置一个肯定比元素自增长大的高度值就可以了。

当然,因为是根据 max-height 值进行过渡效果,所以最好不要大得离谱,否则动画效果不理想。

.s-tag-more{
  transform rotate(270deg)
  transition:transform 0.6s;
.s-tag-box{
  max-height 30px
  overflow: hidden;
  transition:max-height 1s;
// 动画效果如下:
.tag-container{
  &:hover .s-tag-box{
    max-height 200px
  &:hover .s-tag-more{
    transform rotate(90deg)

  这样即可实现一个确定高度到自动高度的过渡动画效果。