Size: a a a

Angular - русскоговорящее сообщество

2019 December 07

АМ

Артур Мудрик in Angular - русскоговорящее сообщество
Alex Wells
Привет. Немного абстрактный вопрос: какой способ использования/загрузки svg иконок/лого/других маленьких картиночек считается best practise?

sprite?
img src?
еще что-то?
svg-спрайты. У тебя должна быть папка с svg-картинками иконок. Каждую иконку ручками в Иллюстраторе подгоняешь под один размер, чтобы, например, viewBox="0 0 512 512" у всех был одинаковый — так удобнее потом будет. Через gulp-svg-sprite генерируешь один svg-файл — это и есть svg-спрайт. Потом в Ангуляре делаешь компонент <icon name="trash"> и в нём выводишь иконку через use по её id.
источник

АМ

Артур Мудрик in Angular - русскоговорящее сообщество
<div class="icon icon--{{size}}">
   <svg viewBox="0 0 512 512">
       <use attr.xlink:href="#icon-{{name}}"></use>
   </svg>
</div>

а, забыл, а сам спрайт icons.svg я загружаю через httpClient и вставляю в DOM через innerHTML
источник

АМ

Артур Мудрик in Angular - русскоговорящее сообщество
превью ссылок нужно всегда выключать
источник

EG

Egor Gorbachev in Angular - русскоговорящее сообщество
А чем этот чат не подходит?
источник

АМ

Артур Мудрик in Angular - русскоговорящее сообщество
Egor Gorbachev
А чем этот чат не подходит?
этот чат про Ангуляр, а не CSS
источник

EG

Egor Gorbachev in Angular - русскоговорящее сообщество
Артур Мудрик
этот чат про Ангуляр, а не CSS
Так в ангуляре можно по-разному с SVG работать - инлайн, img src + дополнительные пакеты, которые автоматически инлайнят svg вроде этого: https://github.com/arkon/ng-inline-svg
Вопрос вполне уместный тут.
источник

АМ

Артур Мудрик in Angular - русскоговорящее сообщество
Alex Wells
окей, а в чем преимущество над img src с ссылкой?
преимущество в том, что <img src="..."> ты никак не можешь стилизовать через обычный CSS — нельзя покрасить в другой цвет, нельзя задать толщину линий иконки и т.д. и т.п., что легко и стандартно делается через инлайн-свг и обычный цсс
источник

AW

Alex Wells in Angular - русскоговорящее сообщество
Артур Мудрик
svg-спрайты. У тебя должна быть папка с svg-картинками иконок. Каждую иконку ручками в Иллюстраторе подгоняешь под один размер, чтобы, например, viewBox="0 0 512 512" у всех был одинаковый — так удобнее потом будет. Через gulp-svg-sprite генерируешь один svg-файл — это и есть svg-спрайт. Потом в Ангуляре делаешь компонент <icon name="trash"> и в нём выводишь иконку через use по её id.
Уже пол часа пытаюсь найти что-то адекватное, что бы поправить кривой viewbox
источник

RK

Roman Kolesnikov in Angular - русскоговорящее сообщество
Alex Wells
Привет. Немного абстрактный вопрос: какой способ использования/загрузки svg иконок/лого/других маленьких картиночек считается best practise?

sprite?
img src?
еще что-то?
https://www.npmjs.com/package/angular-svg-icon
исходники посмотри
источник

АМ

Артур Мудрик in Angular - русскоговорящее сообщество
Alex Wells
Уже пол часа пытаюсь найти что-то адекватное, что бы поправить кривой viewbox
я руками в Иллюстраторе привожу любую иконку к одному вьюбоксу. Но можно и в компонент каждый раз передавать нужный вьюбокс. Но мне так не нравится, поэтому я ручками всё подготавливаю и у меня всегда один вьюбокс захардкожен в компоненте.
источник

AW

Alex Wells in Angular - русскоговорящее сообщество
Артур Мудрик
я руками в Иллюстраторе привожу любую иконку к одному вьюбоксу. Но можно и в компонент каждый раз передавать нужный вьюбокс. Но мне так не нравится, поэтому я ручками всё подготавливаю и у меня всегда один вьюбокс захардкожен в компоненте.
Иллюстратора нет, равно как и желания им пользоватся ради такой херни :/
источник

AW

Alex Wells in Angular - русскоговорящее сообщество
Да и 90 свгшек вручную там править...
источник

АМ

Артур Мудрик in Angular - русскоговорящее сообщество
Alex Wells
Да и 90 свгшек вручную там править...
ок, поэтому вот так — <icon name="trash" viewBox="0 0 24 24"></icon> всегда пиши в зависимости от вьюбокса
источник

AW

Alex Wells in Angular - русскоговорящее сообщество
так все равно вьюбокс нужно подбирать для каждой свгшки
источник

АМ

Артур Мудрик in Angular - русскоговорящее сообщество
Alex Wells
Да и 90 свгшек вручную там править...
ещё нужно https://imageoptim.com/mac установить, хорошая штука
источник

АМ

Артур Мудрик in Angular - русскоговорящее сообщество
Alex Wells
так все равно вьюбокс нужно подбирать для каждой свгшки
не понимаю, что ты имеешь в виду — вьюбокс есть в коде svg-файла, открываешь смотришь
источник

AW

Alex Wells in Angular - русскоговорящее сообщество
Я в SVGO их загнал и так. Будет профит от этой штуки?
источник

АМ

Артур Мудрик in Angular - русскоговорящее сообщество
определённо
источник

AW

Alex Wells in Angular - русскоговорящее сообщество
Артур Мудрик
не понимаю, что ты имеешь в виду — вьюбокс есть в коде svg-файла, открываешь смотришь
источник

AW

Alex Wells in Angular - русскоговорящее сообщество
Имею в виду, что в свгшке этот самый вьюбокс - кривой
источник