Как использовать новые темы "Значки дизайна материалов": "Очерченные", "Округлые", "Два тона" и "Острый"?
Google обновил свои Иконки дизайна материалов с 4 новыми предустановленными темами:
Очерченные, закругленные, двухтонные и острые, в дополнение к обычной теме Filled/Baseline:
Но, к сожалению, он нигде не говорит о том, как использовать новые темы.
Я использовал его через Google Web Fonts, включив ссылку:
<link href="#" onclick="location.href='https://fonts.googleapis.com/icon?family=Material+Icons'; return false;" 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="#" onclick="location.href='https://fonts.googleapis.com/icon?family=Material+Icons&style=outlined'; return false;" rel="stylesheet">
и т.д. Но это не сработает.
И нет смысла делать снимки в темноте.
tl; dr: Кто-нибудь пытался использовать новые темы? Он работает даже как базовая версия (встроенный тег html)? Или он предназначен только для загрузки в формате SVG или PNG?
Заранее спасибо.
Ответы
Ответ 1
Обновление (31/03/2019): все темы значков теперь работают через веб-шрифты Google.
Как отметил Эдрик, теперь нужно просто добавить ссылку на веб-шрифты 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".
Здесь приведен самый последний список из 16 контурных значков, которые работают с обычным Web-шрифтом Material-icons, используя суффикс _outline (проверено и подтверждено).
(Как указано на странице github material-design-icons. Искать: " _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_ изложены" и не обрисовать.
Это взломать, чтобы проверить новые темы значков с помощью встроенного тега. Это не официальное решение.
По состоянию на сегодня (19 июля 2018 года), чуть более 2 -х месяцев с момента были введены темы, новые иконки, нет никакого способа, чтобы включить эти иконки, используя встроенный тег <i class="material-icons"></i>
.
+Martin указал, что на Github возникла проблема, касающаяся того же: https://github.com/google/material-design-icons/issues/773
Поэтому, пока Google не придумает решение для этого, я начал использовать хак для включения этих новых тем значков в мою среду разработки, прежде чем загружать соответствующие значки в формате SVG или PNG. И я думал, что поделюсь этим со всеми вами.
ВАЖНО: не используйте это в производственной среде, так как каждый из включенных файлов CSS от Google имеет размер более 1 МБ.
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">
Sharp:
<link rel="stylesheet" href="https://storage.googleapis.com/non-spec-apps/mio-icons/latest/sharp.css">
Каждый из этих файлов содержит значки соответствующих тем, включенных в качестве изображений backg round- (Base64 image-data). И вот как мы можем использовать это, чтобы проверить совместимость определенного значка в нашем дизайне, прежде чем загружать его для использования в производственной среде.
ШАГ 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-
: outline-
Округлено: round-
Двухцветный: twotone-
Резкое: sharp-
Например (для значка "объявление"):
outline-announcement
, round-announcement
, twotone-announcement
, sharp-announcement
3) Используйте опциональный icon-white
3-го класса для изменения цвета с черного на белый (для темного фона)
Изменение размера иконки:
Поскольку это изображение backg round-, а не значок шрифта, используйте свойства height
и width
CSS, чтобы изменить размер значков. По умолчанию установлено значение 24px в классе material-icons-new
.
Пример:
Случай 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>
Случай II: Для Sharp Тема иконы оценки:
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 примет решение для этой проблемы, которое не предполагает загрузку значка для использования.
Ответ 2
По состоянию на 27 февраля 2019 года появились шрифты CSS для новых тем значков материалов.
Тем не менее, вы должны создать классы CSS, чтобы использовать шрифты.
Семейства шрифтов следующие:
- Изложенные значки
Material Icons Outlined
- выделенные значки -
Material Icons Two Tone
- Двухцветные иконки -
Material Icons Round
- Округлые иконки -
Material Icons Sharp
- Material Icons Sharp
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>
Ответ 3
Что для меня работало, это использование _outline not _outline d после имени значка.
<mat-icon>info</mat-icon>
против
<mat-icon>info_outline</mat-icon>
Ответ 4
Если у вас уже есть значки материалов, работающие в вашем веб-проекте, просто обновите вашу ссылку в 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!
Ответ 5
Новые темы, вероятно, не являются (пока?) Частью шрифта Material Icons. Ссылка
Ответ 6
Для angular материала вы должны использовать fontSet input для изменения семейства шрифтов:
<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>
...
Ответ 7
Недавнее редактирование 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>
Ответ 8
Ссылка на веб-шрифты теперь работает во всех браузерах!
Просто добавьте свои темы к ссылке на шрифт, разделенной пробелом (|
), вот так
<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>
Этот шаблон также будет работать с угловым материалом:
<mat-icon>account_balance</mat-icon>
<mat-icon class="material-icons-outlined">account_balance</mat-icon>
Ответ 9
Я закончил использование приложения IcoMoon, чтобы создать собственный шрифт, используя только новые значки, которые мне нужны для недавней сборки веб-приложений. Это не идеально, но вы можете имитировать существующую функциональность Google Font довольно хорошо с небольшим количеством настроек. Вот запись:
https://medium.com/@leemartin/how-to-use-material-icon-outlined-rounded-two-tone-and-sharp-themes-92276f2415d2
Если кто-то смеет, они могут преобразовать всю тему, используя IcoMoon. Черт, у IcoMoon, вероятно, есть внутренний процесс, который облегчит работу, поскольку у них уже есть оригинальные значки материалов, установленные в их библиотеке.
Во всяком случае, это не идеальное решение, но это сработало для меня.
Ответ 10
Вы можете использовать этот репозиторий. https://github.com/petergng/materialIconFont
Питер был так добр, чтобы генерировать отдельные шрифты из официальных SVG. Я просто добавил некоторые CSS, чтобы использовать его с Угловым материалом. Дополнительная информация о readme.
Ответ 11
Я был недоволен тем, что до тех пор, пока не узнаю, что 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>
Ответ 12
Несколько забавно, Google сделал шрифт, который работает правильно в Safari, но не в Chrome. Здесь https://codepen.io/anon/pen/zbavza
<i class="material-icons-round red">warning</i>
Ссылка на fooobar.com/info/15671903/... и невозможность изменить цвет с помощью css.