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

使用 CSS animation 与 visibility 结合,可以实现更完整的显示隐藏动画效果。因为 display: none 无法触发过渡或动画,而 visibility 可以配合 opacity 实现淡入淡出的同时控制元素是否可被渲染,是制作“真正隐藏”动画的常用技巧。
visibility 与 opacity 配合原理
visibility: hidden 会让元素不可见但仍占据布局空间,visibility: visible 恢复可见。结合 opacity 的透明度变化,可以在视觉上实现淡入淡出动画,同时通过 visibility 控制元素是否参与交互和渲染。
关键点:
visibility 支持 transition 和 animation仅靠 opacity 淡出后元素仍可点击或占用空间将 visibility 和 opacity 同时控制,才能实现“视觉消失 + 不占交互”的效果
使用 animation 制作淡入动画
定义一个从隐藏到显示的动画,开始时 opacity 和 visibility 均为隐藏状态,动画过程中改变这两个属性。
立即学习“前端免费学习笔记(深入)”;
@keyframes fadeIn { from { opacity: 0; visibility: hidden; } to { opacity: 1; visibility: visible; }}.element {opacity: 0;visibility: hidden;animation: fadeIn 0.5s forwards;}
注意:forwards 确保动画结束后保持最终状态。这样元素在动画前完全隐藏,播放后正常显示。
制作淡出并隐藏的动画
当需要隐藏元素时,使用另一个动画将 opacity 降为 0,同时在最后设置 visibility: hidden。
稿定抠图
AI自动消除图片背景
76 查看详情
@keyframes fadeOut { from { opacity: 1; visibility: visible; } to { opacity: 0; visibility: hidden; }}.hide {animation: fadeOut 0.5s forwards;}
这个动画执行完成后,元素不仅看不见,也不会响应点击或影响布局感知(虽然仍占文档流位置,但已不可交互)。
完整示例:hover 显示/隐藏提示框
假设有一个按钮,鼠标悬停时显示提示文字,使用动画平滑出现和消失。
.tooltip { opacity: 0; visibility: hidden; background: #333; color: white; padding: 8px; border-radius: 4px; transition: opacity 0.3s ease;}.container:hover .tooltip {animation: fadeIn 0.3s forwards;}
@keyframes fadeIn {to {opacity: 1;visibility: visible;}}
.container .tooltip {animation: fadeOut 0.3s forwards;}
/ 实际中可通过 JS 添加/移除类来触发动画 /
更推荐用 JS 控制类名切换,避免 hover 时频繁重启动画。
基本上就这些。关键是理解 visibility 虽然不能像 display 那样彻底移除元素,但它能参与动画过程,结合 opacity 就能做出自然的显示隐藏动效。不复杂但容易忽略细节。
以上就是css animation与visibility结合制作显示隐藏动画的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1026145.html
微信扫一扫
支付宝扫一扫