我用react-responsive-modal
在我的应用程序中打开一些模式。当我打开模态时,有一个叠加效果会使模态后面的背景变暗。有什么方法可以使背景变暗100%或为背景设置任何颜色,以便在再次打开模态之前看不到模态打开之前存在的东西?
我为ModalComponent
中的模态MainComponent
创建了一个新组件,当我单击按钮时会呈现该组件:ModalComponent
:
render() {
return (
<div className="childDiv">
<Modal
open={open}
onClose={this.onCloseModal}
center
classNames={{
transitionEnter: styles.transitionEnter,
transitionEnterActive: styles.transitionEnterActive,
transitionExit: styles.transitionExitActive,
transitionExitActive: styles.transitionExitActive
}}
animationDuration={1000}
>
...
主要成分:
<div>
<div className="outter" onClick={this.openModal.bind(this)}>
//Open Modal when clicking on this div
<p className="arrival">Ankunft am Ziel: ~ {this.props.arrival} Uhr</p>
<p className="price">max. {this.props.price} €</p>
{this.state.open && (
<BookingModalNew
open={this.state.open}
triggerCloseModal={this.closeModal.bind(this)}
destination={this.props.destination}
arrival={this.props.arrival}
price={this.props.price}
/>
)}
//Whole Stuff should not be visible while Modal is opened
最佳答案
只需将具有overlay
样式的对象分配给渲染中的变量bg
,然后使用styles
属性在Modal中引用该对象。像这样:
render() {
const bg = {
overlay: {
background: "#FFFF00"
}
};
return (
<div className="childDiv">
<Modal open={open} onClose={this.onCloseModal} center styles={bg} }}>
<p>Your Modal Content</p>
</Modal>
</div>
)
}
但请等待。当我们可以直接编写样式而不是这样时,为什么要创建一个额外的对象:
<Modal open={open} onClose={this.onCloseModal} center styles={background: "#FFFF00"}>
<p>Your Modal Content</p>
</Modal>
即使看起来与我的代码做相同的事情,上述方法也无法使用,这是因为您不能直接在
react-responsive-modal
上直接内联指定样式。您需要先将样式放在对象中,然后将styles
属性引用到该对象。但是,您可以通过执行以下操作在
styles
属性本身中创建对象:<Modal open={open} onClose={this.onCloseModal} center styles={{ overlay: { background: "#FFFF00" } }}>
<p>Your Modal Content</p>
</Modal>
但是建议您在外部定义对象,然后在
styles
属性内部引用它,如上所示。关于javascript - React-active-modal:打开模式时更改背景颜色,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54067249/