• 不定高度的元素实现transition动画_如何为height:auto的div添加css3过渡动画


    一个元素不设置高度时,height的默认值是 auto,浏览器会自动计算出实际的高度。那么如何为一个height:auto的元素添加 css3动画呢?在MDN文档中css 支持动画的属性中的 height 属性如下 :当 height 的值是 length,百分比或 calc() 时支持 css3 过渡,所以当元素 height : auto 时,默认是不支持 css3 动画的。

    为了解决这个问题,我们可以通过js 获取精确的 height 值,或者使用max-height 代替 height。只需要设置一个肯定比元素自增长大的高度值,由于是根据 max-height 值进行过渡效果,所以最好不要大得离谱,否则动画效果不理想。下面就介绍这2种方式的实现:

    1、利用max-height:

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="utf-8">
            <style>
                *{
                    margin: 0;
                    padding:0;
                }
                div{
                    
                    display: inline-block;
                    overflow: hidden;
                    background-color: orange;
                    max-height: 20px;
                    -webkit-transition: max-height 1s;
                    transition: max-height 1s;
                }
                div:hover{
                    max-height:200px;
                }
            </style>
        </head>
        <body>
            <div>
                <p>我不是height,是max-height</p>
                <p>我不是height,是max-height</p>
                <p>我不是height,是max-height</p>
                <p>我不是height,是max-height</p>
                <p>我不是height,是max-height</p>
                <p>我不是height,是max-height</p>
            </div>
        </body>
    </html>
    

      

    2、通过js获取高度

    css:

    .box {  400px; padding: 20px; border: 40px solid #a0b3d6; background-color: #eee; overflow: hidden; }
    .loading { height: 100%; background: url(loading.gif) no-repeat center; }
    .in {  100px; margin: 0 auto;  border: 50px solid #beceeb; background-color: #f0f3f9; }
    [type=button] {  100px; height: 32px; font-size: 100%; }
    

    资源网站大全 https://55wd.com 设计导航https://www.wode007.com/favorites/sjdh

    html:

    <div id="box">...</div>
    <p>
        <input type="button" id="button" value="点击我">
    </p>
    

      

    js:

    // 高度无缝动画方法
    var funTransitionHeight = function(element, time) { // time, 数值,可缺省
        if (typeof window.getComputedStyle == "undefined") return;
        
        var height = window.getComputedStyle(element).height;
    
        element.style.transition = "none";    // 本行2015-05-20新增,mac Safari下,貌似auto也会触发transition, 故要none下~
       
        element.style.height = "auto";
        var targetHeight = window.getComputedStyle(element).height;
        element.style.height = height;
        element.offsetWidth = element.offsetWidth;
        if (time) element.style.transition = "height "+ time +"ms";
        element.style.height = targetHeight;
    };
    

      

  • 相关阅读:
    连阿里大神都畏惧的高可用风险
    CI/CD工具选型:Jenkins还是GitLab CI/CD?
    KCP协议学习
    独家揭秘:SQL Server AlwaysOn在阿里云的突破
    几款Windows与Linux双机热备软件推荐
    Dotfuscator Professional Edition 4.96 版的使用教程
    缓存和数据库一致性问题
    华为V5服务器iBMC远程管理系统 干货技术总结
    SQLServer高可用方案在企业生产环境的实践
    微服务拆分之道
  • 原文地址:https://www.cnblogs.com/ypppt/p/13252468.html
Copyright © 2020-2023  润新知