React-responsive-modal:打开模态时更改背景颜色
React-responsive-modal: Change background-color when modal is open
我用react-responsive-modal
在我的 React 应用程序中打开一些模式。当我打开模态时,有一种叠加效果使模态后面的背景变暗。有什么方法可以使背景变暗 100% 或为背景设置任何颜色,这样我就看不到模态打开之前的内容,直到我再次关闭模态?
我在我的 MainComponent
中为模式 ModalComponent
创建了一个新组件,当我点击一个按钮时它会被渲染:
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
属性在模态中引用该对象像这样:
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
prop 内部引用它,如上所示。
您需要定位并覆盖 overlay
class,例如
<Modal style={{ overlay: { background: 'black' } }} />
另一种方法是shown in the docs,例如
<Modal classNames={{ overlay: { background: 'black' } }} />
可以通过Modal的styles属性改变overlay的CSS
<Modal animationDuration={1000} styles={{ modal: {}, overlay: { background: "#ccc" } }} closeIconSize={16} open={modalOpen} onClose={this.onCloseModal} center >
Your Code Here...
</Modal>
Please see the full documentation of react-responsive-modal here
我用react-responsive-modal 在我的 React 应用程序中打开一些模式。当我打开模态时,有一种叠加效果使模态后面的背景变暗。有什么方法可以使背景变暗 100% 或为背景设置任何颜色,这样我就看不到模态打开之前的内容,直到我再次关闭模态?
我在我的 MainComponent
中为模式 ModalComponent
创建了一个新组件,当我点击一个按钮时它会被渲染:
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
属性在模态中引用该对象像这样:
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
prop 内部引用它,如上所示。
您需要定位并覆盖 overlay
class,例如
<Modal style={{ overlay: { background: 'black' } }} />
另一种方法是shown in the docs,例如
<Modal classNames={{ overlay: { background: 'black' } }} />
可以通过Modal的styles属性改变overlay的CSS
<Modal animationDuration={1000} styles={{ modal: {}, overlay: { background: "#ccc" } }} closeIconSize={16} open={modalOpen} onClose={this.onCloseModal} center >
Your Code Here...
</Modal>
Please see the full documentation of react-responsive-modal here