2017-09-16 9 views
3

CSSとJavaScriptのみを使用してポップアップフォームを表示しようとしています。ここ cssクラスを切り替えると可視性値が変更されない

は私のHTMLページです:

<html> 
 
<title>W3.CSS</title> 
 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
 
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> 
 
<link rel="stylesheet" 
 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> 
 

 
<style> 
 
.popup-form { 
 
    visibility: hidden; 
 
} 
 

 
.popup-form .show { 
 
    visibility: visible; 
 
} 
 
</style> 
 

 
<body> 
 
    <div class="popup-form show" id="myPopup"> 
 
    <form> 
 
    <div class="w3-container"> 
 
     <br> <input class="w3-input" placeholder="Enter category name" /> 
 
     <br> <input class="w3-input" 
 
     placeholder="Enter category discription" /> 
 
    </div> 
 
    <div class="w3-container w3-right"> 
 
     <button class="w3-button w3-black w3-round-large" type="submit">Add</button> 
 
     <button class="w3-button w3-black w3-round-large" type="submit">Cancel</button> 
 
    </div> 
 

 
    </form> 
 
    </div> 
 
    <div onclick="myFunction()"><i class="fa fa-plus-circle w3-button"></i></div> 
 
</body> 
 

 
<script> 
 
    function myFunction() { 
 
     var popup = document.getElementById("myPopup"); 
 
     popup.classList.toggle("show"); 
 
    } 
 
</script> 
 
</html>

私は.SHOWクラスがトグルされるコンソールで見ることができますが、視認性が隠されたままです。それで私は何が欠けているのですか?

+2

.popup-form.show対チェンジ' .popup形式の.show'は '.popup形式の間の任意のスペースであってはなりません'と' .show'です。 –

答えて

3

このようにしますか?

クラスpopup-formshowは同じ要素になっているため、以下のCSSを変更する必要があります。

CSS:ここ

.popup-form { 
    visibility: hidden; 
} 

.popup-form.show { 
    visibility: visible; 
} 

二CSS手段。要素は、クラスpopup-formshowの両方を持ちます。あなたは何をしていた前だった:

.popup-form { 
    visibility: hidden; 
} 

.popup-form .show { 
    visibility: visible; 
} 

は親要素popup-formを持っている要素を、取るとshowクラスを持つ子供を取ります。

スニペット:現在

function myFunction() { 
 
    var popup = document.getElementById("myPopup"); 
 
    popup.classList.toggle("show"); 
 
}
.popup-form { 
 
    visibility: hidden; 
 
} 
 

 
.popup-form.show { 
 
    visibility: visible; 
 
}
<html> 
 
<title>W3.CSS</title> 
 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
 
<link rel="stylesheet" href="https://www.w3schools.com/w3css/4/w3.css"> 
 
<link rel="stylesheet" 
 
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> 
 

 
<body> 
 
<div class="popup-form show" id="myPopup"> 
 
    <form> 
 
     <div class="w3-container"> 
 
      <br> <input class="w3-input" placeholder="Enter category name" /> 
 
      <br> <input class="w3-input" 
 
       placeholder="Enter category discription" /> 
 
     </div> 
 
     <div class="w3-container w3-right"> 
 
      <button class="w3-button w3-black w3-round-large" type="submit">Add</button> 
 
      <button class="w3-button w3-black w3-round-large" type="submit">Cancel</button> 
 
     </div> 
 

 
    </form> 
 
</div> 
 
<div onclick="myFunction()"><i class="fa fa-plus-circle w3-button"></i></div> 
 
</body> 
 

 
<script> 
 

 
</script> 
 
</html>

+1

ありがとうナレン、あなたは私に解決策を与えただけでなく、私のエラーを説明した –

+0

@AmmarSamaterあなたは大歓迎です:) –

5

、あなたは

.popup-form .show { 
visibility: visible; 
} 

を使用していますが、この

.popup-form.show { 
visibility: visible; 
} 
のように使用する必要があります
3

余分なスペースが問題です。 `.popup-form.show` .Thereへ

.popup-form .show

<style> 
 
.popup-form { 
 
    visibility: hidden; 
 
} 
 

 
.popup-form.show { 
 
    visibility: visible; 
 
} 
 
</style>

関連する問題