为什么在CSS中'!' 与其在基于C语言中的使用有相反的意义吗?

Dan*_*ows 11 css language-design operators

例如,在JavaScript中,!important意味着"不重要".在CSS中,它意味着"这很重要".

是否有CSS以外的语言使用感叹号进行肯定而不是否定?为什么是'!' 在CSS中选择?

编辑

我不知道这是不是巧合,但它!是ASCII表中最早的非系统和非空白字符(#32).在解析方面,会更快吗?

Gol*_*rol 5

!是一个感叹号,因此它本身表明某件事很重要。所以我宁愿说(其他)编程语言使用 ! 作为一个否定者。

在 HTML 中!是声明的一部分(就像<!-- -->声明注释和<!DOCTYPE ..>声明文档类型),因此它有另一个含义。

但话又说回来,CSS 根本不是一种编程语言。

即使在编程语言之间也存在差异。这是有道理的。如果它们都一样,那就只有一种语言。:D

  • 另一方面,CSS 确实具有类似 C 的结构,例如用于分隔块的“{”和“}”,用于结束样式的“;”等。而且它确实具有“NOT”运算符!所以OP的问题确实有道理。 (2认同)

0b1*_*011 3

!与其说是一个运算符,不如说它是一个转义字符。它是 的一部分important,而不是一个单独的部分(例如,在 JavaScript 中我将其视为!somevar,而在 CSS 中我将其视为!important)。所以,这并不像你所说的那样是肯定的;而是一种肯定。它恰好是他们选择放在关键字前面的字符important

\n\n

此外,在非编程语言中,!通常用于引起对某些事物的注意,尽管它通常还伴随着某种其他类型的形状/符号(例如 \xe2\x9a\xa0),这可能就是为什么 !选择的。将其视为important!或可能会有所帮助\xc2\xa1important!!important只是比其他选择更容易解析和输入)。

\n\n

编辑:正如 @mike-samuel 所指出的:“ CSS2.1 语法规范的词法扫描器!important部分列为单个标记 ( "!"({w}|{comment})*{I}{M}{P}{O}{R}{T}{A}{N}{T} {return IMPORTANT_SYM;}),尽管它确实允许 和 之间存在空格和注释!important

\n

  • @Blowski,如果最后有“!”,则必须向前查找“!”,以便可以区分“重要”标识符和“重要!”。注释和空格标记可以是任意长,因此您必须准备好在特殊标识符“important”之后使用任意数量的字符,但这在手动解析器中并不是真正的问题,因为注释被忽略。对于 Yacc 来说,“重要!”将是一个非词汇产生式。这是一个小小的不便。 (4认同)