gpt4 book ai didi

reactjs - React-modal 隐藏在元素后面

转载 作者:行者123 更新时间:2023-12-03 13:40:39 25 4
gpt4 key购买 nike

我第一次尝试使用react-modal。当我单击登录按钮时,将调用 react 模式组件,但似乎隐藏在封面页(视频登陆页)后面。

React devtool 在单击登录按钮之前显示适当的状态 before the sign-in button is clicked

现在单击登录按钮时,react devtool 现在会显示 ModalPortal 组件已渲染并显示适当的状态 when the sign-in button is clicked

SignInModal.scss

.ReactModalPortal>div {
opacity: 0;
}

.ReactModalPortal .ReactModal__Overlay {
align-items: center;
display: flex;
justify-content: center;
transition: opacity 200ms ease-in-out;
}

.ReactModalPortal .ReactModal__Overlay--after-open {
opacity: 1;
}

.ReactModalPortal .ReactModal__Overlay--before-close {
opacity: 0;
}

.modal {
position: relative;
background: #464b5e;
color: white;
max-width: 90rem;
outline: none;
padding: 3.2rem;
text-align: center;
}

.modal__title {
margin: 0 0 1.6rem 0;
}

.modal__body {
font-size: 2rem;
font-weight: 300;
margin: 0 0 3.2rem 0;
word-break: break-all;
}

CoverPage.js 组件

import Header from './Header';
import HeaderVideo from './HeaderVideo';
import SignInModal from './SignInModal';

import React, { Component } from 'react';

class CoverPage extends Component {
state = {
modalIsOpen: false
};

onOpenModal = () => {
this.setState(() => ({
modalIsOpen: true
}));
};

onCloseModal = () => {
this.setState(() => ({
modalIsOpen: false
}));
};
render() {
return (
<div>
<Header />
<HeaderVideo onOpenModal={this.onOpenModal} />
<SignInModal
modalIsOpen={this.state.modalIsOpen}
onOpenModal={this.onOpenModal}
onCloseModal={this.onCloseModal}
/>
</div>
);
}
}

export default CoverPage;

HeaderVideo.js 组件

import React from 'react';
import Signup from './Signup';
import CoverInfo from './CoverInfo';

const HeaderVideo = props => {
return (
<div className="video-container">
<video preload="true" autoPlay loop volume="0" postoer="/images/1.jpg">
<source src="images/vine.mp4" type="video/mp4" />
<source src="images/vine1.webm" type="video/webm" />
</video>
<div className="video-content">
<div className="container content">
<div className="row">
<div className="col-md-9">
<CoverInfo onOpenModal={props.onOpenModal} />
</div>
<div className="col-md-3">
<Signup />
</div>
</div>
</div>
</div>
</div>
);
};

export default HeaderVideo;
CoverInfo.js 组件

import React from 'react';

const CoverInfo = props => {
return (
<div className="info">
<div>
<h1>Welcome to EventCity!</h1>
</div>
<div>
<p>
At EventCity! we pride ourselves on the unrivalled personal {`event`} services,we provide
to our clientele. We guide you from the stressful decision making {`process`},ensuring you
are comfortable,whether it is a wedding, corporate {`function `}or even a kiddies party,we
create a buzz around you, taking you to the next level.
</p>
</div>
<div>
<h3>Innovation, {`Performance`} and Delivery</h3>
</div>
<button type="button" className="btn btn-success btn-lg" onClick={props.onOpenModal}>
Sign In here
</button>
</div>
);
};

export default CoverInfo;

视频封面.scss

video {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
min-width: 100%;
min-height: 100%;
width: auto;
height: auto;
z-index: 1;
}

.video-content {
z-index: 2;
position: absolute;
background: rgba(0, 0, 0, 0.6);
top: 0;
bottom: 0;
left: 0;
right: 0;
}

.content {
padding-top: 120px;
}

最佳答案

您需要在 Modal 的覆盖层上设置 z-index 属性,通常 z-index 为 0。CSS 类是 .ReactModal__Overlay

这是纯 React 的实现方法:

const customStyles = {
content : {
...
},
overlay: {zIndex: 1000}
};

<Modal style={customStyles}>
...
</Modal>

关于reactjs - React-modal 隐藏在元素后面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48286453/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com