如何使用css content属性添加HTML实体?
使用类似的方法,只需将 打印到屏幕上,而不是不间断的空间:
1 2 3
| .breadcrumbs a:before {
content: ' ';
} |
- 在另一个意义上,使用CSS添加内容违反了关注点的分离,CSS仅用于样式定义。从可访问性的角度来看,最好避免使用CSS,因为禁用CSS会破坏整个标记。但是,使用这种技术添加图像是很好的。
- 这要看情况而定。在这种情况下,它是为了表示目的。将">"放在HTML中会"违反"SOC
- 只是一个问题,你认为作为一个有序的列表会更好吗?我是说,这是一份有订单的清单,不是吗?
- 是的,但是…那里还有订单。三比二是一。使用一个ol将需要更多的标记和更多的样式。
- @questzen-我认为使用css :after来设置排序列上的asc/desc排序指示符是完全可以接受的(也是很好的形式)。
- 我注意到人们已经对SOC原则发狂了。天哪,什么样的内容是">"符号给你?可怜可怜!它只是这个上下文中的一个图标,一个小部件,一个子弹,你命名它。对我来说,内容是我想搜索的东西。
- 用于将图标或字符转换为css值的有用链接:evotech.net/articles/testjssentities.html
- 我编辑了这个问题和几个答案,以简化HTML实体的问题,因为这是这里的实际问题,并删除了对奇怪用例的引用,这些用例使所有的答案都令人困惑(添加了看起来像CSS语法的东西,因为它与其他不寻常的CSS转义非常接近,只是一个大于号的CSS语法)。
必须使用转义的Unicode:
喜欢
1 2 3
| .breadcrumbs a:before {
content: '\0000a0';
} |
更多信息请访问:http://www.evotech.net/blog/2007/04/named-html-entities-in-numeric-order/
- 哈哈哈@dlamblin生活有时是如此艰难,当你太擅长你做的。:)
- 前导零是多余的,参见css 2.1:4.3.7字符串。'>\a0'就足够了。
- @此外,为了避免字符被可靠地解释为转义序列的一部分,请添加标准空白:'>\a0 bc'显示为> bc。
- 我的工具amp what.com/q=%3e提供"css"模式。选择页面底部的"css"。根据上面的CSS引用,当它们不明确时,需要用空格分隔它们。
- CSS字符转换器
- @马修你能用"内容"来附加图像吗?只是想知道
- @Adam,不,如果要附加图像,请使用"background image"并显示:inline block;宽度:123px;高度:123px;(使用精确的宽度/高度)
- 在线转换器:r12a.github.io/apps/conversion(使用css escapes结果)
- 对于任何打算使用两个a0来获得更大空间的人,尝试使用\2002来获得N空间,或使用\2003来获得M空间。宽度与n-dash和mdash相似。
CSS不是HTML。 是HTML中的命名字符引用,相当于十进制数字字符引用 。160是Unicode(或ucs-2;见HTML 4.01规范)中NO-BREAK SPACE字符的十进制码位。该码位的十六进制表示是u+00a0(160=10×161+0×160)。您将在Unicode代码图和字符数据库中找到它。
在CSS中,您需要为这些字符使用一个Unicode转义序列,它基于字符代码点的十六进制值。所以你需要写
1 2 3
| .breadcrumbs a:before {
content: '\a0';
} |
只要转义序列在字符串值中排在最后,这就可以工作。如果字符跟随,有两种方法可以避免误解:
a)(其他人提到过)转义序列正好使用六个十六进制数字:
1 2 3
| .breadcrumbs a:before {
content: '\0000a0foo';
} |
b)在转义序列后添加一个空格(如空格)字符:
1 2 3
| .breadcrumbs a:before {
content: '\a0 foo';
} |
(因为f是十六进制数字,所以\a0f在这里表示GURMUKHI LETTER EE,还是?如果你有合适的字体。)
将忽略分隔空白,并将显示 foo,其中此处显示的空白将是NO-BREAK SPACE字符。
与六位数方法('\0000a0foo'相比,空白方法('\a0 foo'具有以下优点:
- 更容易输入,因为不需要前导零,也不需要计算数字;
- 更容易阅读,因为转义序列和后面的文本之间有空白,不需要计算数字;
- 它需要更少的空间,因为不需要前导零;
- 它是向上兼容的,因为将来支持U+10ffff以外的Unicode代码点需要修改CSS规范。
因此,要在转义字符后显示空格,请在样式表中使用两个空格-
1 2 3
| .breadcrumbs a:before {
content: '\a0 foo';
} |
–或明确:
1 2 3
| .breadcrumbs a:before {
content: '\a0\20 foo';
} |
有关详细信息,请参阅CSS 2.1"4.1.3字符和大小写"部分。
- +1对于"在转义字符后显示一个空格"的技巧,但必须提到添加一个nbsp,然后一个空格类型会破坏nbsp;的目的。)
- @TwisterRob否,非中断空格字符与中断空格字符(或相反)的组合将显示两个空格字符宽度的间隙,而两个或多个逐字空格字符将仅显示一个空格字符宽度的间隙,因为布局引擎的分析器将连续中断折叠。空白(包括换行符)转换为一个空格字符,除非white-spacecss属性另有声明。
- 是的,我知道崩溃,但是nbsp的要点是它是不中断的,默认情况下单词chars也是不中断的,所以在不中断的字符旁边添加一个中断空间是没有意义的,最终结果是中断的。我在为white-space: normal说话。
- @请仔细阅读我的答案。它是"在转义字符后显示空格"的示例。原始代码有一个NO-BREAK SPACE字符,所以我使用了转义序列。您可以选择任何其他转义序列;如果需要,也可以声明white-space: nowrap。
更新:pointeders提到,在所有CSS情况下, 的正确代理将是'\a0 '表示空间是十六进制字符串的终止符,被转义序列吸收。他进一步指出了这一权威性的描述,这听起来是我在下面描述和修复的问题的一个很好的解决方案。
您需要做的是使用转义的Unicode。尽管有人告诉你,\00a0在css中不是 的完美代替品,所以尝试:
1 2 3 4
| 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作为 。如果你按照马修和米利金的建议尝试:
1
| content:'No\00a0Break' /* becomes No਋reak */ |
它将b带入十六进制转义字符中。同样的情况也发生在0-9a-fa-f中。
- 您只需要在转义序列后面放一个空格,如指定的那样:'\a0 Break'。'\0000a0Break'不可靠。
- @指针很有趣,所以这个空间是一个终止符,不包含在字符串中?
- 参见CSS 2.1,章节"4.1.3字符和大小写"。这也表明,根据CSS 2.1,您的方法应该是可靠的。但是我发现空白方法更干净(向上兼容),而且占用空间更小。
在CSS中,需要使用Unicode转义序列代替HTML实体。这是基于字符的十六进制值。
我发现将符号转换为十六进制等价物的最简单方法是,例如从&;(▾到\25BE是使用Microsoft计算器=)
对。启用程序员模式,打开十进制系统,输入9662,然后切换到hex,您将得到25BE。然后在开头加上反斜杠\。
- 虽然非常有用,但它并不能真正回答问题,因此作为对问题的评论会更好。
- 实心右指小箭头(?\25B8▸▸ftw.此外,更多信息请参见en.wikipedia.org/wiki/geometric_shapes。
- 乔尔·普拉,多读点维基。你把符号搞错了。
- @内鬼:怎么了?我只是碰巧喜欢黑色的右指小箭头。
- 我使用这个graphemica.com,在那里你可以得到十进制、十六进制等等。
使用十六进制代码作为不间断空格。像这样:
1 2 3
| .breadcrumbs a:before {
content: '>\00a0';
} |
有一种方法可以粘贴nbsp—打开charmap并复制字符160。不过,在这种情况下,我可能会用填充物将其隔开,如下所示:
1
| .breadcrumbs a:before { content: '>'; padding-right: .5em; } |
不过,您可能需要设置面包屑display:inline-block或其他内容。
- 我不再粘贴nbsp,而是坚持使用实体,这样以后的维护人员就可以清楚地看到它与空间是不同的。
- 另一方面,您不必像预期那样做面包屑,即">符号应该与面包屑内联,而不仅仅是视觉样式。至少如果你想让谷歌看到你的面包屑并把它们列在你在搜索引擎中的列表下。
例如:
http://character-code.com/arrows-html-codes.php
示例:如果要选择字符,我选择了"&;8620""&;X21AC"(我们使用十六进制值)
1 2 3
| .breadcrumbs a:before {
content: '\0021ac';
} |
结果:&8620;
就是这样:
- 我使用的内容是:'10095';。但是输出没有显示出来。它显示的不是图标,而是矩形。
- 你能试试这个stackoverflow.com/a/8922306/3129822吗
我知道这是一篇很老的文章,但是如果间隔是你的全部内容,为什么不简单地说:
1 2 3 4 5
| .breadcrumbs a::before {
content: '>';
margin-left: 8px;
margin-right: 8px;
} |
我以前用过这种方法。在我的测试中,它与其他线条完美结合,旁边有">"。
有两种方法:
这将导致和9969;
带HTML代码。
这也导致&9969;
- 正确答案是.ics::before content:'9969';