ChatGPT解决这个技术问题 Extra ChatGPT

使用 CSS 内容添加 HTML 实体

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

使用类似这样的东西只会将   打印到屏幕上,而不是不间断的空格:

.breadcrumbs a:before {
  content: ' ';
}
在不同的意义上,使用 CSS 添加内容违反了关注点分离,CSS 仅用于样式定义。从可访问性的角度来看,最好避免,因为禁用 CSS 会破坏整个标记。但是,使用这种技术添加图像很不错。
这取决于。在这种情况下,它是出于演示目的。将“>”放在 html 中会“违反”SoC
只是一个问题,您认为作为有序列表会更好吗?我的意思是,这是一个有顺序的列表,不是吗?
@questzen - 我认为使用 CSS :after 来设置例如排序列上的 asc/desc 排序指示符是完全可以接受的(也是好的形式)。
我注意到人们已经对 SoC 原理发疯了。天哪,你的“>”标志是什么内容?!怜悯!在这种情况下,它只是一个图标,一个小部件,一个子弹,你可以命名它。对我来说,内容是我希望可搜索的东西。

A
Alexander van Oostenrijk

您必须使用转义的 unicode :

喜欢

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

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


前导零是多余的,请参阅 CSS 2.1: 4.3.7 Strings'>\a0' 就足够了。
@dlamblin 此外,为了避免字符被可靠地 解释为转义序列的一部分,请添加标准空格:'>\a0 bc' 显示为 > bc
我的工具 amp-what.com/#q=%3E 提供了“CSS”模式。选择页面底部的“css”。根据上面的 CSS 参考,当它们不明确时,它们需要用空格分隔。
@mathieu您可以使用“内容”来附加图像吗?就是想
@Adam,不,如果要附加图像,请使用“背景图像”并显示:内联块;和宽度:123px;高度:123px; (使用精确的宽度/高度)
P
PointedEars

CSS 不是 HTML。   是 HTML 中命名的 character reference;相当于十进制数字字符引用  。 160 是 Unicode(或 UCS-2;参见 HTML 4.01 Specification)中 NO-BREAK SPACE 字符的十进制 代码点。该代码点的十六进制表示为 U+00A0 (160 = 10 × 161 + 0 × 160)。您会在 Unicode Code ChartsCharacter Database 中找到它。

在 CSS 中,您需要对此类字符使用 Unicode 转义序列,该转义序列基于字符代码点的十六进制值。所以你需要写

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

只要转义序列在字符串值中最后出现,这就会起作用。如果字符跟随,有两种方法可以避免误解:

a)(其他人提到)使用恰好六个十六进制数字作为转义序列:

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

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

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

(因为 f 是一个十六进制数字,所以 \a0f 在这里表示 GURMUKHI LETTER EE,如果您有合适的字体,则表示 ਏ。)

分隔的空格将被忽略,这将显示为  foo,此处显示的空格将是一个 NO-BREAK SPACE 字符。

与六位数方法 ('\0000a0foo') 相比,空白方法 ('\a0 foo') 具有以下优势:

打字更容易,因为不需要前导零,也不需要计算数字;

它更容易阅读,因为转义序列和后面的文本之间有空格,并且不需要计算数字;

它需要更少的空间,因为不需要前导零;

它是向上兼容的,因为将来支持 U+10FFFF 的 Unicode 代码点需要修改 CSS 规范。

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

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

– 或明确表示:

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

有关详细信息,请参阅 CSS 2.1, section "4.1.3 Characters and case"


