【问题标题】:CSS Transitions in React - fade in text when user clicks a buttonReact 中的 CSS 过渡 - 用户单击按钮时文本淡入淡出
【发布时间】:2018-10-02 22:57:30
【问题描述】:

我有以下展示组件:

const HowToControls = props => {
  return (
    <div className="col-md-6 how-to">
      {props.isOpen ?
        <p className={`text ${props.isOpen ? 'visible' : ''}`}>
         lorem ipsum............
        </p>/>
        : null}
    </div>
  );
}

段落具有名为“text”的类,如果单击其父组件中的按钮,则有条件地添加第二个类。文本正在切换,检查器显示两个类(“文本”和“可见”)都添加到元素中,但没有过渡效果。这是我的 CSS:

.text {
  opacity: 0.01;
  transition: opacity 600ms;
}

.text.visible {
  opacity: 1;
}

我猜这两个类都是在页面加载时添加的(在组件安装之前)。那是对的吗?任何帮助将不胜感激。

【问题讨论】:

    标签: css reactjs css-transitions


    【解决方案1】:

    在段落之前有 if 语句 props.isOpen。所以从技术上讲,班级变化并不重要。基于props.isOpen,它要么显示启用可见类的段落,要么显示null。 试试这个:

    <div className="col-md-6 how-to">
        <p className={`text ${props.isOpen ? 'visible' : ''}`}>
         lorem ipsum............
        </p>/>
    </div>
    

    要使过渡生效,它首先需要在具有初始 CSS 属性的 DOM 中,当该属性被更改或覆盖时,它会触发您的过渡。在你的情况下,你基本上甚至没有渲染段落,因为在段落之前有那个条件。

    【讨论】:

    • 谢谢,这对制作过渡效果很有用。我的最终目标是在第一次渲染元素时进行过渡。不使用外部库可以吗?
    • @Naple 只需在您的 componentDidMount 上执行 setState。您当然需要转换为 React.Compoent,而不是普通函数。
    猜你喜欢
    • 2020-04-27
    • 2021-03-31
    • 1970-01-01
    • 1970-01-01
    • 2013-10-29
    • 2012-10-11
    • 1970-01-01
    • 2021-01-26
    • 2021-10-01
    相关资源
    最近更新 更多