如何让height:auto实现transition过渡效果

threekingdoms.txt中文三国演义下载及实现人物出场统计 threekingdoms.txt全文下载:https://python123.io/resources/pye/threekingdoms.txt CalThreeKingdomsV1.py: #CalThreeKingdomsV1.py import jieba txt = open("threekingdoms.txt", "r", encoding = "utf-8").read() words = jieba.lcut(txt) counts = {} for word in words: 阅读详情
AI摘要

本文探讨了在CSS中实现折叠动画遇到的问题,当设置height:auto时,transition动画无法生效。提出了两种解决方案:1) 使用max-height替代height,但需要预知最大高度;2) 通过JavaScript动态计算元素高度,确保动画精确。每种方法都有其优缺点,适用于不同的场景需求。

在这里插入图片描述

正常设置折叠动画效果,展开height: auto,给定一个折叠height(例如height: 30px),然后使用transition动画效果实现,例如:

.div {
	height: auto;
	overflow: hidden;
	transition: height .3s;
}
.div.collapse {
	height: 30px;
}

 写完会发现,transition动画效果并未生效。主要原因是设置height:auto,transition则需要具体的高度值。


常规会有以下几种解决方案(可根据具体场景使用):


 1. 使用max-height方式

.div {
	max-height: 120px;
	overflow: hidden;
	transition: max-height .3s;
}
.div.collapse {
	max-height: 30px;
}

        优点:使用简单
        缺点:需要了解最大的高度值,这个值即要满足最大高度,又不能设置太大。对于一些动态渲染的部分,无法感知具体的高度,具体值,效果会偏差较大

2. 通过JS计算元素高度

        2.1  首次渲染JS获取元素展开高度

.div {
	overflow: hidden;
	transition: height .3s;
}
// 缓存元素折叠高度
let minHeight = 30
// 缓存元素展开高度
let maxHeight = 0
const el = document.getElementById('div')
// 避免初始化折叠效果,无法获取最大高度
el.style.height = 'auto'
// 获取高度,并赋值给展开高度
maxHeight = el.getBoundingClientRect().height

// 如果是折叠效果
if (collapse) {
    el.style.height = `${minHeight}px`
} else {
    el.style.height = `${maxHeight}px`
}

        优点: 精确获取元素高度
        缺点: a. 元素及子元素不能更改高度;b. 如果刚进入是折叠效果,则需要先展开后计算出高度后再折叠,会有闪烁的效果

        2.2 JS动态获取元素高度

.div {
	overflow: hidden;
	transition: height .3s;
}
const el = document.getElementById('div')
// 克隆当前元素
const cloneEl = el.cloneNode(true)
// 获取当前元素的宽度,避免全局添加,宽度不一致,高度计算偏差
const width = el.getBoundingClientRect().width
cloneEl.style = `width: ${width}px; height: initial; overflow: initial; visibility: hidden;`
// 全局渲染克隆元素
document.body.appendChild(cloneEl)
// 获取克隆元素的高度(与当前元素高度一致)
let height = cloneEl.getBoundingClientRect().height
// 移除克隆元素
document.body.removeChild(cloneEl)
if (!collapse && height > 30) height = 30
el.style.height = `${height}px`

        优点:精确计算出元素的高度,可动态更改当前元素属性和添加更改子元素

        缺点:需要克隆一个元素,会有渲染性能损耗(如果数量小和折叠不频繁,可忽略其性能问题)

ESP32-S3驱动PCA9685模块:I2C扩展16路舵机控制实战指南 本文提供了ESP32-S3通过I2C总线驱动PCA9685模块扩展16路PWM输出的完整实战指南。详细解析了PCA9685模块原理、硬件连接、I2C地址配置,并给出了核心驱动代码与角度控制函数,帮助开发者解决微控制器PWM引脚不足的问题,轻松实现多路舵机控制。 阅读详情

相关推荐

DDS器件原理与应用(AD9833 AD9834)

是DDS的核心组成部分,用于实现相位的累加,并输出相应的幅值。相位累加器由M位宽加法器和M位宽寄存器组成,通过时钟控制,将上一次累加结果反馈到加法器输入端实现累加功能,从而使每个时钟周期内的相位递增数为,并取相位累加结果作为地址输出给ROM查找表部分。DDS的相位信息被存放在累加寄存器中,虽然幅值和相位不是线性关系,但寄存器累加值和相位可以是线性关系,很容易用寄存器的累加值表达相位信息。

m0_49968063的博客 6445

动态高度过渡动画

动态高度过渡动画 先看一个demo 本质想的想法是通过给元素切换它的.up,.down类,让它实现展开、合上的动画 { height: unset; transition: all 0.3s linear; will-change: height; &.up { height: 0; } &.down { height: unset; } } 很奇怪,明明给height属性设置了...

马优晨 1918

GSview5.0安装步骤及问题

