2010-11-10 98 views
21

我在css中伪造:before伪类,尝试插入一个特殊字符,但结果不是我所希望的。在css中使用伪特殊字符之前插入特殊字符

使用:

.read_more:before { 
    content: "»"; 
    margin-right: 6px; 
} 

我得到我想要的性格,但与之前的Â性格和使用:

.read_more:before { 
    content: "»"; 
    margin-right: 6px; 
} 

我得到的html页面的完整»

我可以想出几种方法来解决我的问题,但我想知道如果我想使用:before伪类,那么正确的语法是什么。

顺便说一句,我的文档类型是:

<!doctype html> 
<html lang="en"> 

回答

13

尝试指定<meta charset="utf-8">。理想情况下,你想在服务器中设置它。

+0

HTML5是默认UTF-8。 – Tae 2010-11-10 17:06:54

+0

@Tae - http://static.medero.org/kak.html如果在页面本身没有指定编码,服务器会指定编码...并且因为他没有明确指定UTF-8,所以显然他需要。 – 2010-11-10 17:10:54

+0

谢谢,它确实是meta标记中的一个错误,它被设置为ISO ... – jeroen 2010-11-10 17:14:58

2

您的浏览器未使用正确的文本编码 - 也就是说,它没有使用与您的编辑器相同的文本编码。如果您从Web服务器接收页面,最好的方法是确保服务器发送正确的Content-Type标头。如果您无法控制Web服务器的标题,或者您将使用本地HTML文件进行大量测试,请将appropriate tags添加到您的文档中,以了解您正在使用的编码和HTML版本。我建议使用UTF-8。 CSS文件(如果它与HTML分开)应该使用相同的编码。

35

试试这个

.read_more:before { 
    content: "\00BB"; 
    margin-right: 6px; 
} 

\ 00BB是字符的Unicode表示。应该合理的工作=)

1

添加这在HTML中,<head>部分

<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8" /> 

内,但如果HTML页面在PHP编码,我宁愿以下几点:

<?php 
    header("Content-Encoding: utf-8"); 
    header("Content-type: text/html; charset=utf-8"); 
?> 

并且不要忘记用UTF-8编码保存任何文件(css,html,php)

+0

谢谢,这就是当我看到@ meder的答案时最终做的事情。 – jeroen 2010-11-10 17:15:53

0

您必须确保所有文件(CSS和HTML)具有相同的编码。

16

答案已经被告知,但我想是指:

我得到完整的&raquo;在HTML页面上。

这是因为CSS content属性不被视为HTML。它不会附加到DOM,因此任何HTML特定的标记都不会被解析。您可以直接插入字符:content: "Ԃ";或使用Unicode表示法:content: "\0504";

+0

谢谢,这也解释了为什么我没有在Firebug中看到它。 – jeroen 2010-11-10 17:17:06

+0

很好的解释,这是我需要的解决方案。干杯! – 2012-03-28 21:17:32

5

我知道这个问题已经有一段时间了,但如果现在有人可能需要它,我找到了解决方案。

Here's带有大量字形的图表。找到你想要的,并复制它的十六进制代码。

然后粘贴它here进行转换。

你会得到看起来像这样的值:\ 00E1(CSS值)

你的这个值粘贴 '内容:' 和快乐:)