我有一个链接href
其值中包含回车符的属性(HTML 无法更改):
<a href="
http://google.com
">Testing</a>
我最初认为反斜杠在字符串内部使用时可以用来转义回车符(U+000D),但后来在 CSS 规范中读到了这一点:
任意字符(十六进制数字、换行符、回车符或换页符除外) 可以用反斜杠转义以删除其特殊含义。例如,“\””是由一个双引号组成的字符串。
这可能吗?我尝试过使用\a
and \n
也没有任何运气。
http://jsfiddle.net/AHuvh/1/
您拥有的选择器不起作用的原因:
a[href="\
http://google.com\
"]
是因为:
首先,在字符串内部,反斜杠后跟换行符将被忽略(即,该字符串被视为不包含反斜杠或换行符)。在字符串之外,反斜杠后跟换行符代表其自身(即 DELIM 后跟换行符)。
这在您引用的上一段中提到过第4.1.3节,以及为什么它说换行符是不能用反斜杠转义的字符之一。
这使得它等效于以下选择器:
a[href=" http://google.com"]
仅当其属性值不包含任何换行符时,它才会与您的元素匹配。
也就是说,它is事实上可以通过包含换行符的属性值来匹配元素。然而,CSS 让这变得有点复杂:
-
要在 CSS 字符串中表示换行符,您需要使用\a
转义序列(不区分大小写,最多 6 个十六进制数字)。这在第4.3.7节, 在字符串上(无论是在属性值还是属性选择器中,它们的处理方式相同):
字符串不能直接包含换行符。要在字符串中包含换行符,请使用表示 ISO-10646 (U+000A) 中的换行符的转义符,例如“\A”或“\00000a”。该字符代表 CSS 中“换行符”的通用概念。
\n
在 CSS 中没有特殊含义;事实上,它是一样的n
.
-
如果空格直接跟在转义序列后面,例如\a
,该空格必须加倍,以便可以消耗紧随转义序列的空格字符。再次参见第 4.1.3 节,其中指出:
十六进制转义后仅忽略一个空白字符。请注意,这意味着转义序列后面的“真实”空格必须加倍。
这可能就是为什么你无法让它工作,即使\a
。可以理解的是,这是一个令人难以置信的模糊规则,尤其是在处理空白字符时。
这会产生以下选择器,正确应用样式:
a[href="\a http://google.com\a"]
请注意,有five第一个之间有空格字符\a
和 URL,而相比之下,HTML 中的换行符后面只有四个空格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)