【问题标题】:difference between body and * in csscss中body和*的区别
【发布时间】:2013-11-20 15:04:48
【问题描述】:

有什么区别

body{
  background: #4b4b4b;
}

*{
    background: #4b4b4b;
 }

哪个优先级更高?

【问题讨论】:

标签: css


【解决方案1】:

body 选择器具有更高的优先级,但* 选择器适用范围更广,因此在<body>foo<p>bar</p></body> 中,body 选择器将确定文本foo 的背景,但* 选择器将确定<p> 元素的背景。

请注意,许多浏览器还会在 <body> 周围创建一个元素,包括其边距和滚动条,因此 * 选择器也可能决定该区域的颜色。

【讨论】:

  • 我们可以在相同的设计中使用 body 和 *,还是建议只使用一个,比如它必须是 body 或 *。
  • @GladwinJames,如果你想匹配一件事,那么body* 更可取。当样式属性像<style>*{font-size: 150%}</style><body><div>a<div>b<div>c<div>d<div>e 那样成倍增加时,这很重要。还要注意:root,它是body 的一个很好的替代品。
【解决方案2】:

body 选择正文元素,* 选择所有元素。

在这两个中,body 具有更高的优先级。

【讨论】:

  • 如果使用设置背景颜色的目的,使用body优于使用*。
【解决方案3】:

有什么区别?

body 是一个元素选择器(选择一个元素body),而* 是一个通用选择器(选择所有元素)。

哪个具有更高的特异性(优先级的正确术语)?

在计算选择器的特异性时(将其视为二进制数):

  • 如果是内联样式声明,请添加 1000
  • 为每个 id 属性值添加 0100
  • 为每个类属性值、属性选择或伪类添加0010
  • 为每个元素和伪元素添加0001
  • 为每个组合器或通用选择器添加0000
  • 如果它是继承声明,则它没有特异性。

因此body 的特异性是0001* 的特异性是0000body 获胜。

【讨论】:

    【解决方案4】:

    某些 HTML 元素具有默认背景颜色,例如 <input><select> 等。使用 * 也会影响它们,而不仅仅是 <body> 和所有具有透明背景的子元素。

    【讨论】:

    • *{ background: #4b4b4b; } 不仅会影响具有默认背景的元素,它还会影响所有可以具有背景颜色的元素
    • @Mark:我是怎么说的?
    • 以为您在暗示它只会影响具有默认背景颜色的元素(例如您提到的表单元素),但当然它也会为例如背景着色(通常是透明的) div元素
    • @Mark:嗯,是的,也许你错过了“代替”部分?
    【解决方案5】:
    1. 不要使用*通用选择器,这不是标准方式
    2. body background 仅适用于全身背景,* background 表示对 body 内的所有元素应用相同的背景
    3. 现在在 css3 中的日子分别使用 reset css 和 main style css

    【讨论】:

    • 其实通用选择器(*)选择所有元素包括 body.
    猜你喜欢
    • 1970-01-01
    • 2015-10-24
    • 2012-08-31
    • 2011-11-03
    • 1970-01-01
    • 2016-05-23
    • 1970-01-01
    • 1970-01-01
    • 2018-06-28
    相关资源
    最近更新 更多