惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
A
Arctic Wolf
S
Security Affairs
O
OpenAI News
SecWiki News
SecWiki News
TaoSecurity Blog
TaoSecurity Blog
H
Heimdal Security Blog
T
Threat Research - Cisco Blogs
Hacker News: Ask HN
Hacker News: Ask HN
N
News | PayPal Newsroom
Google Online Security Blog
Google Online Security Blog
C
Cisco Blogs
The Hacker News
The Hacker News
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
P
Privacy International News Feed
V
Vulnerabilities – Threatpost
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
T
Tenable Blog
T
The Exploit Database - CXSecurity.com
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Spread Privacy
Spread Privacy
人人都是产品经理
人人都是产品经理
www.infosecurity-magazine.com
www.infosecurity-magazine.com
V2EX - 技术
V2EX - 技术
L
LINUX DO - 最新话题
The GitHub Blog
The GitHub Blog
博客园 - 三生石上(FineUI控件)
T
The Blog of Author Tim Ferriss
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
Visual Studio Blog
The Cloudflare Blog
N
News and Events Feed by Topic
量子位
Google DeepMind News
Google DeepMind News
Application and Cybersecurity Blog
Application and Cybersecurity Blog
L
LINUX DO - 热门话题
P
Palo Alto Networks Blog
Stack Overflow Blog
Stack Overflow Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Attack and Defense Labs
Attack and Defense Labs
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Hacker News - Newest:
Hacker News - Newest: "LLM"
Apple Machine Learning Research
Apple Machine Learning Research
The Register - Security
The Register - Security
Microsoft Security Blog
Microsoft Security Blog
Know Your Adversary
Know Your Adversary
Webroot Blog
Webroot Blog

博客园 - 码间留白

uniapp项目适配鸿蒙端没有自定义基座,调试和打包怎么办? 鸿蒙纯血系统适配实战记录:uView + Vue3 的 uni-app 项目适配鸿蒙 NEXT,一天搞定主功能运行到鸿蒙纯血系统 AI辅助前端开发实战指南:高效落地、避坑沉淀全流程 uni-app 集成网易云信通话插件:首页通话监听一直只有第一次有日志?从监听丢失到重复上报的完整治理之路 即时通信 IM 踩坑实录:群主拉人入群后无法收消息?一文讲透 10007 错误码 AI时代插件开发新玩法,分分钟抽离封装插件,你需要做的只是发布到插件市场 PhotoShop CS6在win11系统中界面字体很小,通过兼容性设置强制高 DPI 缩放即可解决 不会后端不用愁,Strapi解你忧——使用Qoder生成前端开发框架,技术栈React18 + Vite + ReactRouter6 + Axios + vw 适配 + Ant Design Mobile + Zustand + Strapi5 不会后端不用愁,Strapi解你忧——Strapi后台数据表创建及API联调测试,实现查询文章及关联的分类、标签、评论等表连接查询 不会后端不用愁,Strapi解你忧——搭建博客系统常用数据表设计 windows11系统如何安装多个版本的node,新旧项目切换再也不需要卸载重装了 不会后端不用愁,Strapi解你忧——前端使用Strapi就能实现常见的数据增删查改,分页、排序、模糊查询、时间范围等,不要后端也能自己建站 不会后端不用愁,Strapi解你忧——Windows 11 本地完整部署 Strapi + MySQL 8 实操攻略,从下载到配置启动全指南 不会后端不用愁,Strapi解你忧——Strapi v5.4设置中文语言展示 win11电脑浏览器无法上网但微信正常使用,通常是因为‌DNS解析失败‌,手动设置可靠的公共DNS服务器地址来解决问题 高效能CI/CD流水线设计:Jenkins与Docker的7个关键优化点 从零搭建 Docker + Jenkins CI/CD 流水线:实现项目自动化构建与部署 AI辅助开发——阿里Qoder重构vue2项目到vue3后继续对项目页面加载速度进行优化 vue3项目本地环境网路请求初始连接过久导致接口请求时间过长的问题处理 微信小程序内嵌vue项目实现页面自定义分享完整示例代码 JavaScript 数组高阶用法汇总(含浏览器+微信小程序WebView支持) 京东小程序报错APP-SERVICE-SDK:setStorageSync:fail vue3+ts项目自定义全局函数调用正常但IDE报异常类型ComponentPublicInstance上不存在属性“$showLoading" vue项目实现Tab页面触底上拉切换下个Tab vue3+ts实现页面滚动位置的保存及恢复 到底是用vue2还是vue3好?
css3过渡效果如何处理高度不确定的动态内容
码间留白 · 2025-11-05 · via 博客园 - 码间留白

如下图,要实现一个超出一定高度默认折叠的div层,下边带有展开/折叠按钮,点击按钮实现展开/折叠。

image

 原来的代码:

.attrTable {
      border-right: 1px solid #f5f5f5;
      border-bottom: 1px solid #f5f5f5;
      height: auto;
      transition: height 1s ease;

      &.collapse {
        height: 400px;
        overflow: hidden;
      }
}

这种写法是不会生效的,由于div层的高度是auto,折叠后的高度是400px,浏览器无法计算从auto到400px的过渡处理。当然也可以在获取数据并渲染之后实时计算具体高度,但这个就太复杂了。

有效的解决方案就是使用max-height代替height,代码如下:

.attrTable {
  border-right: 1px solid #f5f5f5;
  border-bottom: 1px solid #f5f5f5;
  height: auto; /* 保持动态高度 */
  max-height: 5000px; /* 展开时上限(远大于实际动态高度) */
  overflow: visible; /* 展开时显示全部内容 */
  transition: max-height 1s ease; /* 过渡目标改为 max-height */

  &.collapse {
    max-height: 400px; /* 折叠时固定上限 */
    overflow: hidden; /* 隐藏超出部分 */
  }
}

如上,给div层设置一个很大的max-height,使用max-height来作为动态效果触发的样式,就能实现展开/折叠的过渡效果了。

关键说明:
1. max-height 取值技巧:
展开状态的 max-height 要设为 “肯定大于动态高度” 的数值(如 5000px,根据你的实际场景调整,只要不小于最大可能高度即可)。
折叠状态的 max-height 保持你要的 400px,实现 “固定高度折叠”。
2. 为什么生效:
展开时:max-height: 5000px(实际高度由内容决定,动态自适应),overflow: visible 显示全部内容。
折叠时:max-height: 400px,超出部分被 overflow: hidden 隐藏,且 max-height 从 5000px → 400px 是 “数值→数值” 的过渡,浏览器能正常计算动画。
3. 优化体验(可选):
如果动态高度很小(比如不到 400px),折叠时可能看不到过渡效果,可给展开状态加最小高度兜底:

.attrTable {
  /* 其他样式不变 */
  min-height: 100px; /* 确保展开时至少有一定高度,过渡更明显 */
}