+1 用于“在转义字符后显示一个空格”技巧,但必须提到添加一个 nbsp,然后添加一个空格会破坏 nbsp 的目的;)
@TWiStErRob 不,不间断空格字符后跟一个空格字符(反之亦然)的组合将显示大约 两个 空格字符宽度的间隙,而两个或更多 verbatim 空格字符将仅显示宽度为 一个 空格字符的间隙,因为布局引擎的解析器会将连续的中断空格(包括换行符)折叠成一个空格字符,除非 {1 } 另有声明。
是的,我知道折叠,但是 nbsp 的重点是它是不间断的,默认情况下单词字符也是不间断的,所以在不间断的旁边添加一个断空格是没有意义的,最终结果将是打破。我正在为 white-space: normal 说话。
@TWiStErRob 请仔细阅读我的答案。这是“在转义字符后显示[ing]空格”的示例。原始代码有一个 NO-BREAK SPACE 字符,所以我使用了转义序列。您可以选择任何其他转义序列;如果需要,您也可以声明 white-space: nowrap
d
dlamblin

更新:PointedEars 提到,在所有 css 情况下,  的正确代表是
'\a0 ' 暗示空格是十六进制字符串的终止符并被转义序列吸收.他进一步指出这个 authoritative description 听起来像是我在下面描述和修复的问题的一个很好的解决方案。

您需要做的是使用转义的 unicode。尽管有人告诉您 \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 的建议尝试:

content:'No\00a0Break'   /* becomes No਋reak */

它将 B 带入十六进制转义字符。 0-9a-fA-F 也是如此。


您只需在转义序列后放置一个空格,指定:'\a0 Break''\0000a0Break'可靠。
@PointedEars 很有趣,那么这个空格是一个终止符并且不包含在字符串中?
请参阅CSS 2.1, section "4.1.3 Characters and case"。这也表明你的方法应该是可靠的每个 CSS 2.1。但我发现空白方法更干净(向上兼容)并且占用空间更小。
C
Chuck Le Butt

在 CSS 中,您需要使用 Unicode 转义序列来代替 HTML 实体。这是基于字符的十六进制值。

我发现将符号转换为十六进制等价物的最简单方法是,例如从▾ (▾) 到 \25BE 是使用 Microsoft 计算器 =)

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


虽然完全有用,但它并不能真正回答问题,因此作为对问题的评论会更好。
黑色右向小箭头 (▸ \25B8 ▸ ▸) ftw。此外,请参阅 en.wikipedia.org/wiki/Geometric_Shapes 了解更多信息。
2Joel Purra,花更多时间阅读 Wiki。你弄错了符号。
@netgoblin:怎么会这样?我只是碰巧喜欢黑色的右指小箭头。
我使用此 graphemica.com,您可以获得十进制、十六进制等
A
Alexander van Oostenrijk

使用十六进制代码作为不间断空格。像这样的东西:

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

A
Alexander van Oostenrijk

有一种粘贴 nbsp 的方法 - 打开 CharMap 并复制 字符 160。但是,在这种情况下,我可能会用填充将其隔开,如下所示:

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

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


我不会粘贴 nbsp,而是坚持使用实体,以便未来的维护者清楚它与空间不同。
另一方面,您不会按照应有的方式使用面包屑,即:> 符号应该与面包屑内联,而不仅仅是视觉样式。至少如果你想让谷歌看到你的面包屑并将它们列在你在搜索引擎中的列表下。
没错,粘贴通缉角色对我有用。谢谢
A
Alexander van Oostenrijk

例如 :

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

示例:如果您想选择您的角色,我选择了“↬”“↬”(我们使用 HEX 值)

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

结果:↬

而已 :)


我使用了内容:'\10095'; .但是输出没有显示。而不是图标,它显示矩形。
A
Alexander van Oostenrijk

我知道这是一篇很老的帖子,但如果间距是你所追求的,为什么不简单地:

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

我以前用过这种方法。在我的测试中,它可以完美地包裹在其他行中,并带有“>”。


T
Tarandeep Singh

这里有两种方法:

在 HTML 中:

这将导致⛱

在 Css 中: .ics::before {content: "\9969;"}

带有 HTML 代码 <div class="ics"></div>

这也导致⛱


正确答案是 .ics::before {content: '\9969';}
对于 HTML,您不需要 div class = ics。你可以简单地做 &#<number>;。另外,请注意它是否是十六进制数字,在这种情况下您需要 &#x<hex number>; w3schools.com/html/html_symbols.asp