使用纯 CSS 实现元素高度的过渡(不采用 max-height)

1. 前言

不知大家是否接触过元素高度的过渡,之前呢我是使用 CSS 加 JS 的方式来解决的,就是通过 JS 计算一下要过渡的元素的高度,然后自己给它加上 height 为某一数值。不知大家是如何解决的?

相信大家在做高度过渡时,都会在想为什么无法实现?就比如下面的代码。

<style>.details {position: absolute;top: 34px;left: 0px;border-radius: 8px;width: 170px;height: 0;background-color: rgb(112, 232, 253);overflow: hidden;transition: height 1s;}.container {position: relative;display: inline-block;padding: 4px 8px;border-radius: 8px;background-color: rgb(247, 119, 119);}.container:hover .details {height: auto;}
</style><div class="container"><span>hover 元素</span><div class="details">看看您错过了上个月 Google Open Source Live 活动中的哪些精彩内容。了解使用 Istio 观测您的服务、分析流经服务网格的请求等话题!</div>
</div>

实现的效果就是下面的这个样子

动画.gif

2. 实现

可以看到元素的高度无法从 0 过渡到 auto,因为 auto 不是一个数值。

下面我们会讨论一下 max-height 和 transform 来实现它有什么问题。

2.1. max-height 实现的问题

如果我们询问 ChatGPT 来解决这个问题,它大概率就会向你介绍这个方法,但是这个方法并不能很好的解决。下面是使用 max-height 实现的一个效果。

动画.gif

我们通过过渡 max-height 属性来实现这个效果,就是刚开始时过渡元素的 max-height 为 0,当鼠标触发 hover 时,元素的 max-height 属性则过渡到一个比较大的值,例如 1000px。

但是这样有一个缺点,就是鼠标移入时,我们会注意到鼠标刚移入时,元素高度过渡地特别快,感觉就是嗖地一下就完成了过渡;然后还有鼠标移除时,元素的高度并没有立即过渡,因为元素的 max-height 属性此时为 1000px,要从 1000px 过渡到元素的高度,这段距离还要花一段时间,所以感觉上就是元素延迟了一下,再进行过渡。

2.2. transform 实现的问题

当然上面的方法行不通,我们可以再让 ChatGPT 为我们提供其他的解决方法。这个方法大概率也会提供给你。

这个方法的原理就是使用 transform: scale(),即在 scale(0) 和 scale(1) 之间变化,但是这个会压缩元素的内容,如果你认为你能接受,那这个就不是问题。

2.3. grid 网格实现

其实解决元素高度的过渡也很简单,使用 display: grid 就能解决,相信大多数学前端的小伙伴对 grid 了解的并不多,为什么?可能是因为尚硅谷,黑马程序员的课程还没有更新相关的内容吧,哈哈~不知道大家是看尚硅谷还是看的黑马,我是看的 pink 入门的。

话不多说,实现的代码也很简单,下面就给大家完整的代码:

<style>.details {position: absolute;display: grid;grid-template-rows: 0fr;top: 34px;left: 0px;transition: all 2000ms;}.details .content {width: 170px;border-radius: 8px;background-color: rgb(112, 232, 253);overflow: hidden;  }.container {position: relative;display: inline-block;padding: 4px 8px;border-radius: 8px;background-color: rgb(247, 119, 119);}.container:hover .details {grid-template-rows: 1fr;}
</style><div class="container"><span>hover 元素</span><div class="details"><div class="content">看看您错过了上个月 Google Open Source Live 活动中的哪些精彩内容。了解使用 Istio 观测您的服务、分析流经服务网格的请求等话题!</div></div>
</div>

实现的效果如下:

动画.gif

当然还要注意一点,由于 details 中的元素是文字,所以需要加上一个子元素并具有 overflow: hidden 属性,亲测有效。

如果这篇文章对你有所帮助,还请点个小小的赞~ 谢谢~~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/470655.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于FPGA的ECG信号滤波与心率计算verilog实现,包含testbench

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 ECG信号的特点与噪声 4.2 FPGA在ECG信号处理中的应用 4.3 ECG信号滤波原理 4.4 心率计算原理 4.5 FPGA在ECG信号处理中的优势 5.算法完整程序工程 1.算法运行效果图预览 其RTL结构如…

每日五道java面试题之java基础篇(九)

