答案:通过CSS的max-height与overflow:hidden配合transition实现折叠菜单动画,避免height:auto无法过渡的问题,利用J*aScript切换类控制状态,适用于导航、FAQ等场景,需注意max-height取值合理及溢出隐藏。

在CSS初级项目中,实现一个简单的折叠菜单可以通过 transition 和 max-height 配合来完成。这种方法不需要J*aScript控制高度动画(虽然JS可用于切换类),仅用CSS就能做出平滑的展开与收起效果。
直接使用 height: 0 到 height: auto 无法触发CSS过渡动画,因为 auto 不是一个具体数值,浏览器无法计算中间过程。而 max-height 可以设置一个足够大的值(如 0 到 500px),从而让 transition 生效。
关键点:
一个简单的按钮 + 内容区域结构:
<div class="menu-item">
<button class="menu-toggle">点击展开菜单</button>
<div class="menu-content">
<p>这里是折叠菜单中的内容</p>
<p>可以是链接、列表或其他元素</p>
<div class="aritcle_card">
<a class="aritcle_card_img" href="/ai/1100">
<img src="https://img.php.cn/upload/ai_manual/000/000/000/175680092492385.png" alt="来画数字人|直播|">
</a>
<div class="aritcle_card_info">
<a href="/ai/1100">来画数字人|直播|</a>
<p>来画数字人自动化|直播|,无需请真人主播,即可实现24小时|直播|,无缝衔接各大|直播|平台。</p>
<div class="">
<img src="/static/images/card_xiazai.png" alt="来画数字人|直播|"&
gt;
<span>57</span>
</div>
</div>
<a href="/ai/1100" class="aritcle_card_btn">
<span>查看详情</span>
<img src="/static/images/cardxiayige-3.png" alt="来画数字人|直播|">
</a>
</div>
</div>
</div>核心样式如下:
.menu-content {
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease;
}
<p>.menu-item.active .menu-content {
max-height: 500px; /<em> 足够容纳内容的高度 </em>/
transition: max-height 0.3s ease;
}这里利用了父元素 .menu-item 是否有 active 类来控制子元素的显示状态。
添加简单脚本实现点击切换:
document.querySelector('.menu-toggle').addEventListener('click', function() {
document.querySelector('.menu-item').classList.toggle('active');
});点击按钮时,给外层 div 切换 active 类,从而触发动画。
max-height 值,太大可能动画时间过长,太小会截断内容opacity 或 transform 增强视觉效果基本上就这些。不复杂但容易忽略细节,比如忘记 overflow: hidden 就会导致内容溢出可见。掌握这个技巧后,你可以轻松在导航、FAQ、下拉面板等场景中使用。
以上就是如何在CSS初级项目中实现折叠菜单_transition和max-height隐藏显示的详细内容,更多请关注其它相关文章!
相关文章:
SteamMachine定价或为699美元 大家想入手吗?
msn官网入口地址手机版 msn官方网站手机最新链接
excel怎么制作工资条 excel快速生成工资条的方法
解决Tabulator日期时间排序问题的专业指南
包子漫画官方网站阅读入口-包子漫画在线漫画官网直达链接
word中如何让数字纵向排列_Word数字纵向排列方法
Win10怎么设置静态IP地址 Win10手动配置IP地址步骤【指南】
AO3官网镜像链接 Archive of Our Own同人文在线浏览
MAC如何将整个网页截长图_MAC使用Safari的导出为PDF或第三方工具
Excel Power Pivot如何处理XML数据源 构建高级数据模型
Python vgamepad库按键模拟:正确使用XUSB_BUTTON常量
《噬血代码2》新预告片发布 展示游戏剧情
使用Python高效删除Word宏并转换DOCM为DOCX格式
C++编译期如何执行复杂计算_C++模板元编程(TMP)技巧与应用
Highcharts 雷达图径向轴标签定制指南:利用多Y轴实现数值标注
steam官方网页快速访问 steam账号注册全流程
抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩
微信群消息显示延迟如何解决 微信群消息刷新优化方法
Pyrogram与g4f集成:异步编程实践与常见错误解决
在Socket.IO连接中实现Access Token自动更新与动态重连
一加 Nord 5 隐私权限异常_一加 Nord 5 系统安全优化
一加 14R 快充无反应_一加 14R 充电优化
jQuery Mask 插件中实现电话号码固定前导零的教程
优化HTML表单样式:解决输入框焦点跳动与元素间距问题
XML中包含HTML标签导致解析错误? 正确嵌入非XML数据的两种方法
京东京造J1和网易云音乐氧气真无线有什么不同_国产电商蓝牙耳机音质对比
TikTok搜索结果不显示如何解决 TikTok搜索刷新优化方法
Go与Ruby之间实现AES加密互通:CFB模式下的密钥长度匹配策略
163邮箱网页版入口导航平台 163邮箱网页版登录入口官网导航
铁路12306的积分有效期是多久_铁路12306积分有效期说明
海棠电脑版入口_通过电脑访问海棠官网阅读
J*aScript生成器_j*ascript异步迭代
汽水音乐在线版入口_汽水音乐网页播放手册
c++中的std::forward_list和std::list有什么不同_c++ forward_list与list区别分析
Lar*el Migration:重命名列后添加新列的正确操作顺序
Golang如何实现状态模式管理对象状态_Golang State模式实现技巧
Go语言HTML解析:利用Goquery精准获取指定元素内容
如何创建没有密码的Windows本地账户_跳过微软账户登录的技巧【教程】
Spring Boot内嵌服务器与J*a EE全栈特性:选择与部署策略
小红书怎么解除第三方平台绑定_小红书多平台登录解绑方法介绍
Safari怎么安装扩展程序 浏览器插件安装与管理方法【详解】
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
J*aScript中如何高效提取对象指定属性
文心一言怎样用批量生成做多版文案_文心一言用批量生成做多版文案【批量创作】
MAC的“快捷指令”怎么同步到iPhone_MAC利用iCloud同步所有设备的自动化指令
夸克浏览器图书入口 夸克手机浏览器阅读入口
蛙漫2台版漫画地址 Manwa2正版网页版链接
Basecamp怎样用留言钉固定重点_Basecamp用留言钉固定重点【重点标记】
Composer的 "licenses" 命令如何帮助你遵守开源协议_检查项目依赖的许可证合规性
内存检查:在VS Code中调试C++时的内存视图