我正在使用以下CSS,它似乎有效:
a.up:after{content: " ↓";}
a.down:after{content: " ↑";}
然而,字符似乎无法像这样进行编码,因为输出是文字字面量,并显示实际的字符串:
a.up:after{content: " ↓";}
a.down:after{content: " ↑";}
如果我无法进行编码,感觉应该使用类似于jQuery中的.append()函数,因为它支持编码。有什么想法吗?我正在使用以下CSS,它似乎有效:
a.up:after{content: " ↓";}
a.down:after{content: " ↑";}
然而,字符似乎无法像这样进行编码,因为输出是文字字面量,并显示实际的字符串:
a.up:after{content: " ↓";}
a.down:after{content: " ↑";}
如果我无法进行编码,感觉应该使用类似于jQuery中的.append()函数,因为它支持编码。有什么想法吗?如果要在content
中使用编码的Unicode字符,您需要提供这些字符本身(就像您现在所做的那样),或者它们的UTF-8转义序列而不是HTML实体:
a.up:after { content: " \2193"; }
a.down:after { content: " \2191"; }
为什么你要编码那些字符呢?请记住,你正在编写 CSS,而不是 HTML。你的代码:
a.up:after{content: " ↓";}
a.down:after{content: " ↑";}
只要您使用UTF-8编码保存文件并发送适当的头信息,这是完全有效的:
Content-Type: text/css; charset=utf-8
编码字符仅在HTML中使用,以便内容和标签之间没有歧义。因此,您应将<
编码为<
,以便浏览器不会认为它是标签的开始。像↓
这样的东西只是为那些不知道如何使用utf-8(或由于某种原因无法使用)的人提供的一种便利 :)
只是想补充一下,如果你想通过 attr() 函数
动态设置 content
的值,上面的方法不会起作用。请参见
document.getElementById('wontwork').setAttribute('data-sym', ' \2714 ');
document.getElementById('willwork').setAttribute('data-sym', ' \u2714 ');
button::before {
content: attr(data-sym);
}
* {
font-size: 30px
}
<button id='wontwork' data-sym='to-be-replaced'>not rendered</button>
<button id='willwork' data-sym='to-be-replaced'>rendered !</button>
✓
时,遇到了类似的问题。将代码粘贴到 Firefox 的调试控制台中时可以正常工作,但在我的(UTF-8 编码)文件中编写相同的代码时,它无法正常工作,并在 HTML 页面和浏览器的开发人员控制台中显示为✓
。在以 UTF-16 编码保存 CSS 文件后,它可以正常工作(原因是此字符需要 3 个字节,因此 UTF-8 无法正确处理它)。 - Radon8472