Различные стили значков материалов не совпадают - PullRequest
1 голос
/ 16 мая 2019

Я использую значки материалов дизайна от Google в своем приложении. На данный момент нужны как минимум два стиля: обычные (заполненные) иконки и выделенные. Проблема в том, что эти два стиля не совпадают!

Если вы посмотрите на этот вывод, обычные и выделенные значки расположены на разной высоте без четкой причины. Изучив их в инспекторе, вы можете увидеть, что ограничивающие рамки действительно разные (для выделенных значков они кажутся ниже, чем нужно).

.icon {
  vertical-align: middle;
}
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined" rel="stylesheet">

<i class="icon material-icons">person</i>
<i class="icon material-icons-outlined">person</i>
<i class="icon material-icons">home</i>
<i class="icon material-icons-outlined">home</i>

Screenshot of the output

Есть ли обходной путь, который можно применить к классу .material-icons-outlined один раз, чтобы обеспечить их правильное позиционирование везде?

margin-bottom: -1em работает для базовых случаев, но значки используются во многих различных контекстах, и иногда (например, когда их родителям необходимо уменьшить свою высоту строки) это решение не удается.

В качестве альтернативы, есть ли инструмент, который может быстро исправить шрифт и заставить его символы появляться на нужной высоте?

ОБНОВЛЕНИЕ : Кажется, это проблема только на моем Windows 8.1. Значки выровнены в Windows 10. Это воспроизводится в любом браузере.

ОБНОВЛЕНИЕ (2) : Тем не менее, между этими двумя шрифтами есть определенная разница. Выделенные значки не работают (просто отображают их имена вместо значков) в старых версиях iOS, в то время как обычные работают отлично.

1 Ответ

0 голосов
/ 16 мая 2019

Вы можете использовать изгиб (или даже сетку), чтобы выровнять их по центру.

.icon-wrapper {
  display: flex;
  align-items: center;
}
<link href="https://fonts.googleapis.com/icon?family=Material+Icons|Material+Icons+Outlined" rel="stylesheet">

<div class="icon-wrapper">
  <i class="icon material-icons">person</i>
  <i class="icon material-icons-outlined">person</i>
  <i class="icon material-icons">home</i>
  <i class="icon material-icons-outlined">home</i>
</div>
...