我正在为用户设计一个用于创建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);
答案 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-style
和border-width
,然后将其设置为默认(初始)值。
答案 2 :(得分:0)
您可以使用初始属性值,这将使该属性使用它的初始值或浏览器默认值。我不确定对它的支持,但我很确定我已经使用它很长一段时间了,它至少在IE8 +中对我有效。
color: initial;