2

我正在为用户设计一个 GUI 来创建 Web 按钮。我想知道不为 CSS 属性输入值是否可以?

如果用户没有选择一个属性,我已经研究过插入属性的默认值。但是我遇到了没有像“颜色”这样的默认值的属性的问题。我在以下位置找到了所有 CSS 属性的参考:https ://developer.mozilla.org/en/CSS/CSS_Reference

我已经在所有 5 个主要浏览器的最新版本中对其进行了测试,并且可以正常工作;但我不确定这在未来是否会一直如此。如果用户没有为它选择一个值,我已经考虑过使用 PHP 以编程方式删除整个属性。但是我想知道您对在使用 CSS 属性之前没有指定值的想法是什么?

CSS:

.btn {
    background-color: #000000;
    border-color: #666666;
    border-style:;
    border-width:2px;
    color:;
}

编辑

这是我的解决方案:

我只是删除了用户未使用 PHP 定义的任何 CSS 属性。

$css = preg_replace('/[\n\r].+:;/i', '', $css);
4

3 回答 3

8

没有值的声明,例如color:;,违反了 CSS 语法,所以从书上看是不行的。另一方面,CSS 2.1 规范定义了强制错误处理原则,即用户代理应忽略此类规则(请注意,该规范明确提到了缺失的属性值作为“错误声明”的示例)。

这意味着该属性的值将由用户代理确定,就好像您的样式表的这一部分不存在一样。因此,该值将由可能应用的其他样式表定义(包括浏览器默认样式表,它为属性定义浏览器默认值),或者在其他样式表中没有相关设置的情况下,由属性的初始值定义为在 CSS 规范中指定。

于 2012-07-24T22:29:30.657 回答
6

虽然在某些情况下属性确实具有默认值(*),但它通常不会那样工作。规范所做的是提供初始值,这些初始值通常在规范中提到。color是少数例外之一,默认值是用户首选项的值(在 Firefox 中,编辑 -> 首选项 -> 内容 -> 颜色 -> 文本)。大多数其他人确实具有明确定义的初始值,例如border-style它的none.

这是官方的 W3C 文档,也就是标准: http ://www.w3.org/TR/CSS21/

绝对清楚,属性必须根据规则具有值。没有值的属性是错误的,将被忽略。

(*) 示例:在诸如 之类的简写中border:green,您不必指定border-styleand border-width,然后将它们设置为其默认(初始)值。

于 2012-07-24T21:32:02.423 回答
0

您可以使用初始属性值,这将使属性使用它的初始值,或浏览器的默认值。我不确定对它的支持,但我很确定我已经使用它很长时间了,它至少在 IE8+ 中一直对我有用。

color: initial;
于 2013-07-11T12:21:59.077 回答