首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React-modal隐藏在元素后面

React-modal隐藏在元素后面
EN

Stack Overflow用户
提问于 2018-01-17 01:09:46
回答 3查看 12K关注 0票数 14

我第一次尝试使用react-modal。当我点击登录按钮时,react-modal组件被调用,但似乎隐藏在封面后面,这是一个视频登录页面。

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

现在单击登录按钮时,react devtool将显示呈现的ModalPortal组件,并显示相应的状态when the sign-in button is clicked

SignInModal.scss

代码语言:javascript
复制
.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组件

代码语言:javascript
复制
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组件

代码语言:javascript
复制
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组件

代码语言:javascript
复制
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;

video-cover.scss

代码语言:javascript
复制
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;
}

EN

回答 3

Stack Overflow用户

发布于 2018-04-07 13:11:24

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

下面是纯反应的方法:

代码语言:javascript
复制
const customStyles = {
  content : {
    ...
  },
  overlay: {zIndex: 1000}
};

<Modal style={customStyles}>
  ...
</Modal>
票数 30
EN

Stack Overflow用户

发布于 2018-01-17 11:28:07

代码语言:javascript
复制
.modal {
    position: fixed;
    z-index:9999;
    top :0;
    left:0;
    right:0;
    bottom:0;
    background: #464b5e;
    color: white;
    outline: none;
    padding: 3.2rem;
    text-align: center;
}
票数 1
EN

Stack Overflow用户

发布于 2021-11-29 01:24:19

Example of react-modal inline styles在react-modal内联样式中设置样式。将z-index设置为100,但如下所示

代码语言:javascript
复制
style={{
  overlay: {
  zIndex: 100,
  backgroundColor: 'rgba(70, 70, 70, 0.5)',
},

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48286453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档