html - 如何将样式普遍应用于所有标签,并为特定标签覆盖它

标签 html css

除了我在 html 中标记为事件的那个之外,我想让所有的 div 标签都不可见。以下是我页面的摘录:

 <div id="container">
   <div id="1">
     invisible
     <div>invisible</div>
     <div>invisible</div>
   </div>
   <div id="2" class="active">
     visible
     <div>visible</div>
     <div>visible</div>
 </div>

..或通过 javascript dom:

document.getElementById("2").classList.add('active');

预期的行为是仅更改类将使所有“事件”类始终可见,而所有未标记的类始终不可见。

我的第一次尝试,在添加父容器并用它选择之前,

 <style type="text/css">
   div { display:none; }
   div.active { display:block; }
 </style>

没用。它使所有 div 不可见。

第二次尝试,准确地选择了我真正想要选择的内容,效果很好:

 <style type="text/css">
   div#container>div.active { display:none; }
   div#container>div { display:block; }
 </style>

这是覆盖默认样式的正确方法吗?

最佳答案

您可以使用 :not(selector) 选择器。引用:w3schools .

只需添加到每个 div yourChoice + active 类,当您希望它们消失时,删除 yourChoice 类。然后使用 :not(.active) { display: none } 它们都消失了。

这是一个代码笔 https://codepen.io/sebaLinares/pen/EddNbQ

希望有用

关于html - 如何将样式普遍应用于所有标签,并为特定标签覆盖它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52955733/

相关文章:

html - 左对齐 Logo 文本和中心导航栏在同一行

javascript - 单击#-links 时避免窗口跳到顶部

css - CSS 中的 Bootstrap 列填充约束

css 可见性在悬停事件时不会改变

javascript - 当它换行到新行时,我可以将 CSS 应用于 flex-item 吗?

html - 在 <option>(对于 <select>)html 表单中包含图像

html - 如何在 HTML 中正确显示德语字符?

html - 根据需要折叠表格列(最大宽度)以完全适应第一列中的文本

javascript - 拖放以交换输入字段

javascript - 添加内容时自动水平滚动