css animation 动画如何保留动画结束后的状态 animation-fill-mode: forwards

2023-11-23 10:45

本文主要是介绍css animation 动画如何保留动画结束后的状态 animation-fill-mode: forwards,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

css animation 动画如何保留动画结束后的状态 animation-fill-mode: forwards

一、问题描述

在做一个弹窗动画提示的时候遇到了一个问题:
在动画结束的时候,移除元素时会有闪一下的问题,像这样,有残留的痕迹。
在这里插入图片描述
我的动画结尾是这样的:

  from {-webkit-transform: translate3d(0, 0, 0) translateX(-50%);transform: translate3d(0, 0, 0) translateX(-50%);}to {visibility: hidden;opacity: 0;-webkit-transform: translate3d(0, -100%, 0) translateX(-50%);transform: translate3d(0, -100%, 0) translateX(-50%);}

可以看到结尾的时候已经是 hidden 的状态了,按理说应该不会再显示原来的状态。

二、原因和解决

其实这是里少了一个定义动画的属性,定义动画结束之后是保留动画后的状态,还是回到原来的状态,默认是恢复到原来的状态。
像上面这个例子,在动画结束的时候就立即恢复到原来可见的状态,js 来不及移除。用 js 卡点删除元素是无法实现很丝滑的效果的。

.slideOutUpPopMessage {-webkit-animation-name: slideOutUpPopMessage;animation-name: slideOutUpPopMessage;animation-fill-mode: forwards;
}

需要在动画的 class 上添加这样一个属性: animation-fill-mode ,意思是结束之后保留哪个状态。

forwars 就是保留动画结束后的状态,比如上面例子结束之后元素处于 hidden 的状态,这样即使没有用 js 移除这个元素,它也是不可见的。
这样在之后任意时间移除它就可以了。

在这里插入图片描述

三、完整 css

使用的时候:

  1. 元素提前放入 .animated .animated-fase
  2. 在显示的时候添加 .slideInDownPopMessage
  3. 元素显示之后删除 .slideInDownPopMessage
  4. 元素正常显示 n 秒,n 秒过后添加 .slideOutUpPopMessage
  5. 在元素消失之后再用 js 移除当前元素即可。
.animated{animation-duration: .51s;
}.animated-fast{animation-duration: .15s;
}@-webkit-keyframes slideInDownPopMessage {from {-webkit-transform: translate3d(0, -100%, 0) translateX(-50%);transform: translate3d(0, -100%, 0) translateX(-50%);visibility: visible;opacity: 0;}to {-webkit-transform: translate3d(0, 0, 0) translateX(-50%);transform: translate3d(0, 0, 0) translateX(-50%);visibility: visible;opacity: 1;}
}@keyframes slideInDownPopMessage {from {-webkit-transform: translate3d(0, -100%, 0) translateX(-50%);transform: translate3d(0, -100%, 0) translateX(-50%);visibility: visible;opacity: 0;}to {-webkit-transform: translate3d(0, 0, 0) translateX(-50%);transform: translate3d(0, 0, 0) translateX(-50%);visibility: visible;opacity: 1;}
}.slideInDownPopMessage {-webkit-animation-name: slideInDownPopMessage;animation-name: slideInDownPopMessage;
}@-webkit-keyframes slideOutUpPopMessage {from {-webkit-transform: translate3d(0, 0, 0) translateX(-50%);transform: translate3d(0, 0, 0) translateX(-50%);}to {visibility: hidden;opacity: 0;-webkit-transform: translate3d(0, -100%, 0) translateX(-50%);transform: translate3d(0, -100%, 0) translateX(-50%);}
}@keyframes slideOutUpPopMessage {from {-webkit-transform: translate3d(0, 0, 0) translateX(-50%);transform: translate3d(0, 0, 0) translateX(-50%);}to {visibility: hidden;opacity: 0;-webkit-transform: translate3d(0, -100%, 0) translateX(-50%);transform: translate3d(0, -100%, 0) translateX(-50%);}
}.slideOutUpPopMessage {-webkit-animation-name: slideOutUpPopMessage;animation-name: slideOutUpPopMessage;animation-fill-mode: forwards;
}

这篇关于css animation 动画如何保留动画结束后的状态 animation-fill-mode: forwards的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/417381

相关文章

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

css渐变色背景|<gradient示例详解

《css渐变色背景|<gradient示例详解》CSS渐变是一种从一种颜色平滑过渡到另一种颜色的效果,可以作为元素的背景,它包括线性渐变、径向渐变和锥形渐变,本文介绍css渐变色背景|<gradien... 使用渐变色作为背景可以直接将渐China编程变色用作元素的背景,可以看做是一种特殊的背景图片。(是作为背

Java实现状态模式的示例代码

《Java实现状态模式的示例代码》状态模式是一种行为型设计模式,允许对象根据其内部状态改变行为,本文主要介绍了Java实现状态模式的示例代码,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来... 目录一、简介1、定义2、状态模式的结构二、Java实现案例1、电灯开关状态案例2、番茄工作法状态案例

通过prometheus监控Tomcat运行状态的操作流程

《通过prometheus监控Tomcat运行状态的操作流程》文章介绍了如何安装和配置Tomcat,并使用Prometheus和TomcatExporter来监控Tomcat的运行状态,文章详细讲解了... 目录Tomcat安装配置以及prometheus监控Tomcat一. 安装并配置tomcat1、安装

CSS自定义浏览器滚动条样式完整代码

《CSS自定义浏览器滚动条样式完整代码》:本文主要介绍了如何使用CSS自定义浏览器滚动条的样式,包括隐藏滚动条的角落、设置滚动条的基本样式、轨道样式和滑块样式,并提供了完整的CSS代码示例,通过这些技巧,你可以为你的网站添加个性化的滚动条样式,从而提升用户体验,详细内容请阅读本文,希望能对你有所帮助...

MySQL报错sql_mode=only_full_group_by的问题解决

《MySQL报错sql_mode=only_full_group_by的问题解决》本文主要介绍了MySQL报错sql_mode=only_full_group_by的问题解决,文中通过示例代码介绍的非... 目录报错信息DataGrip 报错还原Navicat 报错还原报错原因解决方案查看当前 sql mo

css实现图片旋转功能

《css实现图片旋转功能》:本文主要介绍了四种CSS变换效果:图片旋转90度、水平翻转、垂直翻转,并附带了相应的代码示例,详细内容请阅读本文,希望能对你有所帮助... 一 css实现图片旋转90度.icon{ -moz-transform:rotate(-90deg); -webkit-transfo

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

vue基于ElementUI动态设置表格高度的3种方法

《vue基于ElementUI动态设置表格高度的3种方法》ElementUI+vue动态设置表格高度的几种方法,抛砖引玉,还有其它方法动态设置表格高度,大家可以开动脑筋... 方法一、css + js的形式这个方法需要在表格外层设置一个div,原理是将表格的高度设置成外层div的高度,所以外层的div需要

Vue项目中Element UI组件未注册的问题原因及解决方法

《Vue项目中ElementUI组件未注册的问题原因及解决方法》在Vue项目中使用ElementUI组件库时,开发者可能会遇到一些常见问题,例如组件未正确注册导致的警告或错误,本文将详细探讨这些问题... 目录引言一、问题背景1.1 错误信息分析1.2 问题原因二、解决方法2.1 全局引入 Element