zoukankan      html  css  js  c++  java
  • 给不定高度/宽度元素添加CSS3 transition动画

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

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

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

      height :yes, as a lengthpercentage 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)
      }
    }

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

  • 相关阅读:
    CSS3 Media Queries 片段
    针对移动设备的CSS3布局
    移动Web界面样式-CSS3
    em与px区别-CSS教程
    webApp添加到iOS桌面
    字典(dick)
    元组(Tuple)
    列表(list)
    字符串的常用方法
    运算符
  • 原文地址:https://www.cnblogs.com/goloving/p/14816811.html
Copyright © 2011-2022 走看看