2017-02-12 5 views
2

HTML-Popup-Anzeige nicht

<!DOCTYPE html> 
 
<html lang="en"> 
 
<head> 
 
    <meta charset="utf-8"> 
 
    <meta name="generator" content="CoffeeCup HTML Editor (www.coffeecup.com)"> 
 
    <meta name="dcterms.created" content="Sun, 12 Feb 2017 03:36:45 GMT"> 
 
    <meta name="description" content=""> 
 
    <meta name="keywords" content=""> 
 
    <title></title> 
 
    
 
    <!--[if IE]> 
 
    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
 
    <![endif]--> 
 
    \t <style> 
 
    \t 
 
      form { 
 
      max-width: 500px; 
 
      margin: 10px auto; 
 
      padding: 10px 10px; 
 
      background: #fff; 
 
      color: #071b51; 
 
      border: 1px #071b51; 
 
      border-radius: 8px; 
 
      } 
 
    \t  
 
     .loginpopup:hover { 
 
      background-color: #071b51; 
 
      color: #fff; 
 
     \t } 
 
     
 
     /*hover on span*/ 
 
     .popuptext:hover { 
 
      pointer-events: auto; 
 
      } 
 
      
 
      
 
     .show { 
 
      visibility: visible; 
 
     } 
 
     
 
     .loginpopup { 
 
       position: relative; 
 
      display: inline-block; 
 
      cursor:pointer; 
 
      -webkit-user-select: none; 
 
      -moz-user-select: none; 
 
      -ms-user-select: none; 
 
      user-select: none; 
 
     \t padding: 19px 39px 18px 39px; 
 
      background-color: #071b51; 
 
      font-size: 18px; 
 
      text-align: center; 
 
      font-style: normal; 
 
      border-radius: 10px; 
 
      border: 1px solid #072583; 
 
      border-width: 1px 1px 3px; 
 
      border-color: #fff; 
 
      box-shadow: 0 -1px 0 rgba(255,255,255,0.1) inset; 
 
      margin-bottom: 10px; 
 
      color:#fff; 
 
      
 
     } 
 
     
 
     .popuptext { 
 
      visibility:hidden; 
 
      \t width: 400px; 
 
      background-color: #fff; 
 
      color: #071b51; 
 
      text-align: center; 
 
      border-radius: 6px; 
 
      padding: 10px 10px; 
 
      position: absolute; 
 
      z-index: 1; 
 
      bottom: -1000%; 
 
      left: 0%; 
 
      margin-left: -500px; 
 
      } 
 
     \t </style> 
 
\t 
 
</head> 
 
    <body> 
 
    
 
    <div id="loginbutton" class="loginpopup" onclick="openPopup(); "style="font-family: sans-serif; width: 150px; left: 310px; height: 60px; top: 0px;">Login</div> 
 

 
    \t <span id="myPopup" class="popuptext" style="border: solid 10px #071b51;"> 
 
\t 
 
\t  \t <form> 
 
\t \t \t \t <h1>Login</h1> 
 
     
 
     \t \t  \t \t \t \t <fieldset> 
 
      
 
            <label for="mail">Email:</label> 
 
            <input type="email" id="mail" name="user_email" style="border:solid 1px #071b51; border-radius: 5px;"> 
 
            
 
            <label for="password">Password:</label> 
 
            <input type="password" id="password" name="user_password" style="border:solid 1px #071b51; border-radius: 5px;"> 
 
           </fieldset> 
 
       <button type="submit">Login</button> 
 

 
\t \t \t </form> 
 
\t </span> 
 

 

 

 

 
<!--JS for all actions on main page--> 
 
    <script> \t 
 
    //open myPopup \t 
 
\t function openPopup() { 
 
\t \t \t var popup1 = document.getElementById("myPopup"); 
 
    \t \t popup1.classList.toggle("show"); 
 
\t } 
 
\t 
 
\t </script> \t 
 

 

 
    </body> 
 
</html>

Kann mir jemand das Problem mit diesem helfen, herauszufinden? Anfangs wird das Sichtbarkeitsattribut von "myPopup" auf "versteckt" gesetzt. Später, wenn "loginbutton" angeklickt wird (onclick()), wird die Funktion "openPopup()" aufgerufen, die setzt, dass das Sichtbarkeitsattribut von "myPopup" über die Klasse "show" auf "visible" gesetzt wird. "MyPopup" bleibt jedoch verborgen. Gibt es etwas, das ich übersehen habe? Danke

Antwort

4

Ihre javascript fügt korrekt show Klasse zu #myPopup hinzu. Allerdings ändert das nichts, wie es da angezeigt wird:

  • .popuptext definiert später in CSS als .show und die gleiche Spezifität (1 Klasse) wirksam außer Kraft gesetzt.
  • .popuptext hat eine bottom:-1000% (das ist eine Menge) und auch eine Marge-links von -500px, die es außerhalb des Bildschirms rendern macht.

