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)
      }
    }

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

  • 相关阅读:
    mysql各版本特点
    jQuery 获取文件后缀的方法
    jquery中动态效果
    常用CSS缩写语法总结
    判断两个时间这间间隔几分钟
    jQuery操作Cookie
    禁止表单自动提示缓存数据
    jQuery.lazyload
    Jquery.Sorttable 桌面拖拽自定义
    分享13款非常有用的 jQuery 插件
  • 原文地址:https://www.cnblogs.com/goloving/p/14816811.html
Copyright © 2011-2022 走看看