翻閱古今
2021-11-18 17:04:01
我想在我的 Web 應用程序中為一個框設置動畫(淡入、淡出)。我為此使用了react-transition-group。但不知何故,動畫不起作用。代碼import React from 'react';import ReactDOM from 'react-dom';import { CSSTransition } from 'react-transition-group';import Modal from 'react-modal';import './styles.css';class Example extends React.Component { state = { isOpen: false, }; toggleModal = () => { this.setState(prevState => ({ isOpen: !prevState.isOpen, })); }; render() { const modalStyles = { overlay: { backgroundColor: '#ffffff', }, }; return ( <div> <button onClick={this.toggleModal}> Open Modal </button> <CSSTransition in={this.state.isOpen} timeout={300} classNames="dialog" > <Modal isOpen={this.state.isOpen} style={modalStyles} > <button onClick={this.toggleModal}> Close Modal </button> <div>Hello World</div> </Modal> </CSSTransition> </div> ); }}CSS:.dialog-enter { opacity: 0; transition: opacity 500ms linear;}.dialog-enter-active { opacity: 1;}.dialog-exit { opacity: 0;}.dialog-exit-active { opacity: 1;}.box { width: 200px; height: 100vh; background: blue; color: white;}這是工作代碼。單擊“打開模態”打開模態,然后單擊“切換框”打開/關閉我想要動畫的框。
1 回答

青春有我
TA貢獻1784條經驗 獲得超8個贊
您必須完全信任 CSSTransition 的裝載/卸載。
<CSSTransition
in={this.state.boxVisible}
timeout={1500}
classNames="dialog"
unmountOnExit
>
<div>
<div className="box">Box</div>
</div>
</CSSTransition>
見這里:https : //codesandbox.io/s/csstransition-component-9obbb
更新: 如果您想按照評論中的要求移動具有 left css 屬性的元素。您還必須向它添加 position: realative 樣式。
.dialog-enter {
left: 100%;
transition: left 1500ms;
position: relative;
}
.dialog-enter-active {
left: 0;
}
.dialog-exit {
left: 0;
transition: left 1500ms;
position: relative;
}
.dialog-exit-active {
left: 100%;
}
添加回答
舉報
0/150
提交
取消