新闻中心

css animation与visibility结合制作显示隐藏动画

2025-10-07
浏览次数:
返回列表
使用visibility与opacity结合可实现元素的淡入淡出动画,解决display:none无法触发动画的问题。通过animation控制visibility和opacity属性,在视觉隐藏的同时避免交互响应,常用于提示框、弹窗等需要平滑显示隐藏的场景。关键在于利用visibility控制元素是否参与渲染,opacity实现透明度变化,配合forwards保持动画终态,从而达到“真正隐藏”的效果。

css animation与visibility结合制作显示隐藏动画

使用 CSS animationvisibility 结合,可以实现更完整的显示隐藏动画效果。因为 display: none 无法触发过渡或动画,而 visibility 可以配合 opacity 实现淡入淡出的同时控制元素是否可被渲染,是制作“真正隐藏”动画的常用技巧。

visibility 与 opacity 配合原理

visibility: hidden 会让元素不可见但仍占据布局空间,visibility: visible 恢复可见。结合 opacity 的透明度变化,可以在视觉上实现淡入淡出动画,同时通过 visibility 控制元素是否参与交互和渲染。

关键点:

  • visibility 支持 transition 和 animation
  • 仅靠 opacity 淡出后元素仍可点击或占用空间
  • visibilityopacity 同时控制,才能实现“视觉消失 + 不占交互”的效果

使用 animation 制作淡入动画

定义一个从隐藏到显示的动画,开始时 opacityvisibility 均为隐藏状态,动画过程中改变这两个属性。

@keyframes fadeIn {
  from {
    opacity: 0;
    visibility: hidden;
  }
  to {
    opacity: 1;
    visibility: visible;
  }
}
<p>.element {
opacity: 0;
visibility: hidden;
animation: fadeIn 0.5s forwards;
}</p>

注意:forwards 确保动画结束后保持最终状态。这样元素在动画前完全隐藏,播放后正常显示。

制作淡出并隐藏的动画

当需要隐藏元素时,使用另一个动画将 opacity 降为 0,同时在最后设置 visibility: hidden

青泥AI 青泥AI

青泥学术AI写作辅助平台

青泥AI 360 查看详情 青泥AI
@keyframes fadeOut {
  from {
    opacity: 1;
    visibility: visible;
  }
  to {
    opacity: 0;
    visibility: hidden;
  }
}
<p>.hide {
animation: fadeOut 0.5s forwards;
}</p>

这个动画执行完成后,元素不仅看不见,也不会响应点击或影响布局感知(虽然仍占文档流位置,但已不可交互)。

完整示例:hover 显示/隐藏提示框

假设有一个按钮,鼠标悬停时显示提示文字,使用动画平滑出现和消失。

.tooltip {
  opacity: 0;
  visibility: hidden;
  background: #333;
  color: white;
  padding: 8px;
  border-radius: 4px;
  transition: opacity 0.3s ease;
}
<p>.container:hover .tooltip {
animation: fadeIn 0.3s forwards;
}</p><p>@keyframes fadeIn {
to {
opacity: 1;
visibility: visible;
}
}</p><p>.container .tooltip {
animation: fadeOut 0.3s forwards;
}</p><p>/<em> 实际中可通过 JS 添加/移除类来触发动画 </em>/</p>

更推荐用 JS 控制类名切换,避免 hover 时频繁重启动画。

基本上就这些。关键是理解 visibility 虽然不能像 display 那样彻底移除元素,但它能参与动画过程,结合 opacity 就能做出自然的显示隐藏动效。不复杂但容易忽略细节。

以上就是css animation与visibility结合制作显示隐藏动画的详细内容,更多请关注其它相关文章!


