javascript - 在CSS/JavaScript中,这个图标/字体插件是如何实现的?

标签 javascript jquery html css fonts

Jsfiddle 演示

http://jsfiddle.net/hc046u9u/

<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>内部文本实现的。节点。

当我查看 <i>在 chrome 的开发者工具中的节点,它们看起来几乎一样,对于 CSS 选择器来说似乎无法区分。

Enter image description here

如果图标是由内部文本设置的,CSS怎么能给这些不同的图标<i>节点?

我无法理解的另一件事是这些图标是如何实现的(图标字体,PNGSVG)。似乎它们是由 icon font 实现的, 但我找不到任何像这样的 CSS 声明:

.fa-flag:before {
  content: "\f024";
}

如果 :before 没有实现图标选择器和 content属性,它们是如何实现的?

最佳答案

这是一个“技巧”,其中图标被实现为字体中的组合字形。这意味着字母组合“add”和“replay”在字体中显示为一个字符,类似于“fi”和“fl”在许多字体中通常表示为一个字符的方式。 (有关更多信息,请参阅 this Wikipedia article。)因此图标并非来自 CSS 声明。

如果将字体应用于输入字段,您可以看到它是如何工作的:如果您开始随机输入,您看不到任何内容,因为没有为单个字符分配字形,但是如果您输入“add "您会看到一个 + 号。

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">

<textarea class="material-icons">add remove replay</textarea>

关于javascript - 在CSS/JavaScript中,这个图标/字体插件是如何实现的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31089700/

相关文章:

jQuery 提交解决方法

javascript - 使用 jquery 定位特定的 Javascript 对象文字字段和数组

html - 创建表后巨大的差距

javascript - JS 更新 onclick 事件多个值

javascript - 在直线上移动网格 三个 JS

javascript - JS : input field and dropdown option change

javascript - js 中有线程(某种)变量吗?

jquery - Bootstrap 4 : Show element only when nav-tab is active

c# - 用 C# 4.0 编写的 IE BHO 可在 IE 9 中工作,但在 Windows 7 计算机上的 IE10 中无法工作

jquery - 奇怪的行为,元素在 slider 滚动时移动