GSview5.0安装步骤及问题安装步骤遇到的问题 尝试过很多对图片去白边的方法,感觉最好用最有效的还是用GSview比较好操作。本文针对gsview安装及安装过程中踩过的坑记录下来。 安装步骤 在官网下载gsv50w64.exe(或32位的),直接双击安装即可。 安装Ghostscript;注意:GSview5.0不支持最新版的Ghostscript9.54,这里用到是9.27的版本可以在Github中找到,下载gs927w64.exe,一定要安装在GSview的安装目录Ghostgum下 Gho

LilianLYN的博客 1万+

Transition height from 0 to auto

CSS3的transition可以作用于大部分属性值为数值之类的属性,包括width、height、font-size、color、opacity等。但是将transition应用于 height:auto;时 ,浏览器会识别height值为0,因此无法直接从 height: 0; 过渡到 height: auto; 。 一种简单的方法是,将过渡应用于max-height属性,通

果果的小窝 2019

智能体在车联网中的应用:第31天 基于RLlib的多智能体PPO实战:MAPPO算法解决simple_spread合作任务

本文介绍了如何利用RLlib框架实现多智能体强化学习算法MAPPO,解决simple_spread任务。首先分析了RLlib的架构设计理念和多智能体支持特性,包括策略映射、环境包装等核心组件。然后详细解析了simple_spread环境的任务定义、观察空间和奖励函数设计。最后回顾了MAPPO算法原理,说明其如何在RLlib中实现集中式训练与分布式执行的CTDE范式。文章提供了完整的安装指南和环境配置方法,帮助读者快速搭建多智能体强化学习实验环境。

IT深耕十余载,大道之简 1333

从Axure转Figma?这篇编组、缩放、圆角、评论的对比指南帮你无缝切换

本文为资深Axure设计师提供了向Figma无缝迁移的实战指南。文章深度对比了编组、缩放、圆角、评论等核心操作,重点解析了Figma独特的自动布局、组件系统和实时协作功能,旨在帮助用户快速适应新工具,实现设计思维与工作效率的跃迁。

tomato的博客 851

height为auto,展开时,transition失效的解决方案

分为三种情况 知道展开的最大高度,并且展开区域影响其他元素布局 解决方案:设置max-height为具体数值,百分比,px均可 知道展开的最大高度,并且展开区域不影响其他元素布局 解决方案:设置position为absolute,并且max-height为具体数值,百分比,px均可 不知道展开的最大高度 解决方案:借助js,获取展开后的高度,再设置高度 ...

qq_16189233的博客 1566

数电实训:万年历

万年历

Lmyccq的博客 1万+

设置 height: auto 却无法触发 transition 动画的解决方案

当 `height: auto` 时,设置 `transition` 是无法触发动画的,CSS 需要知道具体的 height 值,因此引申其他解决方案: - 方案一:使用 `transform` 的 `scaleY`,去放大缩小。 - 缺点 - 内容会变形 - 会占据原来的内容尺寸 - 方案二:设置 `max-height` - 缺点 - 随着内容的增加,需要重新考虑设置 `max-height` 的值 - `transition-timing` 是作用在 `max-height` 上

YopenLang的博客 4463

Clion编译stm32cube初始化工程时non constant or forward reference address expression for section .ARM.extab报错

相信应该有同学在看了稚晖君关于clion开发stm32的文章之后也想在自己PC上实现“优雅の嵌入式开发”遇到和我类似的问题。他的文章是22年写的,我个人猜测应当是版本更新导致的不适配。意思就是说 READONLY 只能在gcc11以后的版本中使用,gcc10及以前的版本将无法正确识别,也就有如下错误。或者就可以将gcc升级至最新的版本。记得在clion工具链中修改c,cpp编译器的位置。可以将文本括号中的 READONLY 全部删除。当时由于没有注意到这行注释导致在这里卡了好久。

2301_77256849的博客 2512

玩转Docker | 使用Docker部署MediaCMS内容管理系统

玩转Docker | 使用Docker部署MediaCMS内容管理系统

qq_59334230的博客 2918

height:auto 时 transition动画失效

必须设置height为一个具体值时transition动画才会生效,但是ul-wrapper中的数据需要动态渲染,并不知道展开后的准确高度!通过套一个父盒子,并在父盒子上设置max-height来实现transition动画,展开后的高度通过js动态获取。点击收起时ul-wrapper高度设置为100px,展开时高度设置为auto,同时设置展开,收起的动画transition: all 3s;此时,由于ul-wrapper-parent展开,收起时的max-height都是具体值,展开动画生效。

风小猪的博客 1495

DaVinci Developer和DaVinci Configurator:AutoSAR开发与配置工具

