【问题标题】:Animations not working with Emotion Library动画不适用于情感库
【发布时间】:2020-05-27 16:45:48
【问题描述】:

相关代码:

const fadeInRight = keyframes`
    from {
        opacity:0;
        transform: translatex(-200px);
    }
    to {
        opacity:1;
        transform: translatex(0);
    }
`;
const bubbleFadeRight = css`
  animation: ${fadeInRight} 2s infinite;
`;

//check condition and set bubbleFade = bubbleFadeLeft or bubbleFadeRight
const bubbleFade = { bubbleFadeRight };

function App() {
  return (
    <div>
      {/* Not working: */}
      <div css={bubbleFade}>I blink!</div>

      {/* Working: */}
      <div
        css={css`
        // animation: ${bubbleFade}
      `}
      >
        I blink!
      </div>
    </div>
  );
}

const rootElement = document.getElementById("root");
ReactDOM.render(<App />, rootElement);

复制: https://codesandbox.io/s/dawn-rain-46ocm

问题描述: 我不知道为什么当我使用案例 2 时,它正在工作,但案例 1 却没有工作。

【问题讨论】:

    标签: reactjs emotion


    【解决方案1】:

    问题是你没有正确分配动画CSS属性,你不需要重新定义你的css属性:

        ...
        <div
         css={css`
         // animation: ${bubbleFade}
         `}
        >
        ...
    

    只需直接分配它,因为您有 bubbleFadeLeftbubbleFadeRight 作为 CSS 变量

    像这样:

      ...
      <div css={bubbleFadeLeft}>Case 1: I blink but not working!</div>
      <div css={bubbleFadeRight}>Case 2: I blink!</div>
      ...
    

    这是一个有效的codesandbox

    【讨论】:

    • 感谢您的回答,但我想检查条件并设置bubbleFade = bubbleFadeLeft 或bubbleFadeRight。之后,使用 css={bubbleFade}。但它不起作用。
    • 我更新了我的沙箱来检查条件,现在检查一下codesandbox.io/s/flamboyant-field-uhb0o我为两个动画添加了两个条件。
    • 谢谢,我发现了我的错误,我设置了bubbleFade = {bubbleFadeRight },但是只有bubbleFade = bubbleFadeRight,大括号是不必要的。
    • 是的,这就是我在回答中提到的,很高兴它现在可以工作了 :)
    猜你喜欢
    • 2018-10-02
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2016-02-22
    • 2017-02-22
    相关资源
    最近更新 更多