为啥动画结束时动画目标值会重置?

Posted

技术标签:

【中文标题】为啥动画结束时动画目标值会重置?【英文标题】:Why are Animation target values reset when animation ends?为什么动画结束时动画目标值会重置? 【发布时间】:2021-09-08 16:33:39 【问题描述】:

我要做的是为光标在它上面时拥有的 React 组件的背景颜色创建从白色到黑色的过渡。

这是我要渲染的卡片的 JSX:

从“反应”导入反应;

function FeatureCard(icon, title, text: icon:any, title:string, text:string) 
    console.log(icon);
    return (
        <article className='border flex flex-col items-center py-4 px-2 text-center w-3/12 h-60 overflow-hidden group hover:animate-card-bg-animation'>
        </article>
    );


export default FeatureCard;

这是我为卡片添加动画和背景颜色关键帧的 tailwind.config.js 文件:

const colors = require('tailwindcss/colors')

module.exports = 
   purge: ['./src/**/*.js,jsx,ts,tsx', './public/index.html'],
    darkMode: false, // or 'media' or 'class'
    theme: 
      extend: 
        animation: 
          "card-bg-animation": 'card-bg-animation-kf 500ms linear',
        ,
        keyframes: 
      
          "card-bg-animation-kf": 
              from:backgroundColor:'#FFF',
              to:backgroundColor:'#000'
          

        ,
        backgroundImage: 
          'home-banner': "url('/src/img/bakbaner.png')"
        ,
        backgroundPosition: 
          'home-banner-position': '-200px 200px'
        
      ,
    ,
    variants: 
      extend: 
        animation: ['hover', 'focus', 'group-hover']
      ,
    ,
    plugins: [
      //require('@tailwindcss/forms'), // import tailwind forms
   ],
  

这以某种方式起作用,并且过渡已完成,但是在动画结束后,背景颜色立即重置为白色。为什么会这样?在我将光标移出卡片之前,它不应该一直保持黑色吗?

【问题讨论】:

【参考方案1】:

您可能必须将动画填充模式设置为“向前”以在最后保持动画状态。

animation-fill-mode: forwards;

即。在添加转发ti以下行

"card-bg-animation": 'card-bg-animation-kf 500ms linear forwards',

见:https://developer.mozilla.org/en-US/docs/Web/CSS/animation-fill-mode

【讨论】:

以上是关于为啥动画结束时动画目标值会重置?的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI 按钮点击重置 SpriteKit 动画 - 这是一个错误吗?

Unity重置动画帧位置转换状态时控制播放速度

Unity重置动画帧位置转换状态时控制播放速度

Unity重置动画帧位置转换状态时控制播放速度

我的 JS 动画重置了它的 marginTop,但不是它的 marginLeft

Swift - 按下按钮时,如果动画已经在播放,则将其重置为开始