【发布时间】:2019-01-06 06:04:55
【问题描述】:
【问题讨论】:
-
如果你把它弄模糊了,你还希望它是可点击的吗?
-
@yourfavoritedev 是的,即使我模糊它也应该是可点击的
-
@yourfavoritedev 是的,即使我模糊了它,它也应该是可点击的,你能告诉我如何在点击父项的模糊区域时让孩子关闭
标签: javascript reactjs
【问题讨论】:
标签: javascript reactjs
我们可以使用 CSS 来模糊父组件。像这样的:
overlay的div
[注意:您也可以通过将事件添加到overlay div 来将点击事件添加到模糊区域]
{this.state.childOpen && (
<div className="overlay">
<div className="overlay-opacity" />
<Child data={data} applyFilter={this.applyFilter} />
</div>
)}
.overlay {
position: fixed;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.overlay-opacity {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: black;
opacity: 0.5;
}
这里是直播demo
要隐藏模糊区域的子组件onclick,我们可以像这样添加一个事件
hideChild() {
this.setState({
childOpen: false
});
}
这里是直播demo
希望对你有帮助:)
【讨论】:
overlay 只是为了包装chid 组件和overlay-opacity div。 overlay-opacity div 用于模糊效果并处理单击事件以在单击时隐藏子组件。
由于您正在研究 React,我建议您使用 react-responsive-modal 库。您可以使用 npm 安装它。
它可以通过道具轻松定制。
请在下面找到示例:
https://codesandbox.io/s/9jxp669j2o
【讨论】:
我的理解是当孩子打开时你想模糊桌子 这是您需要添加的代码
formatStyle = () => {
if (this.state.childOpen == true) return { filter: "blur(5px)" };
else return {};
};
//add formatStyle in main app
styleData={this.formatStyle()} // in props on table
style = {this.props.styleData} //add this attribute in main container of table component
styleData={this.formatStyle()} // Pass this in ReactTable in main app
【讨论】:
onClick={this.closeChild} onClick = () => {this.setState({childOpen:false})}
您正在寻找的功能已经在 Semantic-UI-React Modal 中。这很容易使用,你只需要传递一些道具就可以得到上面的结果。
演示https://react.semantic-ui.com/modules/modal/#variations-dimmer
【讨论】: