我希望能够将元素的margin-bottom
设置为默认值。
考虑下面的例子,其中有h1
元素,它们各自的margin-bottom
样式属性设置为0:
h1 {
border: 1px solid red;
margin-bottom: 0;
}
p {
margin: 0;
}
<h1>First Heading</h1>
<p>Paragraph</p>
<h1 id="normal-margin">Second Heading</h1>
<p>Paragraph</p>
如何将#normal-margin
的margin-bottom值重置为初始默认值?显然,使用initial
是行不通的,因为margin-bottom
的初始值是0。
我意识到在这个微不足道的例子中,我可以简单地将:not(#normal-margin)
添加到h1
的样式定义中来解决这个问题。然而,我希望有一个解决方案,可以"撤销"边距并将其重置为初始值。
我想我将不得不硬编码值到CSS中,这对我来说似乎有点便宜。这是解决这个问题的唯一办法吗?
我想你要找的属性是unset
。
unset
如果继承父属性,则将属性重置为其继承值;如果不是继承父属性,则重置为其初始值。Via - Mozilla Docs
jsFiddle: http://jsfiddle.net/AndrewL32/65sf2f66/58/
div {
border: medium solid green;
margin: 10px 0px;
}
h2 {
margin-bottom:10px;
}
/* but make those in the sidebar use the value of the 'color' property (initial value) */
h2.specialHeader {
margin-bottom: unset;
}
<div><h2>Normal Header</h2></div>
<div><h2 class="specialHeader">Special Header</h2></div>
浏览器支持:
Chrome:> v.41
FireFox:> v.27
Edge:> v.13
Opera:> v.28
Safari:> v9.1
IE:不支持
查看所有(非)支持的浏览器
目前是不可能的。在将来,使用revert
关键字
如7.3所述。显式默认,有4种不同的默认行为:
-
initial
设置属性为初始值。margin-*
就是0
-
inherit
将属性设置为父元素的值(或根元素的初始值)。 -
unset
对于继承属性的行为与inherit
相同,否则与initial
相同。margin-*
不是遗传的,所以会产生0
。 -
revert
的行为取决于声明的来源- 对于user-agent origin,它的行为为
unset
- 对于用户源,它回滚级联到用户代理级别,以便计算指定的值,就像没有为该属性指定作者级别或用户级别规则一样。
- 对于作者来源,它将级联回滚到用户级别,以便计算指定的值,就像没有为该属性指定作者级别规则一样。
- 对于user-agent origin,它的行为为
所以你想要的行为是revert
的行为,即
- user-agent为
h1
元素添加一些边距 - 您的(作者)声明之一删除了该边距
-
revert
回滚到user-agent 定义的边距
revert
是最近添加到CSS级联和继承级4规范的,它仍然只是一个草案。因此,浏览器还不支持。