entfernte ich die Regeln anstößigen und auch .show unter .popuptext in CSS platziert.

function openPopup() { 
 
    var popup1 = document.getElementById("myPopup"); 
 
    popup1.classList.toggle("show"); 
 
}
form { 
 
    max-width: 500px; 
 
    margin: 10px auto; 
 
    padding: 10px 10px; 
 
    background: #fff; 
 
    color: #071b51; 
 
    border: 1px #071b51; 
 
    border-radius: 8px; 
 
} 
 

 
.loginpopup:hover { 
 
    background-color: #071b51; 
 
    color: #fff; 
 
} 
 

 
/*hover on span*/ 
 
.popuptext:hover { 
 
    pointer-events: auto; 
 
} 
 

 
.loginpopup { 
 
    position: relative; 
 
    display: inline-block; 
 
    cursor:pointer; 
 
    -webkit-user-select: none; 
 
    -moz-user-select: none; 
 
    -ms-user-select: none; 
 
    user-select: none; 
 
    padding: 19px 39px 18px 39px; 
 
    background-color: #071b51; 
 
    font-size: 18px; 
 
    text-align: center; 
 
    font-style: normal; 
 
    border-radius: 10px; 
 
    border: 1px solid #072583; 
 
    border-width: 1px 1px 3px; 
 
    border-color: #fff; 
 
    box-shadow: 0 -1px 0 rgba(255,255,255,0.1) inset; 
 
    margin-bottom: 10px; 
 
    color:#fff; 
 

 
} 
 

 
.popuptext { 
 
    visibility:hidden; 
 
    width: 400px; 
 
    background-color: #fff; 
 
    color: #071b51; 
 
    text-align: center; 
 
    border-radius: 6px; 
 
    padding: 10px 10px; 
 
    position: absolute; 
 
    z-index: 1; 
 
    left: 0%; 
 
} 
 
.show { 
 
    visibility: visible; 
 
}
<div id="loginbutton" class="loginpopup" onclick="openPopup(); "style="font-family: sans-serif; width: 150px; left: 310px; height: 60px; top: 0px;">Login</div> 
 

 
<span id="myPopup" class="popuptext" style="border: solid 10px #071b51;"> 
 

 
    <form> 
 
    <h1>Login</h1> 
 

 
    <fieldset> 
 

 
     <label for="mail">Email:</label> 
 
     <input type="email" id="mail" name="user_email" style="border:solid 1px #071b51; border-radius: 5px;"> 
 

 
     <label for="password">Password:</label> 
 
     <input type="password" id="password" name="user_password" style="border:solid 1px #071b51; border-radius: 5px;"> 
 
    </fieldset> 
 
    <button type="submit">Login</button> 
 

 
    </form> 
 
</span>

0

Ihr Element ist Weg von der Seite positioniert.

Entfernen und margin-left:-500px von .popuptext und es wird gut funktionieren.

0

Das Problem ist, Ihre Positionierung. Ihr Code funktioniert tatsächlich wie erwartet, aber das Popup wird von der Seite verschoben. Versuchen Sie, diese CSS:

.popuptext { 
    visibility:hidden; 
    width: 400px; 
    background-color: #fff; 
    color: #071b51; 
    text-align: center; 
    border-radius: 6px; 
    padding: 10px 10px; 
    position: absolute; 
    z-index: 1; 
    /*bottom: -1000%;*/ 
    /*margin-left: -500px;*/ 
    left: 0%; 
    } 
0

Eine schnelle Inspektion in Chrome Dev-Tools Inspektor zeigt dies, nachdem Sie klicken Sie auf den 'Login':

enter image description here

Die Klasse ist richtig hinzugefügt, aber die "Sichtbarkeit" Die Eigenschaft in der Klasse 'show' wird von der Eigenschaft 'Sichtbarkeit' in der Klasse 'popuptext' überschrieben. Dies liegt daran, dass "popuptext" nach der show-Klasse in Ihrem style-Tag definiert ist und beide Klassen dieselbe Gewichtung (oder Spezifität in CSS-Begriffen) haben.

Korrektur 1: Platzieren Sie die 'popuptext' Klasse BEFORE 'show' Klasse. Dies überschreibt die Eigenschaft "Sichtbarkeit" wie gewünscht.

Das Pop-up wird auf der Benutzeroberfläche immer noch nicht angezeigt. Dies liegt an der großen negativen Marge, die für die Eigenschaft margin-left in der Klasse "popuptext" festgelegt wurde. Auch die Bodeneigenschaft hat einen sehr hohen Wert. Dadurch wird Ihr Popup weit unten auf der Seite angezeigt.

Korrektur 2: Passen Sie auch die linke und untere Randeigenschaft an.