【问题标题】:Why can't I override display property applied via an asterisk?为什么我不能覆盖通过星号应用的显示属性?
【发布时间】:2014-10-16 12:13:58
【问题描述】:

我想以某种屏幕分辨率隐藏所有元素,只显示想要的元素可见:

例如:

*{
    display: none;
}
#block{
    display: block !important;
}

但这不会再覆盖显示属性。 demo

【问题讨论】:

  • 你看过演示吗?它不工作..
  • 它将display: none; 应用于body 元素;因为它是不可见的,所以它里面的任何东西都不可见,无论它的显示值设置为什么。
  • +1。这是个好问题。很多人都会监督这是一件棘手的事情。
  • 即使在将显示块应用到正文之后,元素也不可见jsfiddle.net/nk8np9vo/1
  • 您还需要申请htmljsfiddle.net/nk8np9vo/2

标签: css css-selectors


【解决方案1】:

* 定位文档中的所有元素,包括htmlbody。这就是内容仍然隐藏的原因 - verify that

如果你想选择<body> 中的所有元素,你应该这样做:

body * {
    display: none;
}

#block {
    display: block;
}
<div id="block">block</div>

【讨论】:

【解决方案2】:

因为bodyhtml 包含在通用选择器* 中,它具有display: none; 规则。

http://jsfiddle.net/nk8np9vo/6/

【讨论】:

【解决方案3】:

如果你用你最喜欢的 DOM 检查器打开目标框架,你会看到 <body> 仍然隐藏:

【讨论】:

  • @misterManSam - 到目前为止,其他答案中有很好的解释。我的只是提供了有关如何诊断此类问题的提示。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-21
  • 2020-11-06
相关资源
最近更新 更多