使用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: '> '; }
它实际上输出
到屏幕上。 我已经通过直接粘贴字符来解决其他奇怪的字符(如»),但是如何粘贴一个
?
你必须使用逃脱的unicode:
喜欢
.breadcrumbs a:before { content: '>\0000a0'; }
更多信息: http : //www.evotech.net/blog/2007/04/named-html-entities-in-numeric-order/
CSS不是HTML。
是HTML中的一个字符实体引用 ; 一个替代字符参考 
。 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提到,正确的立场在于
在所有的CSS情况将是
'\a0 '
意味着该空格是hexstring的终止符,并被转义序列吸收。 他进一步指出了这个权威性的描述 ,这听起来像是我下面所描述和解决的问题的一个很好的解决scheme。
你需要做的是使用逃脱的Unicode。 尽pipe你已经被告知\00a0
不是一个完美的替身
在CSS中; 所以试试:
content:'>\a0 '; /* or */ content:'>\0000a0'; /* because you'll find: */ content:'No\a0 Break'; /* and */ content:'No\0000a0Break'; /* becomes No Break as opposed to below */
特别使用\0000a0
作为
。 如果你尝试,按照mathieu和millikin的build议:
content:'No\00a0Break' /* becomes No਋reak */
它将B转换为hex转义字符。 0-9a-fA-F也是如此。
使用hex代码为非破坏空间。 像这样的东西:
.breadcrumbs a:before { content: '>\00a0'; }
我发现将符号(例如▾( ▾
)转换为\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">⛱</div>
这将导致</s>
-
在Css中:
.ics::before {content: \9969;}
用HTML代码<div class="ics"></div>
这也导致了</s>