如何将“ display:none;”应用于除“ text”以外的所有内容?

时间:2019-05-22 16:40:21

标签: html css display

所以我尝试了:

    body :not(.cc) { display: none; }

以及我在这里找到的其他各种东西。 ({!important*而不是正文,...) 我什至尝试使用该类的span元素代替td元素。 什么都没用。

<html>
<body>
<table><tr><td class="cc">text</td></tr></table>
Other text to not ne shown.
</body>
</html>

编辑:请原谅,我先在这里放一个误导性的html代码段。我删除了。
Edit2:我添加了“其他文本不显示。”

3 个答案:

答案 0 :(得分:2)

您将需要这样的东西

body *:not(table):not(tr):not(td):not(tbody),
td:not(.cc) {
  display: none;
}
<table>
  <tr>
    <td>hide</td>
  </tr>
  <tr>
    <td class="cc">show</td>
  </tr>
  <div>Other text to not be shown.</div>
</table>

基本上,将除表元素之外的所有内容隐藏在主体中,然后第二条规则隐藏不是td类的.cc。我添加了tbody,因为某些浏览器会将其自动添加到您的表中。基本的经验法则是,您不能隐藏任何包含要显示的元素的父母。

就文本而言,您需要将文本包装在一个元素中,以便可以使用CSS作为目标。当前它是由body标签包裹的,您不能隐藏body标签,否则将不会显示任何内容。

对于文本节点样式Is there a CSS selector for text nodes?

,您可以参考此问题

答案 1 :(得分:1)

您无法显示.cc类,因为它的内部隐藏体!您可以根据需要执行此操作

p:not(.cc) { 
display: none; 
}
    <p>text get's hidden</p>
    <p class="cc">text doesn't get hidden</p>
    <p>
    hello world!
    </p>

答案 2 :(得分:0)

为什么不先简单地为所有内容和类设置一个空白:

    body { display : none ; }
    .cc  { display : block; }