# 这两个  # 塘下网站建设开发  # 赞皇国内网站推广排名  # 视频营销推广电话多少  # 软文代写营销推广方案  # 南通通海码头网站建设  # 福田推广网站优化多少钱  # 线上营销推广的技巧  # 化工类网站推广怎么做好  # 萍乡网站推广推荐  # seo栏目技术  # 中文网  # css  # 相关文章  # 均为  # 就能  # 鼠标  # 选择器  # 两种类型  # 移除  # 中不  # ai  # js 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 深入理解J*a链表中的IPosition接口与使用  UC浏览器网页版登录入口官网 电脑版网址入口  Win11怎么开启省电模式_Win11电池节电模式自动开启  Windows10怎么开启存储感知 Windows10系统设置自动清理临时文件释放C盘空间【教程】  小米Civi 4录制视频过暗_小米Civi 4亮度优化  Golang如何实现微服务鉴权与权限控制_Golang微服务鉴权与权限管理实践  J*aScript教程:根据元素文本内容动态设置背景色  微信网页版官方入口教程 微信网页版网页版快速登录步骤  sublime如何优雅地处理行尾空格_sublime自动清理多余空白字符配置  在Runstone环境中高效处理TasteDive API的JSON数据  HTML空白字符处理机制:渲染、DOM与编码实践  Python异步编程实践:使用Binance API构建实时交易数据流  HTML转PPT成品工具有哪些?HTML网页转PPT成品工具大全  qq邮箱日历功能怎么用_创建日程与会议邀请的技巧  荣耀Play7TPro怎样在信息App置顶客服对话_iPhone荣耀Play7TPro信息App置顶客服对话【优先查看】  J*aScript Promise链中如何正确终止后续.then执行并处理错误  J*a TimerTask文件监控:HashMap状态管理与常见陷阱规避指南  J*aScript数据结构转换:将对象数组按类别分组  荣耀Play7T运行卡顿解决_荣耀Play7T性能优化  免费抖音短视频入口_抖音网页版短视频免费通道  PDO预处理语句中冒号的正确处理:区分SQL函数格式与命名占位符  必由学官网入口 必由学教师登录入口  理解Python模块与全局变量的作用域管理  在J*a中如何使用Stream.map转换元素_Stream映射操作解析  C++如何实现一个智能指针_手动实现C++ shared_ptr的引用计数功能  漫蛙网页登录入口 漫蛙漫画官方授权网址  解决深度学习模型训练初期异常高损失与完美验证准确率问题  windows10怎么查看硬盘序列号_windows10硬盘id查询命令  夸克浏览器网页版最新地址 夸克浏览器官方入口合集  照顾宝贝2小游戏点击立即在线玩  护手霜蹭到袖口上了如何清洗? 怎样避免留下一圈油印?  在J*a中如何使用BigDecimal进行高精度计算_BigDecimal类应用指南  苹果手机如何防止被恶意App追踪  Golang如何通过reflect获取匿名字段方法_Golang reflect匿名字段方法访问技巧  Golang如何使用const iota_Go iota常量计数器讲解  邮编格式怎么匹配地址_根据邮编格式快速匹配详细地址的技巧  QQ邮箱网页版邮箱入口 QQ邮箱官方登录平台  Pandas DataFrame:高效添加条件计算列  MAC如何将整个网页截长图_MAC使用Safari的导出为PDF或第三方工具  J*aScript中针对特定容器内图片动画的实现教程  J*aScript 字符串标签转换:使用正则表达式高效替换  品牌机怎么重装系统 联想/戴尔/惠普笔记本恢复出厂系统教程  期待已久:小米17 Ultra、小米首款NAS本月登场  PDF文件体积过大处理_PDF压缩技巧详解  Mac终端命令大全_Mac常用Terminal指令速查  铁路12306的积分有效期是多久_铁路12306积分有效期说明  支付宝碰一碰设备是REDMI手机吗 博主拆机辟谣:处理器、内存都不一样  虚幻5科幻题材ARPG大作遭取消!本是《奇异人生》厂商新作  sublime怎么预览Markdown渲染效果_Markdown Preview插件 for sublime教程  Word2013如何插入视频和音频媒体_Word2013媒体插入的多媒体支持 

搜索