l2a*_*lba 6 css unicode char css-content
我只是想知道为什么在CSS中使用unicode时我不能在 unicode 之后放置空格 :
这是我的测试:
div {font-size:50px;}
div:before, div:after {color:green;}
.a:before {content: 'text-before \2022 ';}
.b:before {content: 'text-before • ';}
.c:after {content: ' \2022 text-after';}
.d:after {content: ' • text-after';}
Run Code Online (Sandbox Code Playgroud)
<div class="a">A-Hello</div>
<div class="b">B-Hello</div>
<div class="c">C-Hello</div>
<div class="d">D-Hello</div>
Run Code Online (Sandbox Code Playgroud)
所以你会看到B
并D
使用非unicode允许在char之后添加空格.但是当使用unicode(A
和C
)空格时就消失了.
.x:before {content: '\2022 ';}
Run Code Online (Sandbox Code Playgroud)
<div class="x">Hello</div>
Run Code Online (Sandbox Code Playgroud)
所以问题是:为什么以及如何在uncicode之后添加真正的空间字符(因为我们在键盘上按下空格键)?(不使用边距填充)
该空间作为转义序列的一部分被消耗,以防止其他十六进制字符被误解为转义序列的一部分.从规格:
如果[0-9a-fA-F]范围内的字符跟随十六进制数字,则需要清除数字的结尾.有两种方法可以做到这一点:
- 带空格(或其他空白字符):"\ 26 B"("&B").在这种情况下,用户代理应将"CR/LF"对(U + 000D/U + 000A)视为单个空格字符.
- 通过提供正好6个十六进制数字:"\ 000026B"("&B")
例如,空格有助于区分字符串'\2022 ff'
和字符串'\2022ff'
,这意味着完全不同(我甚至不确定它代表一个真正的字符).
要在特殊字符后添加空格,请添加另一个空格字符:
.x:before {content: '\2022 ';}
Run Code Online (Sandbox Code Playgroud)
<div class="x">Hello</div>
Run Code Online (Sandbox Code Playgroud)