CSS属性没有任何价值

时间:2012-07-24 21:24:55

标签: css

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

如果用户没有选择属性,我会考虑插入属性的默认值。但是我遇到的问题是没有默认值的属性,比如“color”。我找到了所有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);

3 个答案:

答案 0 :(得分:5)

没有值的声明(例如color:;)违反了CSS语法,所以本书不行。另一方面,CSS 2.1规范定义了强制性error processing principles,它说用户代理应忽略这样的规则(注意规范明确提到缺少的属性值作为“格式错误的声明”的一个例子)

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

答案 1 :(得分:3)

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

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

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

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

答案 2 :(得分:0)

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

color: initial;