首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >覆盖没有默认值的CSS属性

覆盖没有默认值的CSS属性
EN

Stack Overflow用户
提问于 2012-04-18 05:05:10
回答 2查看 6.7K关注 0票数 10

在CSS中,如果属性没有默认值,是否可以覆盖该属性?

例如,假设您的主样式表定义了特定元素的边框:

代码语言:javascript
复制
#element {
  border: 1px solid #000;
}

如果您想从第二个样式表中禁用边框,可以这样做:

代码语言:javascript
复制
#element {
  border: none;
}

假设次样式表是在主样式表之后加载的,则border: none规则将优先并删除边框。

但是,如果您试图覆盖一个没有默认值或空值的属性,该怎么办呢?

代码语言:javascript
复制
#element {
  position: absolute;
  left: 0;
}

现在,假设在你的第二个样式表中,你想这样做:

代码语言:javascript
复制
#element {
  right: 0;
  top: 0;
}

你不想让left有任何价值。没有left: none;这样的东西,so...how您是否“取消声明”在主样式表中分配的left属性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-18 05:07:14

如果我没看错您的问题,您是否希望在一个样式表中“擦除”另一个样式表中的声明,以便该属性将计算为默认值?

目前还没有办法将其重置为浏览器用作给定元素的默认值。您能得到的最接近的是CSS3 initial keyword,它根据规范而不是浏览器定义属性的方式将属性重置为其初始/默认值:

代码语言:javascript
复制
#element {
  left: initial;
  right: 0;
  top: 0;
}

除了Safari/Chrome和火狐(作为-moz-initial)之外,浏览器对它的支持并不多,所以你的下一个最好的选择是查找初始值并对其进行硬编码。对于left属性,它是auto (我相信它对于所有浏览器中的任何元素都是这个值),所以:

代码语言:javascript
复制
#element {
  left: auto;
  right: 0;
  top: 0;
}
票数 20
EN

Stack Overflow用户

发布于 2012-04-18 05:13:49

每个CSS属性都有依赖于浏览器的默认值,所以不存在没有默认值的CSS属性。

正如BoltClock所说,initial是最佳选择。

以下是关于它的一些规范:

http://www.w3.org/TR/css3-cascade/

编辑:

在jmbertucci发表评论之前,我没有想过我是如何做到这一点的。

通过使用CSS重置,您可以定义自己的默认值,而不依赖于使用的浏览器。如果您在自己reset.css中定义了left: 10px;,那么当您需要它回退到默认值时,您可以使用相同的值。

例如,我经常从我的reset.css中查找字体大小,并使用它们进行依赖于文本高度的高度计算。

如果使用PHP或其他一些预处理,你也可以将其用于CSS文件:

代码语言:javascript
复制
<?php
define('DEFAULT_WIDTH', 'width: 100px;');
?>

div {
    top: 100px;
    <?php print DEFAULT_WIDTH; ?>
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10199141

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档