我不确定你的第二个css代码是否可以在display: none的先前设置下访问,如果你想使用复选框将所有子元素与其自身隐藏,你可以做什么:
.className[type=”checkbox”].checked{
display: none;
}
但是,如果您想隐藏所有子项,并且仅在单击父项时显示它。您不能仅在 css 中执行此操作,css 仅用于某些元素的静态样式。页面交互通常由 javascript 完成。我假设你的父元素的类名是.wpf_items_wrapper .wpf_item .wpf_submenu,然后在js文件中:
const parentTag = document.querySelector('.wpf_items_wrapper .wpf_item .wpf_submenu');
const childTags = parentTag.querySelectorAll('*');
parentTag.addEventListener('click', ()=>{
childTags.forEach(ch=>{
ch.style.display = 'block';
});
});
另外,如果你想通过点击父级将所有子级的显示从无更改为阻塞,我建议设置一个全局变量作为标志。
const parentTag = document.querySelector('.wpf_items_wrapper .wpf_item .wpf_submenu');
const childTags = parentTag.querySelectorAll('*');
var flag = true;
// initially set display to none if you haven't done it in css
window.addEventListener('load', ()=>{
childTags.forEach(ch=>{
ch.style.display = 'none';
});
});
parentTag.addEventListener('click', ()=>{
if(flag){
childTags.forEach(ch=>{
ch.style.display = 'block';
});
}else{
childTags.forEach(ch=>{
ch.style.display = 'none';
});
}
flag = !flag;
});