简体   繁体   English

关闭模式叠加层时无法隐藏消息框

[英]Cannot hide message box when I close modal overlay

I'm trying to create my own modal overlay. 我正在尝试创建自己的模式叠加层。 If you don't know what that is, it is an effect where you if you activate a certain element by clicking on it an black opaque overlay will show up on your screen, and usually a message box will be in the center of the overlay. 如果您不知道这是什么,那是一种效果,如果您通过单击某个元素来激活某个元素,则会在屏幕上显示一个黑色的不透明覆盖物,并且通常会在覆盖物的中心显示一个消息框。 I think I have successfully done the modal overlay. 我想我已经成功完成了模式叠加。 However, whenever I click out of the overlay the overlay will become hidden but the message box will still be shown. 但是,每当我从叠加层中单击时,叠加层将被隐藏,但仍会显示消息框。 I looked into my debugging tools and the css says the message box is supposedly hidden. 我调查了调试工具,然后CSS表示消息框被隐藏了。 However, I still see it on the screen. 但是,我仍然在屏幕上看到它。

CSS 的CSS

div.overlay{ height:100%; width:100%; margin:0; padding:0; background:rgba(40, 0, 77,0.7); position:fixed;
z-index:100; top:0; left:0; display:none;}

div.rela{height:100%; width:100%; margin:0; padding:0; position:relative; z-index:101;}

div.rela span{ position:absolute; top:0; left:98%; font-weight:bold;  font-size:36px; }

div.rela span a{ color:white; text-decoration:none; z-index:152;}

div#message{width:40%; height:20%; background:white; text-align:center; 
border:1px solid black; font-weight:bold;display:none; z-index:102;}

 div#message h5{font-size:18px;}

HTML 的HTML

<div class="overlay">
<div class="rela">
<span><a href="#">X</a></span>
</div>
</div>

<div id="ex3"><h2>Example 3</h2><p></p><h4>results:</h4>
<button id="overlay-on">Open up the overlay</button>
<div id="message">
<h5>Title</h5>
<p>Width is:</p>
</div>
</div>

Javascript Java脚本

/* This is for clicking off the overlay */
(function removeOverlay(){
document.querySelector('div.overlay span a').onclick = function()
{
    document.querySelector('div.overlay').style.display ="none";
    console.log('I am closing')
};

document.querySelector('div.overlay').addEventListener('click', function(){

this.style.display ="none";
console.log('Im closing with overlay');

});

})();

document.querySelector('button#overlay-on').addEventListener('click',function(){

 var overlay = document.querySelector('div.overlay');
 overlay.style.display = "block";

var message = document.querySelector('div#message').outerHTML;
var relative = document.querySelector('div.rela');


document.getElementById('message').setAttribute('style','position:absolute; display:block; top:10%; ');
var text = document.createTextNode(document.getElementById('message').offsetWidth);
document.querySelector('div#message p').appendChild(text);
console.log(message); 
relative.innerHTML =  relative.innerHTML + message ;


});

You just need to put the message box inside the modal. 您只需要将消息框放在模式中即可。

<div class="overlay">
  <div class="rela">
    <span><a href="#">X</a></span>
  </div>
  <div id="message">
    <h5>Title</h5>
    <p>Width is:</p>
  </div>
</div>

<div id="ex3">
  <h2>Example 3</h2>
  <p></p>
  <h4>results:</h4>
  <button id="overlay-on">Open up the overlay</button>

</div>

Or wrap the modal around the message box. 或将模式包装在消息框周围。

<div id="ex3">
  <h2>Example 3</h2>
  <p></p>
  <h4>results:</h4>
  <button id="overlay-on">Open up the overlay</button>
  <div class="overlay">
    <div class="rela">
      <span><a href="#">X</a></span>
    </div>
    <div id="message">
      <h5>Title</h5>
      <p>Width is:</p>
    </div>
  </div>
</div>

Fiddle 小提琴

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM