Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Как масштабировать размеры иконок svg

#html #css #svg #icon #inkscape


Вот есть код:





     
          
    


При размерах 256 пикселей размер svg иконки не 256 пикселей, а где-то ~140 При указании 128, тоже не 128 и т.д. Почему так происходит? Я уже перечитал все эти мануалы, в примерах их иконки все нормально отображаются с размерами, а почему эта не работает как надо?!


Ответы

Ответ 1



Масштаб определяется соотношением viewport / viewBox, где viewport это width="X" height="Y" В вашем примере масштабирование применяется последовательно несколько раз. Очень легко запутаться. Поэтому я максимально упрощу ваш пример и поэтапно буду усложнять до практического применения Ниже пример, где применяется масштабирование только один раз в шапке svg файла viewport / viewBox = 100/100=1. Масштаб будет - 1:1 То есть как нарисовано в векторном редакторе, так и будет отражаться на дисплее На скрине векторного редактора видно, что физически иконка имеет габариты - 56.6 х 56.6px Теперь запускаем этот же файл в браузере. И для наглядности я добавил красный прямоугольник, через стили в шапке файла, который показывает границы SVG файла. style="border:1px solid red;" Границы svg определяет viewport это - width="100" height="100" Из примеров видно, что иконка 56 х 56px не полностью занимает viewport - 100 х 100px Это очень плохо, так как эти свободные пространства добавляют отступы от других элементов верстки HTML Убираем лишние отступы Для этого уменьшаем viewport до размеров иконки width="56" height="56" viewBox="0 0 58 58" Смотрим результаты в векторном редакторе и в браузере: Пример в браузере Масштабирование иконок до требуемых размеров Размер 256 x 256px Для этого увеличиваем размер viewport до требуемых размеров Размер 128 x 128px проверяем в векторном редакторе Делаем рабочую версию приложения Основное правило последовательных масштабирований в одном файле SVG В шапке файла SVG задается самый большой viewport - это прямоугольная область, которую видит пользователь на экране. Если задали width="256" height="256", то последующие масштабирования, которые идут в коде ниже могут только уменьшать размер этой области. Пример с 3 иконками 256x256; 128x128; 64x64 .alignlef { display: inline; float: left; margin-right: 1.625em; } path { fill:inherit; stroke:inherit; }


Комментариев нет:

Отправить комментарий