最大高度动画

<style>
        .a{
            max-height:0;
            background:red;
            overflow: hidden;
            transition: all linear 5s;
        }
        .b{
            height:200px;
            background:blue;
        }

    </style>
</head>
<body>
    <button>点我试试</button>
    <div class="a">Lorem ipsum dolor sit amet consectetur adipisicing elit. Vero tempore laboriosam natus quae fuga nesciunt itaque fugit voluptas ratione eos beatae ea repellendus modi autem accusamus molestiae, corrupti saepe numquam.</div>
    <div class="b">222</div>
</body>
<script>
    document.getElementsByTagName("button")[0].onclick=function(e){
        document.getElementsByClassName("a")[0].style.maxHeight=`1000px`;    //给个最大高度就会出现动画
    }
</script>

但是,使用此方法也有一点要注意,即虽然说从适用范围讲,max- height 值越大使用
场景越多,但是,如果 max-height 值太大,在收起的时候可能会有“效果延迟”的问
题,比方说,我们展开的元素高度是 100 像素,而 max-height 是 1000 像素,动画时间
是 250 ms,假设我们动画函数是线性的,则前 225 ms 我们是看不到收起效果的,因为
max-height 从 1000 像素到 100 像素变化这段时间,元素不会有区域被隐藏,会给人动
画延迟 225 ms 的感觉,相信这不是你想看到的。
因此,我个人建议 max-height 使用足够安全的最小值,这样,收起时即使有延迟,也
会因为时间很短,很难被用户察觉,并不会影响体验

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现 div 最大化恢复动画,可以使用 CSS3 的 transition 属性和 transform 属性。具体步骤如下: 1. 首先,在 div 中添加两个按钮,一个用于最大化,一个用于恢复。 2. 给 div 添加一个类,比如“maximized”,用于最大化时的样式。 3. 在 CSS 中,为 div 和“maximized”类设置样式。其中,“maximized”类的宽度和高度应该是 100%。 4. 使用 JavaScript 监听最大化和恢复按钮的点击事件,根据当前 div 是否有“maximized”类来切换样式。 5. 在 CSS 中,为 div 添加 transition 和 transform 属性。在最大化时,将 div 的 transform 属性设置为“translate(0,0)”,表示将 div 移动到左上角,同时将宽度和高度设置为 100%。在恢复时,将 transform 属性设置为“translate(x,y)”,表示将 div 移动到指定位置,同时将宽度和高度设置为原来的大小。 6. 最后,当 div 的样式切换完成后,使用 JavaScript 将 transform 属性设置为“none”,以便下一次动画的正常执行。 下面是一个简单的实现示例: HTML 代码: ```html <div class="wrapper"> <div class="content"> <!-- 内容 --> </div> <div class="buttons"> <button class="maximize">最大化</button> <button class="restore">恢复</button> </div> </div> ``` CSS 代码: ```css .wrapper { position: relative; width: 500px; height: 300px; overflow: hidden; } .content { width: 100%; height: 100%; transition: all 0.5s ease-in-out; } .content.maximized { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 999; } .buttons { position: absolute; top: 10px; right: 10px; } button { padding: 10px; } ``` JavaScript 代码: ```js const content = document.querySelector('.content'); const maximizeBtn = document.querySelector('.maximize'); const restoreBtn = document.querySelector('.restore'); let isMaximized = false; maximizeBtn.addEventListener('click', () => { if (!isMaximized) { content.classList.add('maximized'); content.style.transform = 'translate(0,0)'; isMaximized = true; } }); restoreBtn.addEventListener('click', () => { if (isMaximized) { content.classList.remove('maximized'); const rect = content.getBoundingClientRect(); const x = rect.left + window.scrollX; const y = rect.top + window.scrollY; content.style.transform = `translate(${x}px,${y}px)`; isMaximized = false; } }); content.addEventListener('transitionend', () => { if (!isMaximized) { content.style.transform = 'none'; } }); ``` 在这个示例中,我们使用了 translate() 函数来实现 div 的移动,同时使用了 transition 属性来设置过渡动画的效果。在最大化时,我们将 div 的 transform 属性设置为“translate(0,0)”;在恢复时,我们将 transform 属性设置为“translate(x,y)”来移动 div 到原来的位置。同时,在过渡动画完成后,我们又将 transform 属性设置为“none”,以便下一次动画的正常执行。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值