为什么css声明中不允许使用非中断空格?

为什么css声明中不允许使用非中断空格?,css,Css,我正在修复一些不起作用的css样式,发现css声明中不允许使用不间断空格(\u00A0),并使其中断解析。 它在所有浏览器中都能可靠地断开,因此这种行为似乎是意料之中的。有人知道为什么会这样吗? 文本应该是红色,但不是,删除不间断的空格将修复它 var css=document.createElement(“样式”); css.type=“text/css”; css.innerHTML=“.text\u00A0{color:red}”; document.head.appendChild(c

我正在修复一些不起作用的css样式,发现css声明中不允许使用不间断空格(\u00A0),并使其中断解析。 它在所有浏览器中都能可靠地断开,因此这种行为似乎是意料之中的。有人知道为什么会这样吗? 文本应该是红色,但不是,删除不间断的空格将修复它

var css=document.createElement(“样式”);
css.type=“text/css”;
css.innerHTML=“.text\u00A0{color:red}”;
document.head.appendChild(css)

红色?
在CSS中,U+00A0不间断空格不是空白。只有ASCII空格、制表符、换行符和换行符算作空白。从:

只有“空格”(U+0020)、“制表符”(U+0009)、“换行符”(U+000A)、“回车符”(U+000D)和“换行符”(U+000C)可以出现在空白处。其他类似空格的字符,如“em空格”(U+2003)和“表意空格”(U+3000),从来都不是空白的一部分

此处未提及U+00A0,但由于它不是允许的字符之一,因此暗示不允许使用它

因为它没有被视为空白,所以它必须被视为选择器的一部分。From(其中提到了代码点U+00A0,尽管纯属巧合):

在CSS中,标识符(包括选择器中的元素名称、类和ID)只能包含字符[a-zA-Z0-9]和ISO 10646字符U+00A0及更高,加上连字符(-)和下划线(33;)

选择器实质上变成了一个查找带有
class=“text”
的元素的选择器,其中不间断空格是类名的一部分:

var css=document.createElement(“样式”);
css.type=“text/css”;
css.innerHTML=“.text\u00A0{color:red}”;
document.head.appendChild(css)
红色?

红色这是因为不间断空格与任何其他字符一样是一个字符。它恰巧看起来像一个空间,但它与“a”或“4”或“4”没有区别♥".

var css=document.createElement(“样式”);
css.type=“text/css”;
css.innerHTML=“.text\u00A0{color:red}”;
document.head.appendChild(css);

red?
为什么你想要这样一个不可破坏的空格这就是为什么许多程序员建议将代码格式化为80个字符或更少的行。这样的变通方法就不需要了。我不需要那个空格。但它以某种方式出现在css中(可能是从某处复制粘贴的),并无声地中断了css解析。此外,例如javascript,正确地威胁到了此类空格,因此这似乎是一种奇怪的行为。问题的标题具有误导性。css中不允许使用空格,它只是不是空白。谢谢,这就澄清了问题。但是,允许这样做似乎仍然很奇怪。它可以继续可能会产生难以追踪的错误:(。