【发布时间】:2015-09-14 09:11:18
【问题描述】:
Jsfiddle 演示
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.0/css/materialize.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.0/js/materialize.min.js"></script>
<i class="material-icons">add</i>
<i class="material-icons">replay</i>
最让我困惑的是图标不是通过类属性实现的(如<i class="icon-add"></i>或<i class="icon-reply"></i>),而是<i>节点的inner text。
当我在 chrome 的开发者工具中查看 <i> 节点时,它们看起来几乎一样,并且对于 CSS 选择器似乎无法区分。
如果图标由内部文本设置,CSS如何为这些<i>节点分配不同的图标?
我无法理解的另一件事是这些图标是如何实现的(图标字体,PNG 或 SVG)。似乎它们是由icon font 实现的,但我找不到像这样的任何 CSS 声明:
.fa-flag:before {
content: "\f024";
}
如果:before选择器和content属性没有实现图标,它们是如何实现的?
【问题讨论】:
-
是导入的字体文件?
-
woff 文件来自here
-
@hanfeisun 图标是类实现的。碰巧这些图标来自字体系列“Material Icons”。
-
@adeneo 我看到有一个woff文件,但是
<i>节点的内容怎么可以换成woff文件中字符的编码呢? -
@AlbertoI.N.J.谢谢,但是我没有看到
<i>节点的内部文本被特殊字符的编码替换,例如"\f024"。此外,我找不到CSS的特殊字符设置..
标签: javascript jquery html css fonts