新闻中心
在css中animation与height折叠展开
因为height: auto无法参与动画,浏览器需明确数值进行过渡。推荐使用max-height或JS获取scrollHeight实现流畅折叠展开效果。

在CSS中实现元素的折叠与展开动画,直接使用 animation 控制 height 看似简单,但实际操作中容易遇到问题。因为 height: auto 无法参与CSS动画过渡(transition 或 animation),导致无法平滑展开或收起内容。
为什么 height: auto 不支持动画?
CSS 动画需要明确的数值起点和终点。当高度从 0 到 auto 时,auto 是一个动态计算值,浏览器无法知道目标高度是多少,因此不能生成中间帧。
使用 max-height 模拟展开/折叠
一种常见解决方案是用 max-height 替代 height:
- 初始状态:设置
max-height: 0、overflow: hidden - 展开状态:设置一个足够大的
max-height(如500px) - 配合
transition实现平滑动画
.collapsible{ max-height: 0; overflow: hidden; transition: max-height 0.3s ease; } <p>.collapsible.expanded { max-height: 500px; /<em> 要大于内容实际高度 </em>/ }</p>
这种方法简单有效,但缺点是如果 max-height 设置过大,动画时间会变长,即使内容很短。
使用 height + JS 获取真实高度
更精确的做法是结合 J*aScript 动态设置目标高度:
AI Surge Cloud
低代码数据分析平台,帮助企业快速交付深度数据
87
查看详情
- 先设置元素可见但不可见(如
position: absolute; visibility: hidden) - 测量其
scrollHeight - 再应用该值到
height并触发动画
const content = document.querySelector('.content');
const height = content.scrollHeight + 'px';
<p>// 展开
content.style.height = height;</p><p>// 折叠
content.style.height = '0';</p>CSS 配合:
.content {
height: 0;
overflow: hidden;
transition: height 0.3s ease;
}
使用 CSS @keyframes 动画的限制
若使用 @keyframes 实现 height 动画,仍需具体数值。例如:
@keyframes slideDown {
from { height: 0; }
to { height: 200px; } /* 必须是固定值 */
}
这意味着它只适用于已知高度的内容,通用性差。
基本上就这些。想要流畅的折叠展开效果,推荐使用 max-height 方案快速实现,或结合 JS 动态读取高度实现更精准控制。关键点是理解 auto 无法动画,必须转换为具体数值。
以上就是在css中animation与height折叠展开的详细内容,更多请关注其它相关文章!
# 相关文章
# 阳泉抖音付费营销推广招聘
# 高端网站建设建议模板图
# 怎样做好网站优化分析
# 网站优化品牌
# 临漳营销推广
# 徐汇营销推广加盟
# 嘉兴建设规划公告网站
# 泰安b2b平台推广营销
# 营销推广教程视频
# 毛绒玩具东莞网站建设
# 不支持
# 解决问题
# 中文网
# css
# 适用于
# 选择器
# 两种类型
# 是一个
# 中不
# 推荐使用
# 为什么
# overflow
# css动画
# 浏览器
# js
# java
# javascript
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
AO3访问入口汇总 AO3网页版同人作品一键直达
LINQ to XML为何解析失败? 深入理解C# XDocument的异常处理
将HTML动态表格多行数据保存到Google Sheet的教程
J*aScript教程:根据元素文本内容动态设置背景色
vivo云服务网页版登录 怎么登录vivo云服务网页版
Win11怎么开启卓越性能模式 Win11电源选项启用高性能释放硬件潜力【方法】
提升Kafka消费者健壮性:会话超时处理与消息处理语义
React Router v6 教程:构建认证保护的私有路由与重定向策略
NVIDIA股价11月重挫12%:下月有望好转 但难回5万亿美元巅峰
必由学在线入口 必由学网页版快速登录入口
Pygame教程:解决用户输入与游戏状态更新不同步问题
抖音小游戏合成大西瓜免费秒玩入口链接 抖音小游戏热门合集秒玩网站
百度网盘网页版入口 百度网盘网页版官方登录网址
html怎么运行外部js文件中的函数_运html外js文件函数法【技巧】
小红书怎么解除第三方平台绑定_小红书多平台登录解绑方法介绍
Safari自带网页翻译功能怎么用 无需插件轻松看懂外文网站【方法】
C++ explicit关键字防止隐式转换_C++构造函数安全规范
魅族20怎样在浏览器开无图省流_iPhone魅族20浏览器开无图省流【流量节省】
蛙漫移动版在线看 蛙漫手机浏览器直达入口
漫蛙manwa官网登录界面_漫蛙漫画网页版主站入口
格力空气能E5故障代码是什么情况_格力空气能E5代码解析与应对措施
Windows7怎么硬盘安装 Windows7提取ISO镜像到非系统盘并运行setup.exe实现硬盘直装【教程】
VS Code远程开发时如何处理文件权限问题
b站怎么取消点赞_b站点赞取消操作方法
Angular Material 垂直步进器:实现底部到顶部排序的教程
C++如何进行游戏物理模拟_使用Box2D库为C++游戏添加2D物理效果
sublime怎么设置启动时打开的窗口_sublime会话管理与热退出
如何为你的Composer包编写自动化测试_集成PHPUnit到Composer的scripts工作流
ArchiveofOurOwn小说阅读-ArchiveofOurOwn同人作品访问链接
邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧
正确连接J*aScript到HTML实现可点击图片与自定义事件处理
Node.js CSV 数据处理:基于字段值条件过滤整条记录的策略
c++项目目录结构应该如何组织_c++工程化项目结构规范
J*aScript中管理异步API调用:确保操作顺序与数据一致性
Excel函数批量查找替换超快方法_Excel用REPLACE和FIND函数秒级替换
纯CSS与HTML网格布局的HTML精简策略:SVG与JS方案解析
sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统
深入理解J*a链表中的IPosition接口与使用
c++如何使用chrono库处理时间_c++标准库时间与日期操作
QQ邮箱官方登录入口_QQ邮箱网页版快捷使用平台
TikTok搜索结果不显示如何解决 TikTok搜索刷新优化方法
J*aScript数组对象转换:按指定键分组与值收集
顺丰快递查询系统 官方正版查询入口
Golang如何测试channel通信行为_Golang channel通信测试与分析方法
限制HTML日期输入框的日期选择范围
React项目中导航栏Logo自适应布局:避免裁剪与布局溢出
c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析
如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略
虫虫漫画精品漫画官网_虫虫漫画精品漫画官网进入精品漫画
解决Django多数据库/多Schema环境下外键迁移问题


2025-10-21
浏览次数:次
返回列表
{
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease;
}
<p>.collapsible.expanded {
max-height: 500px; /<em> 要大于内容实际高度 </em>/
}</p>