247

谷歌已经用 4 个新的预设主题修改了它的Material Design 图标:

除了常规的填充/基线主题外,轮廓、圆角、双色调和锐利:


但是,不幸的是,它没有说明如何使用新主题。


我一直在通过 Google Web Fonts 使用它,包括以下链接:

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

然后按照文档中的建议使用所需的图标:

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

但它总是显示“填充/基线”版本。


我尝试执行以下操作来使用Outlined主题:

<i class="material-icons">account_balance_outlined</i>
<i class="material-icons material-icons-outlined">account_balance</i>

并且,将 Web 字体链接更改为:

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

等等,但它不起作用。


像这样在黑暗中拍摄是没有意义的。


tl;dr:有没有人尝试过使用新主题?它甚至像基线版本(内联 html 标记)一样工作吗?或者,它是否只打算以 SVG 或 PNG 格式下载?

4

16 回答 16

338

更新(2019 年 3 月 31 日):所有图标主题现在都可以通过 Google 网络字体工作。

正如 Edric 所指出的,现在只需在文档头部添加 google 网络字体链接,如下所示:

<link href="https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp" rel="stylesheet">

然后添加正确的类以输出特定主题的图标。

<i class="material-icons">donut_small</i>
<i class="material-icons-outlined">donut_small</i>
<i class="material-icons-two-tone">donut_small</i>
<i class="material-icons-round">donut_small</i>
<i class="material-icons-sharp">donut_small</i>

图标的颜色也可以使用 CSS 进行更改。

注意:目前双音主题图标有点小故障。


更新(2018 年 11 月 14 日):使用“_outline”后缀的 16 个大纲图标的列表。

这是与常规 Material-icons Webfont 一起使用的 16 个大纲图标的最新列表,使用_outline后缀(经过测试和确认)。

(在material-design-icons github页面上找到。搜索:“ _outline_24px.svg ”)

<i class="material-icons">help_outline</i>
<i class="material-icons">label_outline</i>
<i class="material-icons">mail_outline</i>
<i class="material-icons">info_outline</i>
<i class="material-icons">lock_outline</i>
<i class="material-icons">lightbulb_outline</i>
<i class="material-icons">play_circle_outline</i>
<i class="material-icons">error_outline</i>
<i class="material-icons">add_circle_outline</i>
<i class="material-icons">people_outline</i>
<i class="material-icons">person_outline</i>
<i class="material-icons">pause_circle_outline</i>
<i class="material-icons">chat_bubble_outline</i>
<i class="material-icons">remove_circle_outline</i>
<i class="material-icons">check_box_outline_blank</i>
<i class="material-icons">pie_chart_outlined</i>

请注意,pie_chart需要是“ pie_chart_概述”而不是轮廓


这是一个使用内联标签测试新图标主题的技巧。这不是官方的解决方案。

到今天(2018 年 7 月 19 日),距离新图标主题推出 2 个多月,无法使用内联标签包含这些图标<i class="material-icons"></i>

+Martin指出在 Github 上提出了同样的问题:https ://github.com/google/material-design-icons/issues/773

因此,在 Google 提出解决方案之前,我已经开始使用 hack 将这些新图标主题包含在我的开发环境中,然后再将适当的图标下载为 SVG 或 PNG。我想我会与大家分享。


重要提示:不要在生产环境中使用它,因为每个包含的来自 Google 的 CSS 文件的大小都超过 1MB。


Google 使用这些样式表在其演示页面上展示图标:

大纲:

<link rel="stylesheet" href="https://storage.googleapis.com/non-spec-apps/mio-icons/latest/outline.css">

圆形:

<link rel="stylesheet" href="https://storage.googleapis.com/non-spec-apps/mio-icons/latest/round.css">

双色:

<link rel="stylesheet" href="https://storage.googleapis.com/non-spec-apps/mio-icons/latest/twotone.css">

锋利的:

<link rel="stylesheet" href="https://storage.googleapis.com/non-spec-apps/mio-icons/latest/sharp.css">

这些文件中的每一个都包含作为背景图像(Base64 图像数据)包含的各个主题的图标。下面是我们如何使用它来测试我们设计中特定图标的兼容性,然后再下载它以用于生产环境。


