Проблемы с innerHTML - не распознавание класса из CSS - PullRequest
1 голос
/ 25 мая 2019

Я пытаюсь отобразить всплывающую модель (это должна быть форма входа в систему), используя innerHTML , у меня есть много divs с соответствующими им классами, но мой первый * Класс 1005 * div по какой-то причине не распознается.

Прежде чем я попытался сделать это всплывающее окно, используя это:

document.querySelector('.caixa-entrar').style.display = "flex";

Это сработало, но у меня было так много проблем с закрытием этих всплывающих окон. Мой учитель предложил использовать innerHTML , потому что он сказал, что это проще. По крайней мере, он показал мне ...

Это моё тело:

<header id="menu"> 
    <button id="cadastrar" class="button-flex-son">Cadastrar</button>
    <button id="entrar" class="button-flex-son">Entrar</button>
</header>
<div></div>

CSS Caixa

background-color: rgba(0, 0, 0, 0.8);
width: 100%;
height: 100%;
position: absolute;
top: 0;
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;

CSS контудо

height: 300px;
width: 500px;
background-color: #3E94D1;
text-align: center;
padding: 20px;
position: relative;
border-radius: 4px;

Мой JS-скрипт

const caixa = document.querySelector('div')
document.getElementById('entrar').addEventListener("click", ()=>{
    caixa.innerHTML = 

    '<div class="caixa">' + 
        '<div class="conteudo">' + 
            '<div class="close">+</div>' +
                //Insira o coisa de imagem aqui depois, arrombado 
            '<form class="forms" action="">' + 
                '<input type="email" name="email" placeholder="E-mail" class="inputao">' + 
                '<input type="password" name="senha" placeholder="Senha" class="inputao">' +
                '<button type="submit" class="butao">Entrar</button>' +
                '<button type="submit" id="cadastro-butao" class="butao">Cadastro</button>' +
            '</form>' +
        '</div>' +
    '</div>'
});

Вся эта работа, но первый класс div не делает. предполагалось, что всплывающая модель будет отображаться синим цветом в центре страницы, а остальной фон должен изменить свой цвет

1 Ответ

0 голосов
/ 25 мая 2019

Вам не нужно собирать все формы внутри JS-функции, потому что это замедлит ваш код.Ваш учитель обманом заставил вас подумать, что будет проще спрятать весь набор HTML-кода в JS и вызывать его через параметр addEventListener.

Вы можете просто установить положение формы и стили для своего тела.и скрыть его, а затем вызвать его на событии onClick через кнопку «Вход», просто так.Я сделал сниппет, чтобы вы могли видеть, действительно ли вы этого хотите, а также вы можете увидеть код и смело внедрять его на свой веб-сайт, вот он у вас:

var modal = document.getElementById("hiddenForm");

//Oh desgraça, isso aqui é só pra fechar o Modal mesmo quando clicar do lado de fora
window.onclick = function(event) {
  if (event.target == modal) {
    modal.style.display = "none";
  }
}
body {
  font-family: Arial, Helvetica, sans-serif;
}

input[type=text],
input[type=password] {
  width: 100%;
  padding: 12px 20px;
  margin: 8px 0;
  display: inline-block;
  border: 1px solid #ccc;
  box-sizing: border-box;
}

button {
  background-color: #333;
  filter: brightness(100%);
  transition: all 0.2s ease-in-out;
  color: white;
  padding: 14px 20px;
  margin: 8px 0;
  border: none;
  cursor: pointer;
  width: 100%;
}

button:hover {
  filter: brightness(50%);
}

.cancelbtn {
  width: auto;
  padding: 10px 18px;
  background-color: #500;
}

.container {
  padding: 30px;
}

span.pass {
  float: right;
  padding-top: 16px;
}

.modal {
  display: none;
  position: fixed;
  z-index: 1;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  overflow: auto;
  background-color: rgb(0, 0, 0);
  background-color: rgba(0, 0, 0, 0.4);
  padding-top: 60px;
}

.modal-content {
  background-color: #fefefe;
  margin: 5% auto 15% auto;
  border: 1px solid #000;
  width: 80%;
}

.close {
  position: inherit;
  float: right;
  top: 0;
  margin-right: 20px;
  margin-top: 10px;
  margin-bottom: 10px;
  color: #000;
  font-size: 35px;
  font-weight: bold;
}

.close:hover,
.close:focus {
  color: red;
  cursor: pointer;
}

.animate {
  animation: animatezoom 0.3s
}

@keyframes animatezoom {
  from {
    transform: scale(0)
  }
  to {
    transform: scale(1)
    }
}
<h2>Try me</h2>

<button onclick="document.getElementById('hiddenForm').style.display='block'" style="width:auto;">Entrar</button>

<div id="hiddenForm" class="modal">

  <form class="modal-content animate" action="#">
    <span onclick="document.getElementById('hiddenForm').style.display='none'" class="close" title="Close Modal">&times;</span>

    <div class="container">
      <label for="uname"><b>E-mail</b></label>
      <input type="text" placeholder="E-mail" name="uname" required>

      <label for="psw"><b>Senha</b></label>
      <input type="password" placeholder="Senha" name="pass" required>

      <button type="button">Entrar</button>
      <button type="button">Cadastro</button>
      <label>
        <input type="checkbox" checked="checked" name="remember"> Remember me
      </label>
    </div>

    <div class="container" style="background-color:#f1f1f1">
      <button type="button" onclick="document.getElementById('hiddenForm').style.display='none'" class="cancelbtn">Cancel</button>
      <span class="pass">Forgot your <a href="#">password?</a></span>
    </div>
  </form>
</div>
...