如何在Angular Material中使用<md-icon>?


Answers:


151

由于其他答案未能解决我的担忧,因此我决定编写自己的答案。

md-icon指令的icon属性中给出的路径是位于静态文件目录中某个位置的.png或.svg文件的URL。因此,您必须在icon属性中放置该文件的正确路径。ps将文件放在正确的目录中,以便您的服务器可以使用它。

请记住,md-icon它不像引导图标。当前,它们只是显示.svg文件的指令。

更新资料

自发布此问题以来,角度材料设计已发生了很大变化。

现在有几种使用方法 md-icon

第一种方法是使用SVG图标。

<md-icon md-svg-src = '<url_of_an_image_file>'></md-icon>

例:

<md-icon md-svg-src = '/static/img/android.svg'></md-icon>

要么

<md-icon md-svg-src = '{{ getMyIcon() }}'></md-icon>

:where getMyIcon是在中定义的方法$scope

要么 <md-icon md-svg-icon="social:android"></md-icon>

要使用此功能,您必须在$mdIconProvider服务中使用svg图标集配置您的应用程序。

angular.module('appSvgIconSets', ['ngMaterial'])  
  .controller('DemoCtrl', function($scope) {})  
  .config(function($mdIconProvider) {
    $mdIconProvider
      .iconSet('social', 'img/icons/sets/social-icons.svg', 24)
      .defaultIconSet('img/icons/sets/core-icons.svg', 24);    
  });

第二种方法是使用字体图标。

<md-icon md-font-icon="android" alt="android"></md-icon>

<md-icon md-font-icon="fa-magic" class="fa" alt="magic wand"></md-icon>

在执行此操作之前,您必须像这样加载字体库。

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

或使用带有连字的字体图标

<md-icon md-font-library="material-icons">face</md-icon>

<md-icon md-font-library="material-icons">#xE87C;</md-icon>

<md-icon md-font-library="material-icons" class="md-light md-48">face</md-icon>

有关更多详细信息,请查看我们的

Angular Material mdIcon指令文档

$ mdIcon服务文档

$ mdIconProvider服务文档


1
关于连字的快速说明:使用下划线代替连字符。它可能已记录在您的更多详细信息链接中的某处,但并不是没有人有时间进行数据处理。;-)
Olson.dev 2015年

给它们上色的正确方法是什么?
theblang

@mattblang如果您将它们用作字体图标,那么它只是一种字体。因此,在CSS中设置文本颜色(例如{color:red})将为它们着色。
tanou

1
正是我所需要的。使用时我一直在为样式苦苦挣扎<i class='material-icons'>icon_name</i>,但md-font-library完美地解决了我的问题。
Pieter VDE 2015年

为什么在md-icon中使用变量不起作用?像<md-icon md-font-library =“ material-icons”> {{user.type}} </ md-icon> ..在这种情况下,是user.type =“ face”并用作文本< md-icon md-font-library =“ material-icons”>面部</ md-icon>
mariomol

31

今天最简单的方法就是从Google字体中请求Material Icons字体,例如在您的HTML标头标记中:

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

或在样式表中:

@import url(https://fonts.googleapis.com/icon?family=Material+Icons);

然后按照md-icon指令中的说明使用带有连字的字体图标。例如:

<md-icon aria-label="Menu" class="material-icons">menu</md-icon>

图标/连字的完整列表位于https://www.google.com/design/icons/


如何在按钮上添加图标?
亚历山大·米尔斯

28

实际上,它现在可以从凉亭开始工作。

bower install material-design-icons --save

下载37.1 KB。然后解压缩并安装。您将在bower_components文件夹中看到一个名为material-design-icons的文件夹。总大小约为299KB


20
以及如何使用呢?
恩斯特恩斯特


5

简单方法:使用以下CDN:

<script src="//cdnjs.cloudflare.com/ajax/libs/angular-material-icons/0.5.0/angular-material-icons.min.js"></script> 

将ngMdIcons注入您的angularjs应用程序:

angular.module('demoapp', ['ngMdIcons']);

在html中使用ng-md-icon指令,通过CSS指定填充颜色:

<ng-md-icon icon="..." style="fill: ..." size="..."></ng-md-icon> 

资料来源:https : //klarsys.github.io/angular-material-icons/


2
它的烦人之处ng-md并不像md-icon那样使图标居中。
Mustafa 2015年

是的,这里有同样的问题。大多数情况下,您必须使用CSS来优化位置。position:relative;然后将svg元素或容器移动by left-top-right-bottom到所需的更好位置。
阿斯干2015年




0

通过使用像
使用css和字体一样的位置

@font-face {
    font-family: 'Material-Design-Icons';
    src: url('Material-Design-Icons.eot');
    src: url('Material-Design-Icons.eot?#iefix') format('embedded-opentype'),
         url('Material-Design-Icons.woff2') format('woff2'),
         url('Material-Design-Icons.woff') format('woff'),
         url('Material-Design-Icons.ttf') format('truetype'),
         url('Material-Design-Icons.svg#ge_dinar_oneregular') format('svg');
    font-weight: normal;
    font-style: normal;
}
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.