Як використовувати <md-icon> у кутовому матеріалі?


102

Мені було цікаво, як використовувати піктограми Матеріал, оскільки це не працює:

<material-icon icon = "/img/icons/ic_access_time_24px.svg"> </material-icon> 

Я думаю, що існує проблема з доріжкою, заданою як параметр до атрибута значка. Я хотів би знати, де насправді знаходиться ця папка значків?

Відповіді:


151

Оскільки інші відповіді не вирішили мого занепокоєння, я вирішив написати свою відповідь.

Шлях, вказаний в атрибуті значка md-iconдирективи, - це URL-адреса файлу .png або .svg, що лежить десь у вашому каталозі статичних файлів. Отже, ви повинні покласти правильний шлях до цього файлу в атрибут 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>

: де 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>

Для більш детальної інформації зверніться до нашої

Документальна документація щодо директиви mdIcon углового матеріалу

$ mdIcon Служба документації

$ mdIconProvider Служба документації


1
Коротка примітка про лігатури: використовуйте підкреслення замість дефісів. Це, мабуть, зафіксовано десь у ваших подальших посиланнях, але у вас ніхто не має часу на дат. ;-)
Olson.dev

Який правильний спосіб їх забарвлення?
theblang

@mattblang, якщо ви використовуєте їх як піктограму шрифту, то це лише шрифт. Тож встановлення кольору тексту в css (наприклад, {color: red}) забарвить їх.
tanou

1
Саме те, що мені було потрібно. Я боровся зі стилем під час використання <i class='material-icons'>icon_name</i>, але md-font-libraryпрекрасно вирішив своє питання.
Пітер VDE

Чому використання змінної в md-icon не працює? як <md-icon md-font-library = "material-icons"> {{user.type}} </md-icon> .. в цьому випадку user.type = "face" і використовуючи як текст, він працює < md-icon md-font-library = "material-icons"> face </md-icon>
mariomol

31

Найпростішим способом сьогодні було б просто попросити шрифт Material Icons від шрифтів Google, наприклад, у тезі 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 Кб. Потім він витягує та встановлює. Ви побачите папку з назвою material-design-icons у папці bower_components. Загальний розмір - близько 299 КБ


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']);

Використовуйте директиву ng-md-icon у своєму html, вказавши колір заповнення через css:

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

Джерело: https://klarsys.github.io/angular-material-icons/


2
його дратівливий ng-mdцентр не піктограму в кнопках значків, як на md-icon.
Мустафа

так, тут та сама проблема. переважно вам доведеться уточнювати позиції css. position:relative;а потім перемістіть елемент svg або контейнер by left-top-right-bottomу потрібне положення.
Аскан


1

Усі md-префікси тепер є mat-префіксами на час написання цього запису!

Помістіть це в голову html:

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

Імпорт у наш модуль:

import { MatIconModule } from '@angular/material';

Використовуйте у своєму коді:

<mat-icon>face</mat-icon>

Ось остання документація:

https://material.angular.io/components/icon/overview


В OP використовується матеріал AngularJS.
Едрік


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;
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.