使用CSS内容添加HTML实体

你如何使用CSS content属性添加html实体?

我有一些链接,通过在每个之前添加一个箭头,将其制作成面包屑风格列表。

 <div class="breadcrumbs"> <a>One</a> <a>Two</a> <a>Three</a> </div> 

其中有以下风格适用于它:

 .breadcrumbs a:before { content: '> '; } 

问题是,当面包屑列表变长,并换行到下一行时,箭头将保留在前一行。 显而易见的解决scheme是将空间更改为不间断的空间,但这不起作用:

 .breadcrumbs a:before { content: '>&nbsp;'; } 

它实际上输出&nbsp; 到屏幕上。 我已经通过直接粘贴字符来解决其他奇怪的字符(如»),但是如何粘贴一个&nbsp;

你必须使用逃脱的unicode:

喜欢

 .breadcrumbs a:before { content: '>\0000a0'; } 

更多信息: http : //www.evotech.net/blog/2007/04/named-html-entities-in-numeric-order/

CSS不是HTML。 &nbsp; 是HTML中的一个字符实体引用 ; 一个替代字符参考&#160; 。 160是Unicode中 NO-BREAK SPACE字符的十进制代码点 (实际上, UCS-2 ;请参阅HTML 4.01规范)。 该码点的hex表示是U + 00A0(160 = 10×16 1 + 0×16 0 )。 你会发现,在Unicode 代码图表和字符数据库 。

在CSS中,你需要为这些字符使用Unicode转义序列,这是基于字符代码点的hex值。 所以你需要写

 .breadcrumbs a:before { content: '>\a0'; } 

只要转义序列的最后一个string值是最后一个string就行了。 如果有字符出现,有两种方法可以避免误解:

a)(由他人提及)使用正好六个hex数字作为转义序列:

 .breadcrumbs a:before { content: '>\0000a0foo'; } 

b)在转义序列之后添加一个空格(例如空格)字符:

 .breadcrumbs a:before { content: '>\a0 foo'; } 

(由于f是一个hex数字, \a0f在这里是指GURMUKHI LETTER EE ,或者如果你有一个合适的字体。

分隔的空白将被忽略,并且这将被显示> foo ,其中这里显示的空间将是NO-BREAK SPACE字符。

白空间方法( '\a0 foo' )比六位方法( '\0000a0foo' )具有以下优点:

  • 键入更容易 ,因为前导零不是必需的,数字不需要计数。
  • 阅读起来比较容易 ,因为转义序列和后面的文本之间有空白,数字不需要计数。
  • 需要较less的空间 ,因为前导零不是必需的;
  • 它是向上兼容的 ,因为将来Unicode支持超过U + 10FFFF的代码点将需要修改CSS规范。

因此,要在转义字符后显示空格,请在样式表中使用两个空格 –

 .breadcrumbs a:before { content: '>\a0 foo'; } 

– 或者说明确:

 .breadcrumbs a:before { content: '>\a0\20 foo'; } 

有关详细信息,请参阅CSS 2.1的“4.1.3字符和大小写”部分 。

更新 :PointedEars提到,正确的立场在于&nbsp; 在所有的CSS情况将是
'\a0 '意味着该空格是hexstring的终止符,并被转义序列吸收。 他进一步指出了这个权威性的描述 ,这听起来像是我下面所描述和解决的问题的一个很好的解决scheme。

你需要做的是使用逃脱的Unicode。 尽pipe你已经被告知\00a0不是一个完美的替身&nbsp; 在CSS中; 所以试试:

 content:'>\a0 '; /* or */ content:'>\0000a0'; /* because you'll find: */ content:'No\a0 Break'; /* and */ content:'No\0000a0Break'; /* becomes No&nbsp;Break as opposed to below */ 

特别使用\0000a0作为&nbsp; 。 如果你尝试,按照mathieu和millikin的build议:

 content:'No\00a0Break' /* becomes No&#2571;reak */ 

它将B转换为hex转义字符。 0-9a-fA-F也是如此。

使用hex代码为非破坏空间。 像这样的东西:

 .breadcrumbs a:before { content: '>\00a0'; } 

我发现将符号(例如▾( &#9662; )转换为\25BE )的最简单方法是使用Microsoft calculator =)

是。 启用程序员模式,打开十进制系统,input9662 ,然后切换到hex,你会得到25BE 。 然后只需在开头添加一个反斜杠\

有一种方法来粘贴一个nbsp – 打开的charmap和复制字符160 。 但是,在这种情况下,我可能会使用填充来填充,如下所示:

 .breadcrumbs a:before { content: '>'; padding-right: .5em; } 

不过,您可能需要设置面包屑display:inline-block或其他内容。

例如 :

http://character-code.com/arrows-html-codes.php

例如:如果你想select你的angular色,我select了“&#8620”“&#x21ac”(我们使用HEX值)

 .breadcrumbs a:before { content: '\0021ac'; } 

结果:↬

而已 :)

我知道这是一个很老的post,但如果间隔是你所有的后,为什么不简单:

 .breadcrumbs a::before { content: '>'; margin-left: 8px; margin-right: 8px; } 

我以前用过这个方法。 在我的testing中,它与其他“>”在其他方面完全一致。

这里有两种方法:

  • 在HTML中:

    <div class="ics">&#9969;</div>

这将导致</s>

  • 在Css中:

    .ics::before {content: \9969;}

用HTML代码<div class="ics"></div>

这也导致了</s>