我的样式表未覆盖Normalize.css <h1>保证金

时间:2018-05-02 14:17:42

标签: css

我不知道为什么我的样式表覆盖normalize.css的边距值。

在html中,样式表链接的顺序是正确的:

<link rel="stylesheet" href="css/normalize.css">
<link rel="stylesheet" href="css/2may.css">

normalize.css 中, h1 边距设置如下:

h1 {
  font-size: 2em;
  margin: 0.67em 0;
}

使用我的样式表,我试图覆盖它:

*{
  box-sizing: border-box;
  color: #ddd;
  padding: 0; 
  border: 0;
  margin: 0; 
  text-decoration: none;
}

3 个答案:

答案 0 :(得分:2)

因为h1*

更精确

您应该阅读this

示例:

*               /* a=0 b=0 c=0 -> specificity =   0 */
LI              /* a=0 b=0 c=1 -> specificity =   1 */
UL LI           /* a=0 b=0 c=2 -> specificity =   2 */
UL OL+LI        /* a=0 b=0 c=3 -> specificity =   3 */
H1 + *[REL=up]  /* a=0 b=1 c=1 -> specificity =  11 */
UL OL LI.red    /* a=0 b=1 c=3 -> specificity =  13 */
LI.red.level    /* a=0 b=2 c=1 -> specificity =  21 */
#x34y           /* a=1 b=0 c=0 -> specificity = 100 */
#s12:not(FOO)   /* a=1 b=0 c=1 -> specificity = 101 */

在您的情况下,只需添加:

margin: 0;

到你的h1声明。

答案 1 :(得分:1)

如果要覆盖h1中的normalize.css样式,您可能希望在CSS中定位相同的选择器:

h1 {
  box-sizing: border-box;
  color: #ddd;
  padding: 0; 
  border: 0; 
  margin: 0;  /* this is the new one */
  text-decoration: none;
}

答案 2 :(得分:1)

更具体的规则会覆盖*等常规规则。这就是为什么normalize.css会覆盖那个选择器。

例如,如果我有这两个选择器,则应用更具体的选择器,在这种情况下,它是.foo#someId

.foo#someId { 
  color: red; 
}

.foo { color: blue; }

如果我有两个相同的,则应用第一个:

.foo{ color: red } //text will be red

.foo{ color: blue }

以下是规范的链接以获取更多信息:

http://www.w3.org/TR/2011/REC-CSS2-20110607/cascade.html#cascade