具有内联样式的关键帧 ReactJS

Posted

技术标签:

【中文标题】具有内联样式的关键帧 ReactJS【英文标题】:Keyframes with Inline Styles ReactJS 【发布时间】:2016-09-23 18:06:27 【问题描述】:

我正在尝试在 ReactJS 中设置脉动动画的关键帧。我尝试只在内联样式中设置关键帧,但这不起作用。

My code

const NewRelpyheButton = (style = , open, handleOPenSettings) => 

    var bar = 
    color: '#000',
    padding: '1em 0',
    fontSize: '20px',
    textAlign: 'center',
    cursor: 'pointer',
    position: 'fixed',
    bottom: '0',
    width: '100%',
    zIndex: '10',
    animation: 'pulse 1.2s ease-in-out',
    animationIterationCount: 'infinite',
    

    Object.assign(style, );
    let openModal;
    if (open) 
        openModal = <Modal><NewRelpyhe/></Modal>
    

    return (
        <div>
        openModal
        <Bar color='purple' style=bar onClick=handleOpenSettings>
            create a new relphye site
        </Bar></div>
    )

我正在尝试在 css 中模仿 this:

.element 
  width: 100%;
  height: 100%;
  animation: pulse 5s infinite;


@keyframes pulse 
  0% 
    background-color: #001F3F;
  
  100% 
    background-color: #FF4136;
  


html,
body 
  height: 100%;

【问题讨论】:

How to dynamically create '@-Keyframe' CSS animations的可能重复 这是因为 React 无法知道 pulse 动画。 【参考方案1】:

如果您希望将所有样式与组件紧密耦合,请尝试使用 Styled Components。他们有一个helper for keyframes

例如

import styled,  keyframes  from 'styled-components'

const pulse = keyframes`
  from 
    background-color: #001F3F;
  

  to 
    background-color: #FF4136;
  
`

const Bar = styled.div`
  color: #000;
  padding: 1em 0;
  font-size: 20px,
  text-align: center;
  cursor: pointer;
  position: fixed;
  bottom: '0',
  width: 100%;
  z-index: 10;
  animation: $pulse 1.2s ease-in-out;
  animation-iteration-count: infinite;
`

然后像这样使用:

<Bar>I pulse</Bar>

【讨论】:

以上是关于具有内联样式的关键帧 ReactJS的主要内容,如果未能解决你的问题,请参考以下文章

为啥 CSS 关键帧动画在具有范围样式的 Vue 组件中被破坏?

如何在传递变量值的 JavaScript 中指定内联关键帧?

无法使用带有样式组件的关键帧设置嵌套动画的样式

animation-声明关键帧

如何循环具有多个关键帧定义的 CSS 动画?

Python FBX SDK – 如何缩放具有关键帧的模型?