第 1 步

包括您要使用的主题的样式表。例如:对于“Outlined”主题,使用“outline.css”的样式表

第 2 步

将以下类添加到您自己的样式表中:

.material-icons-new {
    display: inline-block;
    width: 24px;
    height: 24px;
    background-repeat: no-repeat;
    background-size: contain;
}

.icon-white {
    webkit-filter: contrast(4) invert(1);
    -moz-filter: contrast(4) invert(1);
    -o-filter: contrast(4) invert(1);
    -ms-filter: contrast(4) invert(1);
    filter: contrast(4) invert(1);
}

第 3 步

通过将以下添加到<i>标签来使用该图标:

  1. material-icons-new班级

  2. 材料图标演示页面上显示的图标名称,以主题名称为前缀,后跟连字符。

前缀:

概述:outline-

圆形:round-

双色:twotone-

锋利的:sharp-

例如(对于“公告”图标):

outline-announcement, round-announcement, twotone-announcement,sharp-announcement

3)使用可选的第三类icon-white将颜色从黑色反转为白色(用于深色背景)


更改图标大小:

由于这是背景图像而不是字体图标,因此使用 CSS 的heightwidth属性来修改图标的大小。类中默认设置为 24px material-icons-new


例子:

案例一:account_circle图标的大纲主题:

  1. 包括样式表:
<link rel="stylesheet" href="https://storage.googleapis.com/non-spec-apps/mio-icons/latest/outline.css">
  1. 在您的页面上添加图标标签:
<i class="material-icons-new outline-account_circle"></i>

可选(对于深色背景):

<i class="material-icons-new outline-account_circle icon-white"></i>

案例二:对于评估图标的尖锐主题:

  1. 包括样式表:
<link rel="stylesheet" href="https://storage.googleapis.com/non-spec-apps/mio-icons/latest/sharp.css">
  1. 在您的页面上添加图标标签:
<i class="material-icons-new sharp-assessment"></i>

(对于深色背景):

<i class="material-icons-new sharp-assessment icon-white"></i>

我怎么强调这不是在生产环境中包含图标的正确方法。但是,如果您必须浏览开发页面上的多个图标,它确实使图标包含变得非常容易并且节省了大量时间。

在网站速度优化方面,将图标下载为 SVG 或 PNG 肯定是更好的选择,但字体图标在原型设计阶段和检查特定图标是否与您的设计相匹配等方面可以节省时间。


如果谷歌为这个问题提出了一个不涉及下载使用图标的解决方案,我会更新这篇文章。

于 2018-07-19T06:04:01.590 回答
47

对于有角度的材料,您应该使用 fontSet 输入来更改字体系列:

<link href="https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp"
rel="stylesheet" />

<mat-icon>edit</mat-icon>
<mat-icon fontSet="material-icons-outlined">edit</mat-icon>
<mat-icon fontSet="material-icons-two-tone">edit</mat-icon>
...
于 2019-08-14T16:02:40.473 回答
36

自 2019 年 2 月 27 日起,新的 Material Icon 主题有了 CSS 字体。

但是,您必须创建 CSS 类才能使用字体。

字体系列如下:

  • Material Icons Outlined- 概述的图标
  • Material Icons Two Tone- 两色图标
  • Material Icons Round- 圆形图标
  • Material Icons Sharp- 锋利的图标

有关示例,请参见下面的代码示例:

body {
  font-family: Roboto, sans-serif;
}

.material-icons-outlined,
.material-icons.material-icons--outlined,
.material-icons-two-tone,
.material-icons.material-icons--two-tone,
.material-icons-round,
.material-icons.material-icons--round,
.material-icons-sharp,
.material-icons.material-icons--sharp {
  font-weight: normal;
  font-style: normal;
  font-size: 24px;
  line-height: 1;
  letter-spacing: normal;
  text-transform: none;
  display: inline-block;
  white-space: nowrap;
  word-wrap: normal;
  direction: ltr;
  -webkit-font-feature-settings: 'liga';
  -webkit-font-smoothing: antialiased;
}

