CSS模式后退不会占据整个屏幕

时间:2019-08-13 01:59:52

标签: html css

我希望CSS中的模态背景占据整个屏幕(即,除了模态内容本身之外,整个屏幕都被遮盖了)。我认为这可能与我根据vh和vw指定其他div的宽度和高度有关。这是我的代码:

#modal {
  z-index: 1;
  position: fixed;
  left: 40%;
  right: 30%;
  top: 10%;
  background-color: rgba(0, 0, 0, 0.4);
  width: 100vw;
  height: 100vh;
}

#modal button {
  height: 40px;
  font: Hind Siliguri;
  font-weight: bold;
  border: 2px solid white;
  border-radius: 5px;
  margin: 5px;
}
<span id="modal">
    <h2>Choose a word: </h2>
    <button id = "choice1">Word1</button><button id= "choice2">Word2</button><button id = "choice3">Word3</button>
  </span>

以下是我根据vw / vh分配尺寸的其他元素:

#verbal-hint-container{
  margin-right: 50%;
  height: 30vh;
  width: 40vw;
  background-color: #C3D898;
  border: 5px solid #160F29;
  border-radius: 2px;
}

verbal-hint-container只是一个包含实例化消息的div(来自胡子库)。

我的直觉是基于vw / vh分配其他元素尺寸会干扰使一个元素跨越整个屏幕吗?有没有解决方法?如果重要的话,我的模态的css + html出现在那些文件中的时间要比所有其他元素的css + html出现的时间晚。

3 个答案:

答案 0 :(得分:0)

使用Inspect元素为我们提供了一种方法来查找引导程序正在使用的类。

尝试将以下CSS添加到您的页面:

.reveal-modal-bg {
    width: auto !important;
    position: fixed;
    background: rgba(0, 0, 0, 0.45);
    display: none;
    left: 0;
    right: 0;
    top: 0;
    bottom:0;
    z-index: 40;
}

添加此代码应确保背景完全覆盖整个页面。

答案 1 :(得分:0)

我不知道您的问题是否正确。 但是,这是一个示例,其中模式背景占据了屏幕的100%。 我希望这能帮到您。

var modal = document.getElementById("myModal");
var btn = document.getElementById("myBtn");
var span = document.getElementsByClassName("close")[0];

btn.onclick = function() {
  modal.style.display = "block";
}

span.onclick = function() {
  modal.style.display = "none";
}

window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}
/* The Modal (background) */
.modal {
  display: none; /* Hidden by default */
  position: fixed; /* Stay in place */
  z-index: 1; /* Sit on top */
  padding-top: 100px; /* Location of the box */
  left: 0;
  top: 0;
  width: 100%; /* Full width */
  height: 100%; /* Full height */
  overflow: auto; /* Enable scroll if needed */
  background-color: rgb(0,0,0); /* Fallback color */
  background-color: rgba(0,0,0,0.4); /* Black w/ opacity */
}

/* Modal Content */
.modal-content {
  background-color: #fefefe;
  margin: auto;
  padding: 20px;
  border: 1px solid #888;
  width: 80%;
}

/* The Close Button */
.close {
  color: #aaaaaa;
  float: right;
  font-size: 28px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: #000;
  text-decoration: none;
  cursor: pointer;
}
<!DOCTYPE html>
<html>
<head>

</head>
<body>

<h2>Modal Example</h2>
<button id="myBtn">Open Modal</button>
<div id="myModal" class="modal">

  <div class="modal-content">
    <span class="close">&times;</span>
    <p>Some text in the Modal..</p>
  </div>

</div>


</body>
</html>

答案 2 :(得分:0)

  1. #modal 上,高度宽度使用的是 = 而不是,这就是为什么它无法正常工作。将您的 #modal CSS更改为此:

    #modal {
      z-index: 1;
      position: fixed;
      left: 40%;
      right: 30%;
      top: 10%;
      display: none;
      background-color: rgb(0, 0, 0);
      background-color: rgba(0, 0, 0, 0.4);
      width: 100vw;
      height: 100vh;
    }
    
  2. 如果您的目标是 #modal ,则不需要
  3. left right top 掩盖整个屏幕。这只会导致将模态放置在错误的位置。

不太确定要在这里实现什么,但是我建议在调试/创建新组件/块时先删除/注释掉显示内容:无