如何使用新的“材料设计”图标主题:“轮廓”,“圆角”,“二音”和“锐利”?


170

Google 用4个新的预设主题修改了其Material Design图标

除了常规的填充/基线主题外,还包括轮廓,圆角,二音和锐利


但是,不幸的是,它在任何地方都没有说明如何使用新主题。


我一直通过包括以下链接通过Google Web字体使用它

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

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

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

但它始终显示“已填充/基线”版本。


我尝试执行以下操作来代替使用大纲主题:

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

然后,将“网络字体”链接更改为:

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

等等,但是不起作用。


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


tl; dr:有人尝试过使用新主题吗?它甚至可以像基准版本(嵌入式html标记)一样工作吗?还是仅以SVG或PNG格式下载?

提前致谢。

Answers:


170

更新(31/03/2019):所有图标主题现在都可以通过Google Web字体使用。

正如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进行更改。

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


更新(14/11/2018):带有16个轮廓图标的列表,这些图标可使用“ _outline”后缀。

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

(如在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日),自引入新图标主题以来仅两个多月,尚无办法使用内嵌标签包含这些图标<i class="material-icons"></i>

+马丁指出,在Github上存在与此相关的问题:https : //github.com/google/material-design-icons/issues/773

因此,在Google提出解决方案之前,我已经开始使用黑客技术在开发环境中包含这些新图标主题,然后再将相应图标下载为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

包括要使用的主题的样式表。例如:对于“概述”主题,将样式表用于“ 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-announcementround-announcementtwotone-announcementsharp-announcement

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


更改图标大小:

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


例:

案例I:对于account_circle图标的大纲主题:

1)包括样式表:

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

2)在页面上添加图标标签:

<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">

2)在页面上添加图标标签:

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

(对于深色背景):

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

我不能太强调这不是在生产环境中包含图标的正确方法。但是,如果您必须浏览开发中页面上的多个图标,则确实可以很容易地包含图标并节省大量时间。

在进行站点速度优化时,将图标下载为SVG或PNG当然是更好的选择,但是在原型设计阶段以及检查特定图标是否与您的设计配合使用时,字体图标可节省时间。


如果Google提出了解决此问题的解决方案,而该解决方案不涉及下载使用图标,那么我将更新此帖子。


你好!这是非常有用的,但是我仍然不能包含我的图标,我想包含screen_share,我尝试了.outline-screen_share类,但是它确实打印了任何内容,我在检查器中检查了该类,并且该类存在,可能我丢失了任何步骤?
cucuru

1
@cucuru谢谢,我想您错过了步骤2。首先将类.material-icons-new及其属性添加到自己的样式表中,然后通过调用图标<i class="material-icons-new outline-screen_share"></i>
约翰·希尔

1
现在有似乎是新材料的图标主题新的CSS字体:codepen.io/Chan4077/pen/bZNyQG
埃德里克

大!奇迹般有效。
苏里亚

对于Angular Material,您需要使用fontSet代替class。请参阅19年8月14日的Ron Netzer的答案。
罗斯,

31

截至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查看


3
看来colorCSS属性当前不影响新“材质图标”主题的颜色。
Edric

1
概述的图标不起作用,即,有什么想法吗?
Jismon Thomas

1
它根本不会显示,即使您在ie上运行此页面,也可以看到它只是空白,我最终在ie上使用了基线!
吉斯蒙·托马斯

似乎该color属性在除双色调图标之外的所有图标上均受支持。(今天测试)
Edric

16

对于角形材质,应使用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>
...

12

如果您已经在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" />

材质图标类:

之后,只需检查wich className您是否正在使用:

之前:

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

后:

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

对我有用...普拉维达!


10

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

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

<mat-icon>info_outline</mat-icon>

啊哈,所以在Angular上是这样的;那很整齐。
阿希尔·约翰(John Ashil John)'18年

5
有些图标是轮廓,后缀为_outline。它仅适用于那些
Sangmin Lee

@SangminLee是的,这是应该使用的图标列表。material.io/tools/icons/?style=outline
fxrxz

@ Aj334是的,它很简洁,如果它回答了您的问题,您也可以接受此答案吗?
fxrxz

1
我只是在React.js项目中使用了纯Material Web字体。因此,它与Angular没有任何关系。我认为这是解决方案。
Juuro

9

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

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类。


对于Angular,请使用<mat-icon class="material-icons-two-tone">alarm</mat-icon>。无论使用哪种替换类material-iconsmaterial-icons-outlinedmaterial-icons-two-tonematerial-icons-sharpmaterial-icons-round。并使用以下任何图标名称替换警报:material.io/resources/icons/?
assessment&style=baseline

使用mat-icon的方式,您正在添加其他模块,这会增加应用程序的大小(嗯,它会增加一点点,但是有时几kb很重要)
Vano Maisuradze

@VanoMaisuradze您可以链接到该文档吗?
Mehulkumar

AFAIK,没有文档。
Vano Maisuradze

5

新主题可能不是材料图标字体的一部分(还?)。链接


该项目已经有2年没有发布版本了,我没有屏息。
编码员

3

Aj334的最新编辑效果非常好。

Google 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>

3

到目前为止,没有一个答案说明如何下载该字体的各种变体,以便您可以从自己的网站(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,用于指定相应字体的位置。


2

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 Material:

<mat-icon>account_balance</mat-icon>
<mat-icon class="material-icons-outlined">account_balance</mat-icon>

在属性解决方案出现之前,我将继续使用这种简单方法。好人@intergalactic
Sparker73 '19

如果我通过dependencies应用程序的package.json而不是通过获取图标<link>怎么办?我没有在URL中包括轮廓图标...
Jago

1

放入Google样式的头部链接

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

在体内这样的东西

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

0

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

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

如果有人感到胆怯,可以使用IcoMoon转换整个主题。地狱,IcoMoon可能有一个内部流程,这很容易,因为他们已经在其库中设置了原始材质图标。

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


0

我很不满意,直到知道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>


0

设置双色调颜色:

如上所述,您可以使用colorcss键,但材质可能会出现毛刺的双音主题;-)

使用自定义css过滤器在几种有角材料的github 问题之一中描述了一种解决方法。可以在此处生成此自定义过滤器。

例如:

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%);
}

附件:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.