如果该属性没有默认值,是否可以在CSS中覆盖属性?
例如,假设您的主样式表定义了特定元素的边框:
#element {
border: 1px solid #000;
}
如果要从辅助样式表中禁用边框,可以执行以下操作:
#element {
border: none;
}
假设辅助样式表在主要样式表之后加载,border: none
规则将优先并删除边框。
但是如果你试图覆盖没有默认值或空值的属性呢?
#element {
position: absolute;
left: 0;
}
现在说,在你的辅助样式表中,你想要这样做:
#element {
right: 0;
top: 0;
}
你不想要left
的任何价值。没有left: none;
这样的东西,所以......你如何“取消声明”主样式表中指定的left
属性?
答案 0 :(得分:19)
如果我正确地阅读了您的问题,您是否希望在一个样式表中“擦除”另一个样式表中的声明,以便该属性计算为默认值?
目前无法将其重置为浏览器用作给定元素默认值的任何值。最接近的是CSS3 initial
keyword,它根据规范将属性重置为其初始值/默认值,而不是根据浏览器的定义:
#element {
left: initial;
right: 0;
top: 0;
}
除了Safari / Chrome和Firefox(-moz-initial
)之外,浏览器支持不多,所以您的下一个最佳选择是查找初始值并对其进行硬编码。对于left
属性,它是auto
(我相信它对于所有浏览器中的任何元素都是这个值),所以:
#element {
left: auto;
right: 0;
top: 0;
}
答案 1 :(得分:4)
每个CSS属性都有依赖于浏览器的默认值,因此没有没有默认值的CSS属性。
正如BoltClock所说,initial
是最佳选择。
以下是一些关于它的规范:
http://www.w3.org/TR/css3-cascade/
在jmbertucci发表评论之前,我并没有想到我是如何做到这一点的,
通过使用CSS重置,您可以定义自己的默认值,这些值不依赖于使用的浏览器。
如果您在自己的reset.css中定义left: 10px;
,则可以在需要时使用相同的值以恢复默认值。
例如,我经常从reset.css中查找字体大小,并使用它们进行高度计算,这取决于文本高度。
如果使用PHP或其他预处理,您也可以将其用于CSS文件:
<?php
define('DEFAULT_WIDTH', 'width: 100px;');
?>
div {
top: 100px;
<?php print DEFAULT_WIDTH; ?>
}