为什么我在开启之后不能使用空格:之前:使用unicode之后的内容

时间:2016-11-29 11:29:47

标签: css unicode char css-content

我只是想知道为什么在 CSS 时使用 unicode 我无法在 unicode之后放置空间 :< / p>

这是我的测试:

&#13;
&#13;
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';}
&#13;
<div class="a">A-Hello</div>
<div class="b">B-Hello</div>
<div class="c">C-Hello</div>
<div class="d">D-Hello</div>
&#13;
&#13;
&#13;

所以你会看到使用非unicode的BD允许在char之后添加空格。但是当使用unicode(AC)时,空格就消失了。

&#13;
&#13;
.x:before {content: '\2022 ';}
&#13;
<div class="x">Hello</div>
&#13;
&#13;
&#13;

所以问题是:为什么以及如何在uncicode之后添加真实空间字符(因为我们在键盘上按下空格键)(不使用边距填充)

2 个答案:

答案 0 :(得分:8)

空格作为转义序列的一部分使用,以防止其他十六进制字符被误解为转义序列的一部分。来自spec

  

如果[0-9a-fA-F]范围内的字符跟随十六进制数字,则需要清除数字的结尾。有两种方法可以做到这一点:

     
      
  1. 带有空格(或其他空格字符):&#34; \ 26 B&#34; (&#34;&安培; B&#34)。在这种情况下,用户代理应该对待&#34; CR / LF&#34;对(U + 000D / U + 000A)作为单个空格字符。
  2.   
  3. 提供正好6个十六进制数字:&#34; \ 000026B&#34; (&#34;&安培; B&#34)
  4.   

例如,空格有助于将字符串'\2022 ff'与字符串'\2022ff'区分开来,这意味着完全不同(我甚至不确定它是否代表实际字符)。

要在特殊字符后添加空格,请添加另一个空格字符:

&#13;
&#13;
.x:before {content: '\2022  ';}
&#13;
<div class="x">Hello</div>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您可以在点之前或之后添加unicode空格'\00a0',如下所示:

&#13;
&#13;
div {font-size:50px;}
div:before, div:after {color:green;}
.a:before {content: 'tex-before \2022 \00a0';}
.b:before {content: 'text-before • ';}
.c:after {content: ' \2022 \00a0 text-after';}
.d:after {content: ' • text-after';}
&#13;
<div class="a">A-Hello</div>
<div class="b">B-Hello</div>
<div class="c">C-Hello</div>
<div class="d">D-Hello</div>
&#13;
&#13;
&#13;