2012-07-24 39 views
0

我正在为用户设计一个GUI来创建网页按钮。我想知道是否可以不输入CSS属性的值?没有价值的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); 
+4

您可以使用“自动”或“继承”。 – scrappedcola 2012-07-24 21:28:20

+0

我认为它会很好,它不会验证,但它不会弄乱任何东西。浏览器准备让人们拼错东西,所以他们只是不会注意空的规则。 – dezman 2012-07-24 21:30:32

+0

如果用户没有指定一个值,那么您可以不只是不包含该css规则? – 2012-07-24 22:02:47

回答

3

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

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

要绝对明确,属性必须按规定有一个值。没有值的属性是一个错误,将被忽略。 (*)例如:如border:green这样的快捷方式,您不必指定border-styleborder-width,然后将这些值设置为它们的默认(初始)值。

+0

如果downvoter可以解释我的答案有什么问题,我可以改进它,所以它不会有你现在感觉到的负面问题,并且可以撤回你的downvote。双赢! – 2012-07-24 22:05:15

+0

属性具有初始值;这与默认值不一样。整个问题与这个问题无关。行为不是未定义的。 – 2012-07-24 22:22:50

+0

@ JukkaK.Korpela你是对的。这是更好吗? – 2012-07-25 06:55:50

5

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

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

0

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

color: initial; 
+0

,我不使用它 – 2016-09-08 22:51:45