.material-icons-outlined,
.material-icons.material-icons--outlined {
  font-family: 'Material Icons Outlined';
}

.material-icons-two-tone,
.material-icons.material-icons--two-tone {
  font-family: 'Material Icons Two Tone';
}

.material-icons-round,
.material-icons.material-icons--round {
  font-family: 'Material Icons Round';
}

.material-icons-sharp,
.material-icons.material-icons--sharp {
  font-family: 'Material Icons Sharp';
}
<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500|Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp">
</head>

<body>
  <section id="original">
    <h2>Baseline</h2>
    <i class="material-icons">home</i>
    <i class="material-icons">assignment</i>
  </section>
  <section id="outlined">
    <h2>Outlined</h2>
    <i class="material-icons-outlined">home</i>
    <i class="material-icons material-icons--outlined">assignment</i>
  </section>
  <section id="two-tone">
    <h2>Two tone</h2>
    <i class="material-icons-two-tone">home</i>
    <i class="material-icons material-icons--two-tone">assignment</i>
  </section>
  <section id="rounded">
    <h2>Rounded</h2>
    <i class="material-icons-round">home</i>
    <i class="material-icons material-icons--round">assignment</i>
  </section>
  <section id="sharp">
    <h2>Sharp</h2>
    <i class="material-icons-sharp">home</i>
    <i class="material-icons material-icons--sharp">assignment</i>
  </section>
</body>

</html>

或在Codepen上查看


编辑:截至 2019 年 3 月 10 日,似乎现在有新字体图标的类:

body {
  font-family: Roboto, sans-serif;
}
<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500|Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp">
</head>

<body>
  <section id="original">
    <h2>Baseline</h2>
    <i class="material-icons">home</i>
    <i class="material-icons">assignment</i>
  </section>
  <section id="outlined">
    <h2>Outlined</h2>
    <i class="material-icons-outlined">home</i>
    <i class="material-icons-outlined">assignment</i>
  </section>
  <section id="two-tone">
    <h2>Two tone</h2>
    <i class="material-icons-two-tone">home</i>
    <i class="material-icons-two-tone">assignment</i>
  </section>
  <section id="rounded">
    <h2>Rounded</h2>
    <i class="material-icons-round">home</i>
    <i class="material-icons-round">assignment</i>
  </section>
  <section id="sharp">
    <h2>Sharp</h2>
    <i class="material-icons-sharp">home</i>
    <i class="material-icons-sharp">assignment</i>
  </section>
</body>

</html>

编辑#2:这是使用CSS 图像过滤器为双色调图标着色的解决方法(代码改编自此评论):

body {
  font-family: Roboto, sans-serif;
}

.material-icons-two-tone {
  filter: invert(0.5) sepia(1) saturate(10) hue-rotate(180deg);
  font-size: 48px;
}

.material-icons,
.material-icons-outlined,
.material-icons-round,
.material-icons-sharp {
  color: #0099ff;
  font-size: 48px;
}
<!DOCTYPE html>
<html>

<head>
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500|Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp">
</head>

<body>
  <section id="original">
    <h2>Baseline</h2>
    <i class="material-icons">home</i>
    <i class="material-icons">assignment</i>
  </section>
  <section id="outlined">
    <h2>Outlined</h2>
    <i class="material-icons-outlined">home</i>
    <i class="material-icons-outlined">assignment</i>
  </section>
  <section id="two-tone">
    <h2>Two tone</h2>
    <i class="material-icons-two-tone">home</i>
    <i class="material-icons-two-tone">assignment</i>
  </section>
  <section id="rounded">
    <h2>Rounded</h2>
    <i class="material-icons-round">home</i>
    <i class="material-icons-round">assignment</i>
  </section>
  <section id="sharp">
    <h2>Sharp</h2>
    <i class="material-icons-sharp">home</i>
    <i class="material-icons-sharp">assignment</i>
  </section>
</body>

</html>

或在Codepen上查看

于 2019-02-27T10:11:32.080 回答
22

自 2020 年 12 月 5 日起,您需要

1.包括CSS:

<link href="https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp" rel="stylesheet">

2. 像这样使用它:

<i class="material-icons">account_balance</i>
<i class="material-icons material-icons-outlined">account_balance</i>
<i class="material-icons material-icons-two-tone">account_balance</i>
<i class="material-icons material-icons-sharp">account_balance</i>
<i class="material-icons material-icons-round">account_balance</i>

注意:例如,要使用轮廓样式,您需要指定material-icons material-icons-outlined类。

于 2020-05-12T10:12:26.813 回答
15

如果您的 Web 项目中已经有材料图标,只需更新您在 html 文件中的引用和图标的使用类:

html参考:

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

<link href="https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp"
rel="stylesheet" />

材质图标类:

之后,只需检查您使用的是哪个 className:

前:

<i className="material-icons">weekend</i>

后:

<i className="material-icons-outlined">weekend</i>

这对我有用...... Pura vida!

于 2019-07-03T22:25:27.843 回答
12

对我有用的是在图标名称之后使用_outline而不是_outline d 。

<mat-icon>info</mat-icon>

对比

<mat-icon>info_outline</mat-icon>
于 2018-07-27T16:01:06.293 回答
7

webfonts 链接现在可以在所有浏览器中使用!

只需将您的主题添加到由竖线 ( ) 分隔的字体链接中|,如下所示

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

然后引用该类,如下所示:

// class="material-icons" or class="material-icons-outlined"

<i class="material-icons">account_balance</i>
<i class="material-icons-outlined">account_balance</i>

此模式也适用于 Angular 材质:

<mat-icon>account_balance</mat-icon>
<mat-icon class="material-icons-outlined">account_balance</mat-icon>
于 2019-03-27T15:16:27.970 回答
5

新主题可能(还不是?)Material Icons 字体的一部分。链接

于 2018-05-16T07:21:15.453 回答
5

到目前为止,没有一个答案解释了如何下载该字体的各种变体,以便您可以从自己的网站(WWW 服务器)提供它们。

虽然从技术角度来看,这似乎是一个小问题,但从法律角度来看,这是一个大问题,至少如果您打算将您的网页展示给任何欧盟公民(或者甚至,如果您不小心这样做)。对于居住在美国(或欧盟以外的任何国家)的公司来说也是如此。

如果有人对为什么会这样感兴趣,我会更新这个答案并在此处提供更多详细信息,但目前,我不想浪费太多篇幅离题。

说了这么多:

我已经按照两个非常简单的步骤下载了该字体的所有版本(常规、轮廓、圆形、锐利、双色调)(这是@Aj334 对他自己的问题的回答让我走上了正确的轨道)(例如:“概述“变体):

  1. 通过直接让您的浏览器获取 CSS URL从 Google CDN获取 CSS ,即将以下 URL 复制到浏览器的位置栏中:

    https://fonts.googleapis.com/css?family=Material+Icons+Outlined
    

    这将返回一个看起来像这样的页面(至少在撰写本文时在 Firefox 70.0.1 中):

    /* fallback */
    @font-face {
      font-family: 'Material Icons Outlined';
      font-style: normal;
      font-weight: 400;
      src: url(https://fonts.gstatic.com/s/materialiconsoutlined/v14/gok-H7zzDkdnRel8-DQ6KAXJ69wP1tGnf4ZGhUce.woff2) format('woff2');
    }
    
    .material-icons-outlined {
      font-family: 'Material Icons Outlined';
      font-weight: normal;
      font-style: normal;
      font-size: 24px;
      line-height: 1;
      letter-spacing: normal;
      text-transform: none;
      display: inline-block;
      white-space: nowrap;
      word-wrap: normal;
      direction: ltr;
      -moz-font-feature-settings: 'liga';
      -moz-osx-font-smoothing: grayscale;
    }
    
  2. src:找到上面代码中以开头的那一行,让你的浏览器获取该行中包含的 URL,即将下面的 URL 复制到浏览器的地址栏中:

    https://fonts.gstatic.com/s/materialiconsoutlined/v14/gok-H7zzDkdnRel8-DQ6KAXJ69wP1tGnf4ZGhUce.woff2
    

    现在浏览器将下载该.woff2文件并提供将其保存在本地(至少,Firefox 做到了)。

最后两句:

当然,您可以使用相同的方法下载该字体的其他变体。在第一步中,只需将OutlinedURL 中的字符序列替换为字符序列Round(是的,真的,虽然这里在左侧导航菜单中称为“圆角”),Sharp或者Two+Tone,分别。结果页面每次看起来几乎相同,但是src:每个变体的行中的 URL 当然是不同的。

最后,在第 1 步中,您甚至可以使用该 URL:

https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp

这将返回一个页面中所有变体的 CSS,然后包含五行src:,每行都有另一个 URL,指定相应字体的位置。

于 2019-11-09T11:19:35.577 回答
3

Aj334 最近的编辑工作完美。

谷歌 CDN

<link href="https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Two+Tone|Material+Icons+Round|Material+Icons+Sharp" rel="stylesheet">

图标元素

<i class="material-icons">donut_small</i>
<i class="material-icons-outlined">donut_small</i>
<i class="material-icons-two-tone">donut_small</i>
<i class="material-icons-round">donut_small</i>
<i class="material-icons-sharp">donut_small</i>
于 2019-03-31T19:43:43.460 回答
1

在知道 Google 尚未将他们的新设计发布为字体或 svg 图标集之前,我并不满意。因此我整理了一个小的 npm 包来解决这个问题。

https://www.npmjs.com/package/ts-material-icons-svg

只需导入您想要使用的图标并将它们添加到您的注册表中。这也支持摇树,因为只有那些你真正想要和/或需要的图标被添加到你的项目中。

npm i --save https://github.com/MarcusCalidus/ts-material-icons-svg.git

例如使用两个音调图标

import {icon_edit} from 'ts-material-icons-svg/dist/twotone';

matIconRegistry.addSvgIcon(
            'edit',
            domSanitizer.bypassSecurityTrustResourceUrl(icon_edit),
        );

在您的 html 模板中,您现在可以使用新图标

<mat-icon svgIcon="edit"></mat-icon>
于 2018-12-10T14:45:44.073 回答
1

放入指向谷歌样式的头部链接

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

在身体上是这样的

<i class="material-icons-outlined">bookmarks</i>
于 2020-01-25T13:25:20.667 回答
0

我最终使用 IcoMoon 应用程序创建了一个自定义字体,只使用了我最近构建的 Web 应用程序所需的新主题图标。它并不完美,但您可以通过一些设置很好地模仿现有的 Google 字体功能。这是一篇文章:

https://medium.com/@leemartin/how-to-use-material-icon-outlined-rounded-two-tone-and-sharp-themes-92276f2415d2

如果有人觉得大胆,他们可以使用 IcoMoon 转换整个主题。见鬼,IcoMoon 可能有一个内部流程可以让它变得容易,因为他们已经在他们的库中设置了原始材质图标。

无论如何,这不是一个完美的解决方案,但它对我有用。

于 2018-08-15T16:45:25.910 回答
0

有点搞笑的是,谷歌制作了一种在 Safari 中正常工作但在 Chrome 中不能正常工作的字体。这是https://codepen.io/anon/pen/zbavza

<i class="material-icons-round red">warning</i>

Safari 中的红色圆形警告材料图标

参考https://stackoverflow.com/a/54902967/4740291并且无法使用 css 更改颜色。

于 2019-03-18T00:40:53.617 回答
0

设置双色调颜色:

如上所述,您可以使用colorcss 键,但材料双音主题似乎有问题;-)

通过使用自定义 css 过滤器,在几个 angular material github issue之一中描述了一种解决方法。这个自定义过滤器可以在这里生成。

例如:

html:

<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Material+Icons|Material+Icons+Outlined|Material+Icons+Round|Material+Icons+Two+Tone|Material+Icons+Sharp">

<i class="material-icons-two-tone red">home</i>

CSS:

.red {
filter: invert(8%) sepia(94%) saturate(4590%) hue-rotate(358deg) brightness(101%) contrast(112%);
}

附件:

于 2020-03-23T20:29:45.707 回答
0

添加下面的链接

笔记; 单独地,Material + Icons+Outlined 是一个类访问所有类,使用连接方法

于 2022-01-30T03:41:38.467 回答