a. 组件创建:DaVinci Developer允许开发人员创建不同类型的AutoSAR软件组件,如应用软件组件(Application Software Component,SWC)、基础软件组件(Basic Software Component,BSWC)等。除了以上功能,DaVinci Developer和DaVinci Configurator还提供了丰富的文档和代码生成功能,以支持开发人员和配置人员进行文档编写、代码生成和文档浏览等任务。用户可以根据具体需求对软件组件进行灵活的配置。

HmoaAmp的博客 2262

css3设置height:auto过渡属性失效问题

解决办法:将前后样式中的height转成max-height。且转变后的height远大于转变前的即可解决。🟣 前端2026最新【持续更新】→。🟢 前端0到1【持续更新】→。🔵 前端进阶【持续更新】→。🔴 AI最新学习资料 →。

zhang1339435196的博客 3431

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

height transition

注意:当height设置为0或者auto时,transition是不生效的,如何实现简单的展开效果 tricks:利用maxHeight属性 .description { max-height: 0; transition: max-height 1s; overflow: hidden; } .description.active { max-height: 300px; } ...

kaqiinono的技术小窝 495

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

css height为auto的transition过渡效果--max-height

手风琴效果,展开时根据内容自适应高度即从height: (any)px; 变化到 height: auto; 此时设置transition不会产生效果, 原因是 transition 无法将 ()px 变为不是具体数值的 auto 解决方法: 设置max-height,max-height尽可能最大,transition也要设置max-height; 我一开始写的height,一直没有效果。 <div class="motxt" @click.stop="getmorerule()">更多规则&

weixin_45533739的博客 3016

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

height: auto; 会使transition失效

height: auto; 会使transition失效

dfQ_Qjb的博客 2561

如何为不定高度(height:auto)的元素添加CSS3 transition-property:height 动画

但一个元素不设置height时,它的默认值是 auto,浏览器会计算出实际的高度。 但如果想给一个 height:auto 的块级元素的高度添加 CSS3 动画时,该怎么办呢? 从 MDN的可以查到CSS 支持动画的属性中的 height 属性如下: height:yes, as alength,percentageor calc(); // 当 height 的值是 ...

a949199259的博客 530

css动画height为auto无法触发transition

使用max-height属性来进行代替(有一定缺陷) 原理:通过一个过大的maxHeight来渐变 这里是vue的style写法 :style="{height: groupExpandFlag ? 'auto': '60px', maxHeight: groupExpandFlag ? '500px': '60px', transition: 'max-height .3s ease-i...

A13330069275的博客 3712

Auto值的CSS3 Transition解决方案

今天在准备明天的课堂案例时,遇到了Auto值的Transition Bug问题,这里的解决方案是我们需要尽可能的绕过auto值,这里我们可以通过使用max-height绕过height:auto值。

whqet 8969

display:none无transition动画过渡;height:auto的transition动画;

想实现类似bootstrap中collapse的功能。设置过渡动画的时候发现下面两个问题。     一、使用display:none和display:block是不会有transition动画效果的。      目前display属性不受支持。猜想原因是因为缓动是基于数值和时间的计算(长度,百分比,角度,颜色也能转换为数值)。而display是一个尴尬的属性,该计算什么值实现?

u010267996的博客 1万+

css height=auto不响应transition

.box{ height: 0; transition: all 0.5s; }.box:hover{ height: auto; }div中有元素撑开,但是auto不会响应transition,但是如果使用定高,里面文字有长有短,短的时候空白就不好看。解决办法使用max-height属性.box{ max-height: 0; transition: al

weetch的博客 1764

css中width:auto的transition过渡

遇到个问题,利用css的transition过渡做折叠时,height为auto导致过渡不生效! 这里我们用scrollHeight去获取并设置div的高度去解决问题,首先我们先来看一下scrollHeight属性 scrollHeight <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Document</title> </head>

qq_52070860的博客 1510

【css】transition对height:auto无效的解决办法

CSS3的transition可以作用于大部分属性值为数值之类的属性,包括等。但是将transition应用于时,浏览器会识别height值为0,因此无法直接从height: 0;过渡到;。

hzxOnlineOk的博客 1438

height高度为auto的transition过渡无效解决

height有一方是auto则无效,动态获取变化后 <div class="concept-analysis" > <a-card size="small" class="at-card" v-for="(item,index) in testData" :key="index" @click="openCard(index)" :style="{height:cardFlag===index ? groupAutoHeight :'388px'}"> </a-ca

MELANCHOLY ❤ ◁ ❚❚ ▷ 2558

关于transition让height:auto 失效的问题

&lt;body&gt; &lt;script typet="text/javascript" src="http://libs.baidu.com/jquery/1.9.1/jquery.min.js"&gt;&lt;/script&gt; &lt;style type="text/css"&gt; .oh{overflow:hidden;} .box{ max-

有酒醉三生丶 6113
上一篇: 发布npm包流程说明
echo008
博客等级 码龄11年 16粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值