【发布时间】:2012-03-06 02:31:16
【问题描述】:
在什么情况下我们可以使用css * 选择器?有多少 * 选择器有用?
只是为了让css重置还是破解
* { margin: 0; padding: 0; }
或者它还有其他有效的有用用途?有没有办法使用 * 选择器来优化 css 使用 * 选择器?
所有浏览器都支持吗?
【问题讨论】:
标签: html css css-selectors
在什么情况下我们可以使用css * 选择器?有多少 * 选择器有用?
只是为了让css重置还是破解
* { margin: 0; padding: 0; }
或者它还有其他有效的有用用途?有没有办法使用 * 选择器来优化 css 使用 * 选择器?
所有浏览器都支持吗?
【问题讨论】:
标签: html css css-selectors
它主要用于你想表达存在一个元素但你不在乎它是什么的地方。例如:
#mything * span { color: red; }
选择神话中的跨度,但不选择直接神话中的跨度。
当您使用* 作为全局匹配时,您应该谨慎使用。因为它可能会影响页面上的每一个(可能是数千个)元素,所以它肯定不是优化;特别是当它是选择器中的最后一件事时(例如.thing * 或仅*),它使大多数浏览器选择器引擎比.thing 等更简单的选择器更难工作。您可以使用 * 规则进行重置,但使用大量规则并不是一个好主意。
(我个人有点反对* { margin: 0; padding: 0; } 修复。它影响的元素比实际需要的要多;真正的“问题边距元素”只是列表元素,<form> 真的。一些表单控件看起来删除填充错误。)
【讨论】:
* * 这是一个解决 IE6 不支持 > 的方法,但性能不会很好,因为尾随的 *s 要求浏览器选择每个页面上的元素,两次,然后缩小范围。我不愿意向其他浏览器提供这种黑客攻击。对我来说,将padding-left: 115px 放在标注上并在那里设置背景图像而不是h3 似乎更简单,您可能只是简单地使用display: none。不需要额外的浮点数或子选择器。
几乎所有现代事物都支持它......
* 在您选择任何子元素时很有用。因此,如果我想为 id 为“fudge”的元素内的所有元素添加一些边距,则选择器将是:
#fudge > *
{
margin-left:5px;
}
【讨论】: