【问题标题】:in what conditions we can use css * selector?在什么情况下我们可以使用 css * 选择器?
【发布时间】:2012-03-06 02:31:16
【问题描述】:

在什么情况下我们可以使用css * 选择器?有多少 * 选择器有用?

只是为了让css重置还是破解

* { margin: 0; padding: 0; }

或者它还有其他有效的有用用途?有没有办法使用 * 选择器来优化 css 使用 * 选择器?

所有浏览器都支持吗?

【问题讨论】:

标签: html css css-selectors


【解决方案1】:

它主要用于你想表达存在一个元素但你不在乎它是什么的地方。例如:

#mything * span { color: red; }

选择神话中的跨度,但不选择直接神话中的跨度。

当您使用* 作为全局匹配时,您应该谨慎使用。因为它可能会影响页面上的每一个(可能是数千个)元素,所以它肯定不是优化;特别是当它是选择器中的最后一件事时(例如.thing * 或仅*),它使大多数浏览器选择器引擎比.thing 等更简单的选择器更难工作。您可以使用 * 规则进行重置,但使用大量规则并不是一个好主意。

(我个人有点反对* { margin: 0; padding: 0; } 修复。它影响的元素比实际需要的要多;真正的“问题边距元素”只是列表元素,<form> 真的。一些表单控件看起来删除填充错误。)

【讨论】:

  • 但是我们可以在重置后为表单元素定义css
  • 这是一个有用的例子:ghettocooler.net/2005/11/13/image-floats-without-the-text-wrap(第二个例子:每个孩子都有左边距,'* *' 没有左边距以避免双倍的边距)。
  • * * 这是一个解决 IE6 不支持 > 的方法,但性能不会很好,因为尾随的 *s 要求浏览器选择每个页面上的元素,两次,然后缩小范围。我不愿意向其他浏览器提供这种黑客攻击。对我来说,将padding-left: 115px 放在标注上并在那里设置背景图像而不是h3 似乎更简单,您可能只是简单地使用display: none。不需要额外的浮点数或子选择器。
【解决方案2】:

几乎所有现代事物都支持它......

* 在您选择任何子元素时很有用。因此,如果我想为 id 为“fudge”的元素内的所有元素添加一些边距,则选择器将是:

 #fudge > * 
{
   margin-left:5px;
}

【讨论】:

    猜你喜欢
    • 2017-11-30
    • 1970-01-01
    • 1970-01-01
    • 2016-09-12
    • 2017-05-08
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2014-12-13
    相关资源
    最近更新 更多