首页 > 其他分享 >写一个高度从0到auto的transition动画

写一个高度从0到auto的transition动画

时间:2025-01-21 10:12:45浏览次数:1  
标签:动画 auto transition 高度 height CSS myElement

在前端开发中,CSS的transition属性允许我们在一定的时间范围内平滑地过渡一个元素从一种样式到另一种样式。然而,当涉及到高度(height)从0auto的过渡时,事情会变得有些复杂,因为CSS无法直接计算auto值作为过渡的终点。

为了解决这个问题,我们可以使用JavaScript来动态计算元素的目标高度,并将其设置为一个具体的数值,然后使用CSS transition来执行过渡动画。以下是一个简单的示例:

HTML:

<div id="myElement" class="collapsible">
  <p>这是一些内容,可以被展开或折叠。</p>
  <!-- 更多内容 -->
</div>

<button id="toggleButton">展开/折叠</button>

CSS:

.collapsible {
  height: 0;
  overflow: hidden;
  transition: height 0.5s ease-in-out;
}

.collapsible.expanded {
  height: auto; /* 这将不会触发过渡动画,需要JavaScript来设置具体高度 */
}

JavaScript (使用原生JavaScript,无框架):

document.addEventListener('DOMContentLoaded', function() {
  var myElement = document.getElementById('myElement');
  var toggleButton = document.getElementById('toggleButton');
  var expanded = false;
  var contentHeight;

  // 初始时计算内容的高度
  myElement.style.height = 'auto'; // 临时设置为auto以计算实际高度
  contentHeight = myElement.scrollHeight; // 获取实际高度
  myElement.style.height = '0px'; // 重置为0以隐藏内容

  toggleButton.addEventListener('click', function() {
    if (expanded) {
      // 折叠元素
      myElement.style.height = '0px';
    } else {
      // 展开元素
      myElement.style.height = contentHeight + 'px';
    }
    expanded = !expanded; // 切换状态
  });
});

在这个示例中,我们首先通过JavaScript计算了元素在展开状态下的实际高度,并将其存储在contentHeight变量中。然后,我们为切换按钮添加了一个点击事件监听器,当按钮被点击时,根据当前的展开/折叠状态来设置元素的高度。注意,在设置高度时,我们使用了具体的像素值(例如'0px'contentHeight + 'px'),而不是auto,以确保过渡动画能够正确执行。

此外,你可能还需要调整CSS中的transition属性来匹配你的具体需求,例如调整过渡的持续时间、缓动函数等。

标签:动画,auto,transition,高度,height,CSS,myElement
From: https://www.cnblogs.com/ai888/p/18683032

相关文章

  • 请用css写一个扫码的加载动画图
    创建一个简单的扫码加载动画可以使用CSS的关键帧动画。以下是一个简单的例子,模拟了一个线条从左到右的扫描效果:HTML:<divclass="scanner"><divclass="scan-line"></div></div>CSS:.scanner{width:200px;height:100px;border:1pxsolid#000;......
  • 篮球观赛的未来:从传统到动画直播的革新
    篮球动画直播:引领篮球观赛新潮流随着技术的迅猛发展,篮球直播方式也在不断创新,传统的电视和网络直播虽然为观众提供了便捷的观看方式,但它们在某些方面仍然存在局限。而篮球动画直播的出现,打破了这一局限,为全球篮球迷带来了全新的观赛体验。这项技术不仅突破了视觉与数据的界限,还将......
  • 【一看就会】Autoware.universe的“规划”部分源码梳理【六】(behavior_path_planner第
    文章目录前言六、避障变道模块——autoware_behavior_path_avoidance_by_lane_change_module文件功能主次关系功能依赖说明核心文件-scene.cpp主要执行流程1.检查阶段2.数据更新阶段3.规划阶段辅助计算函数数据流向源码注释管理文件-manager.c......
  • C++auto和decltype的用法
    在C++中,auto和decltype是两个非常有用的关键字,它们帮助程序员更方便地处理类型推导和类型声明。以下是它们的具体用法:autoauto关键字用于自动类型推导,即让编译器根据初始化表达式来推断变量的类型。这在处理复杂类型或模板编程时特别有用,因为它可以简化代码并减少类型错误。......
  • 基于AutoDL 进行 Llama_Factory+LoRA大模型微调
       其实这个环境的搭建比较容易,但是其中出现在AutoDL上访问WebUI界面是无法访问的,对该问题查阅了一些资料并记录.1.环境的配置及其校验Step1.使用Conda创建LLaMA-Factory的python虚拟环境condacreate-nllama_factorypython==3.11创建完成后,通过如下命令进入该......
  • 【Unity 怪物资源包】MONSTER PACK VOL 3 专为奇幻、冒险、角色扮演类游戏(RPG)等项目设
    MONSTERPACKVOL3是Unity的一个高质量怪物资源包,专为奇幻、冒险、角色扮演类游戏(RPG)等项目设计。它提供了一系列详细的怪物模型、动画、特效和纹理,帮助开发者为游戏添加丰富多样的敌人角色。这个插件包括了多个种类的怪物和相关资源,适用于需要丰富敌人种类和战斗动画的游......
  • Maui学习笔记-CommunityToolkit.Maui动画案例
    动画元素在CommunityToolkit.Maui工具包中提供了AnimationBehavior和BaseAnimation类。AnimationBehavior作用在视图UI元素,并用作动画的容器。BaseAnimation是实现动画逻辑的基类。下面这个案例是使一个按钮实现淡入淡出的效果在主页的隐藏文件中创建一个类继承Ba......
  • 【pywinauto 库】启动PC端应用程序 - 上篇
    一、简介经过上一篇的学习、介绍和了解,想必小伙伴或者童鞋们,已经见识到pywinauto的强大了,今天继续介绍pywinauto,上一篇已经可以打开计算器了,这里宏哥再提供其他方法进行打开计算器和非电脑自带程序。pywinauto可以启动电脑自带的应用程序,也可以启动电脑安装的应用程序。二、运......
  • winform使用依赖注入框架Autofac的一些记录
    由于winform的framework框架无法实现core那样的依赖注入,必须借助于依赖注入框架来实现。此次使用Autofac,由于DAL被BLL引用,而BLL又被主程序引用,所以在framework里要实现依赖注入,主程序必须引用DAL和BLL,才可以在主程序里面对DAL和BLL进行注册,这又违背了解耦的原则,所以只能在BLL和主......
  • 请说说在什么时候用transition?什么时候使用animation?
    在前端开发中,transition和animation都是用来实现动画效果的重要工具,但它们在使用场景和特性上有所不同。以下是关于何时使用transition以及何时使用animation的详细解答:何时使用transition简单过渡效果:transition通常用于实现元素状态之间的简单过渡,例如鼠标悬停(hover)时元素的......