目录&#xff1a; 第一题 你们项⽬如何排查JVM问题第二题 ⼀个对象从加载到JVM&#xff0c;再到被GC清除&#xff0c;都经历了什么过程&#xff1f;第三题 怎么确定⼀个对象到底是不是垃圾&#xff1f;第四题 JVM有哪些垃圾回收算法&#xff1f;第五题 什么是STW&#xff1f; 第…

行测考试怎么搜题找答案?用这5款神器就够了!!! #职场发展#媒体

以下软件拥有强大的搜索功能&#xff0c;能够快速找到与题目相关的资料和答案&#xff0c;让大学生们更容易理解和掌握知识点。 1.GT4T 可在14万个语言对间进行翻译。GT4T不仅能在任何窗口获得所选内容的翻译建议&#xff0c;还也可批量翻译Office、PDF、CAT、Markdown、Asci…

《合成孔径雷达成像算法与实现》FIgure6.20

% rho_r c/(2*Fr)而不是rho_r c/(2*Bw) % Hsrcf exp函数里忘记乘pi了 clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; …

免费听歌软件,音乐搜索APP:掌中的音乐宝库,为您的音乐生活增添色彩

引言 在数字音乐的浪潮中&#xff0c;我们通常会想到QQ音乐、虾米、网易云音乐等主流平台APP。然而&#xff0c;这些商业软件在为用户提供服务的同时&#xff0c;也不可避免地伴随着一些限制和不尽如人意的地方&#xff0c;如曲库有限、音质不尽如人意或广告干扰或会员才能听歌…

Ps:创建调色观察图层组

人们往往受图像内容、所用显示器、自身对色彩敏感程度等的影响&#xff0c;无法准确地把握一张照片的明暗关系或色彩关系&#xff0c;因此导致修图时无方向、不精准。 如果通过数字化的方式建立观察图层&#xff08;组&#xff09;来辅助我们客观地分析照片&#xff0c;从而可以…

Linux实用指令

Linux实用指令 1.指定运行级别 运行级别说明&#xff1a; 0 &#xff1a;关机 1 &#xff1a;单用户【找回丢失密码】 2&#xff1a;多用户状态没有网络服务 3&#xff1a;多用户状态有网络服务 4&#xff1a;系统未使用保留给用户 5&#xff1a;图形界面 6&#xff1a;系统重…

Redis缓存穿透、缓存击穿、缓存雪崩

一、缓存穿透 缓存穿透是指查询一个不存在的数据&#xff0c;mysql查询不到数据也不会直接写入缓存&#xff0c;就会导致每次请求都查数据库 比如一个get请求&#xff1a;api/getById/1 解决方案一&#xff1a;缓存空数据&#xff0c;查询返回的数据为空&#xff0c;仍把这个空…

如何创建和填写 PDF 表单,简化您的文档工作流

阅读本文&#xff0c;了解如何在开源办公套件 ONLYOFFICE 中创建和填写 PDF 表单。 ONLYOFFICE表单发展小史 ONLYOFFICE 表单首个版本发布于2022年1月18日&#xff0c;是 ONLYOFFICE 版本 7.0 更新的一部分。 您可以使用 ONLYOFFICE 表单&#xff0c;创建各种类型的模板文档&a…

力扣例题----二叉树

文章目录 1. 100.相同的树2. 572. 另一颗树的子树3. 266.翻转二叉树4. LCR 175.计算二叉树的深度5. 110.平衡二叉树6. 101. 对称二叉树7. 牛客题目&#xff1a;KY11 二叉树遍历8. 102.二叉树的层序遍历9. 236.二叉树的最近公共祖先10. 105.根据前序和中序构造一棵二叉树11. 106…

STM32物联网(ESP-01S模块及STM32和ESP-01S通信方式介绍)

文章目录 前言一、ESP-01S模块介绍二、STM32和ESP-01S通信方式介绍三、什么是AT指令四、创建基础工程总结 前言 本篇文章我们开始正式进入STM32物联网的专栏&#xff0c;在这个专栏中将会带大家学习使用STM32进行联网&#xff0c;联网模块的话主要就是使用到了ESP-01S WIFI模块…

ChatGPT重大升级:能自动记住用户的习惯和喜好,用户有权决定是否共享数据给OpenAI

OpenAI刚刚宣布了ChatGPT的一项激动人心的更新&#xff01; OpenAI在ChatGPT中新加了记忆功能和用户控制选项&#xff0c;这意味着GPT能够在与用户的互动中记住之前的对话内容&#xff0c;并利用这些信息在后续的交谈中提供更加相关和定制化的回答。 这一功能目前正处于测试阶…