html - 使用带有嵌套文本的 HTML <i> 标记来呈现图标

标签 html css fonts icons material-design

在大多数具有图标字体的 CSS 框架中,都有如下实现示例:

<i class="material-icons">
   share
</i>

来源:Material Icons

我也知道这也行得通:

<i class="material-icons share"></i>

后一个例子在逻辑上对我来说很有意义,因为 CSS 框架的样式表具有应用 :before 伪元素的类名及其 content 属性设置为 unicode 值(如以及其他样板文件)。

我的问题是浏览器是否渲染了第一个示例?

在我看来,material-icons 类和作为文本嵌套在其下的图标名称之间存在某种关系,我想知道这种关系是在哪里以及如何建立的。

最佳答案

由于您的示例取自 Material Icons,因此我将在此范围内回答您的问题。

浏览器是否呈现第一个示例?

让我们从头开始:

<i class="material-icons">
   share
</i>

在这里,他们使用 <i> 元素用于 icons(not 一个好主意)。还设置了 CSS 类,material-icons . Material Icons 在此 CSS link 中设计:

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

让我们看看这个 material-icon class 是如何实现的设计:

.material-icons {
  font-family: 'Material Icons'; /* [...] */
}

“Material Icons”是一种自定义字体,在同一资源中有描述:

@font-face {
  font-family: 'Material Icons';
  /* [...] */
  src: url(https://fonts.gstatic.com/s/materialicons/v46/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
}

所以你最终得到了文本 "share"以自定义字体显示,这是此功能的关键。 这不是 unicode 字符也不是“真正的”图标(SVG 或位图),而是以特定字体显示的整个文本以将其呈现为图标.


例如,在下面的代码片段中,尝试选择共享图标的“一部分”,您会发现这实际上是“共享”一词,每个字符都绘制一个字符。将其复制并粘贴到其他地方以查看它。例如,左边的点代表 h .

@font-face {
  font-family: 'Material Icons';
  src: url(https://fonts.gstatic.com/s/materialicons/v46/flUhRq6tzZclQEJ-Vdg-IuiaDsNc.woff2) format('woff2');
}

.material-icons {
  font-family: 'Material Icons';
  font-size:24px;
}
<i class="material-icons">
   share
</i>

关于html - 使用带有嵌套文本的 HTML <i> 标记来呈现图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55169039/

相关文章:

java - Windows计算机上的iText-PDF中的中文字体问题

html - Mac OSX 和 Windows 中的不同 CSS(字体粗细)。为什么字体粗细呈现不同?

css - Bootstrap 4 Carousel Indicators定位

html - div 元素之间的间隙

javascript - 当第一个选项卡处于事件状态时,第二个选项卡不起作用

javascript - 一个html布局问题

javascript - 如何根据条件更改文本颜色?

html - 我网站上的标题问题

html - 有多少字符/字形可以分配给网络字体?

html - 使用 css 在 3 个图像后换行?