【问题标题】:React-addons-css-transition-group stylingReact-addons-css-transition-group 样式
【发布时间】:2023-03-07 14:38:01
【问题描述】:

我正在尝试在 React JS 中创建选项卡,我想使用 React-addons-css-transition-group 为其添加一些动画。

我的代码如下:

render() {

    let view = this.state.tiresView ? this.renderTiresView() : this.renderOptionsView();

    return (
        <div >
            <div className="tiresFeaturesTitle">
                <Link to="" onClick={this.changeView.bind(this, "options")} >Options</Link>
                <Link to="" onClick={this.changeView.bind(this, "tires")} >Tires</Link>
            </div>
            <ReactCSSTransitionGroup transitionName="example" transitionEnterTimeout={500} transitionLeaveTimeout={500} transitionAppear={true} transitionAppearTimeout={500}>
                <div key={this.state.tiresView}>
                    {view}
                </div>
            </ReactCSSTransitionGroup>
        </div>
    );
}

example 的样式是:

.example-enter {
  opacity: 0.01;
  transition: opacity .5s ease-in;
}

.example-enter.example-enter-active {
  opacity: 1;
}

.example-leave {
  opacity: 1;
  transition: opacity .5s ease-in;
}

.example-leave.example-leave-active {
  opacity: 0;
}

.example-appear {
  opacity: 0.01;
}

.example-appear.example-appear-active {
  opacity: 1;
  transition: opacity .5s ease-in;
}

它工作正常,但是当我更改选项卡时,我也会看到旧选项卡大约半秒钟。我不要那个。

我希望当我单击更改选项卡时,旧选项卡会立即消失。

你可以在照片上看到我的意思。我单击将选项卡视图更改为轮胎,但有一秒钟我看到下面的旧选项卡内容this is options view。我想避免这种情况。

【问题讨论】:

    标签: javascript css reactjs css-animations


    【解决方案1】:

    尝试将position: absolute 添加到.example-leave 吗?可能无法解决问题,但我认为您需要修复此类的样式。

    【讨论】:

    • 同样的问题。现在我在顶部看到旧标签的内容,而不是在新标签下方。
    • 在上面是什么意思?如果你把你的 ReactCSSTransitionGroup 包装成 &lt;div style={{position:'relative'}} /&gt;
    • 不,同样的问题。请参阅我的问题中的照片。照片上的This is Options view 显示在底部。现在,您的样式显示在顶部。
    • 我也会固执地尝试将position: absolute 添加到.example-enter。但也许它太笨了
    • 我通过将display: none; 添加到.example-leave 解决了这个问题
    【解决方案2】:

    通过将display:none 添加到.example-leave 类来解决问题。

    工作的css如下:

    .example-enter {
      opacity: 0.01;
      transition: opacity .5s ease-in;
    }
    
    .example-enter.example-enter-active {
      opacity: 1;
    }
    
    .example-leave {
      display: none;
      opacity: 1;
      transition: opacity .5s ease-in;
    }
    
    .example-leave.example-leave-active {
      opacity: 0;
    }
    
    .example-appear {
      opacity: 0.01;
    }
    
    .example-appear.example-appear-active {
      opacity: 1;
      transition: opacity .5s ease-in;
    }
    

    【讨论】:

    • 你是对的。离开选项卡的转换丢失,但不需要该转换。我在进入新标签时有过渡。
    • 感谢您的帮助。 ;)
    猜你喜欢
    • 1970-01-01
    • 2019-05-06
    • 2015-12-09
    • 2020-06-21
    • 1970-01-01
    • 2020-09-09
    • 2018-04-15
    • 2018-02-10
    • 2018-05-27
    相关资源
    最近更新 更多