html - CSS data-content 属性转义反斜杠

标签 html css attributes attr backslash

所以,我有以下 HTML 结构:

<ul>
<li data-content="\ec00"></li>
<li data-content="\ec01"></li>
</ul>

使用CSS中的data-content属性读取内容时:

li:before { content: attr(data-content) }

它显示 ec00 和 ec01,而不是带反斜杠的。

有什么想法可以解决这个问题吗?

背后的想法是为大量图标提供一个颜色选择器。

提前致谢, 多里安

最佳答案

这是因为您使用的字符编码在 HTML 中无法正确解析。请记住,CSS 以纯文本形式访问 data- 属性,并且由于 HTML 不解析十六进制字符,因此 \ec00 不会被解析,因为它应该与它在 CSS 文件中按原样使用。

你可以做的是:

  • 使用字符本身,即 data- 属性中的“�”
  • 使用等价的数字(十进制),它将由浏览器解析:(因为十六进制的 ec0060416 以十进制表示,\ec00 在 CSS 中用于强制解析,而 &#...; 在 HTML 中用于表示十进制实体)

版权符号就是一个例子:

  • 十进制:169。在 HTML 中,您将使用 ©
  • 十六进制:00A9。在CSS中,您将使用\00A9,而在JS中,您将使用\u00A9

这是一个概念验证演示:

li:before { content: attr(data-content); margin-right: 1em; }
<ul>
<li data-content="&#169;">Using <code>&#169;</code>, parsed by HTML engine.</li>
<li data-content="\u00A9">Using <code>\u00A9</code>, will not be parsed by HTML engine.</li>
  <li data-content="\00A9">Using <code>\00A9</code>, will not be parsed by HTML engine.</li>
</ul>

关于html - CSS data-content 属性转义反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31011660/

相关文章:

c# - 你可以使用 "where"在 c# 中要求属性吗?

html - Bootstrap 列在行和容器内收支平衡

javascript - 如何使用 Jquery 过滤器?

html - 在其他文本下方显示文本也需要文本和下拉符号之间的空格

html - 无论我尝试什么,这张图片都拒绝与中心对齐

javascript - 滚动 "stack"个 DOM 对象

javascript - 为什么我会在 HTML 和 CSS 中使用类而不是属性?

hibernate - 多对多关系jpa中的补充属性

javascript - jQuery 右侧弹出窗口不适用于联系表单!有人对此有解决方案吗?

html - 元素宽度和 z-index