繁体   English   中英

HTML:选中复选框后,元素不可见

[英]HTML: Turn Element invisible when checkbox is checked

我的html代码的标题中有一个复选框,正文中有一个框。 选中复选框时,我需要该框消失。

我将在下面提供代码,但总之,我可以使复选框本身在被选中时消失,但是当我添加要消失的元素的类时,它完全无法工作。 我尝试了几种不同形式的CSS,但是没有任何改变。

 #toggle:checked ~ div .sidebar{ display:none; } .sidebar { width: 100px; height: 100px; background: #000; } 
 <nav class="navbar"> <div class="container"> <div class="navbar-header"> <label for="toggle" class="sidebar-toggle"></label> </div> <input type="checkbox" id="toggle" /> </div> </nav> <div class="sidebar"> </div> 

CSS选择器#toggle:checked ~ div .sidebar有一个小的错字。 div.sidebar之间应该没有空格,因为您的目标是选择“类名为sidebardiv ”(而不是“类名为sidebardiv的子元素的任何元素”)。

另一个问题是您在CSS选择器中错误地使用了Adjacent Sibling Combinator 为了使您的选择器正常工作, div.sidebar应该是与#toggle元素相同的父#toggle子级。

 #toggle:checked ~ div.sidebar { display: none; } .sidebar { width: 100px; height: 100px; background: #000; } 
 <nav class="navbar"> <div class="container"> <div class="navbar-header"> <label for="toggle" class="sidebar-toggle"></label> </div> <input type="checkbox" id="toggle" /> <div class="sidebar"></div> </div> </nav> 

假设您无法更改HTML结构,因为您试图更改不是该复选框的同级或后代的“ div”,则需要使用javascript来做到这一点。

 function handleChange(checkbox) { if (checkbox.checked == true) { document.getElementsByClassName("sidebar")[0].classList.add("hidden");; } else { document.getElementsByClassName("sidebar")[0].classList.remove("hidden");; } } 
 .sidebar.hidden { display: none; } .sidebar { width: 100px; height: 100px; background: #000; } 
 <nav class="navbar"> <div class="container"> <div class="navbar-header"> <label for="toggle" class="sidebar-toggle"></label> </div> <input type="checkbox" id="toggle" onchange='handleChange(this)' /> </div> </nav> <div class="sidebar"> </div> 

暂无
暂无

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

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