У меня есть некоторые SVG файлы , которые определяют width
и height
так же , как viewbox
например:
<svg width="576pt" height="432pt" viewBox="0 0 576 432" > ...
но как отобразить их в браузере с размером, который я выбираю? Я хочу их поменьше и пробовал:
<object width="400" data="image.svg"></object>
но тогда я получаю видимые полосы прокрутки.
Это работает , если я меняю файлы SVG в набор width
и height
к 100%
вместо этого, но я хочу , чтобы решить размер в HTML независимо от того, каких размеров используются в файле SVG. Это возможно ?
Ответы:
Вы можете добавить атрибуты preserveAspectRatio и viewBox к
<svg>
тегу .Откройте файл .svg в редакторе и найдите
<svg>
тег. в этом теге добавьте следующие атрибуты:Замените {width} и {height} некоторыми значениями по умолчанию для viewBox. Я использовал значения из атрибутов «ширина» и «высота» тега SVG, и, похоже, это сработало.
Сохраните SVG, и теперь он должен масштабироваться должным образом.
Я нашел эту информацию здесь:
https://blueprints.launchpad.net/inkscape/+spec/allow-browser-resizing
источник
preserveAspectRatio="xMinYMin meet"
было мало. Мне также нужно было предоставить,viewBox
как указано в ответе. Жалость!preserveAspectRatio="none"
если хотите растянуть svg произвольным образом.100%
как указано в этом ответе .Ни один из приведенных здесь ответов не помог мне, когда я спросил об этом в 2009 году. Поскольку теперь у меня снова возникла та же проблема, я заметил, что использование
<img>
тега и ширины вместе с svg отлично работает.источник
<img>
вы теряете всякую интерактивность со ссылками, javascript и т. Д.<img width="400" src="image.svg"/>
.Вы можете войти во встроенный SVG с помощью JavaScript:
Поскольку в вашем svg уже есть viewBox, Firefox должен масштабировать ширину 576 пикселей в viewBox до ширины 400 пикселей в вашем документе. Другие SVG могут выиграть от нового viewBox, полученного на основе объявленных ширины и высоты (часто это одни и те же числа). Другие браузеры могут извлечь выгоду из других настроек svg.
источник
Security error: attempted to read protected variable
img / logo.svg ...
Эта установка сработала для меня.
источник
viewBox="0 0 640 80"
. Очевидно, если это не определено, вы не можете масштабировать его или позволить CSS масштабировать его для вас, например,width: 100%
и т. Д.Я столкнулся с проблемой, когда iOS на iPad некорректно изменял размер изображений SVG в
<object>
теге.Стиль CSS увеличит или уменьшит размер
<object>
контейнера, но изображение внутри него не будет изменено (на iPad, iOS 7).Изображения SVG были экспортированы из Adobe Illustrator, и решение оказалось заменой ширины и высоты в этом:
с участием:
Мне нужно было использовать
<object>
тег, потому что<img>
тег в настоящее время не поддерживает встраивание растровых изображений в SVG.источник
Задайте отсутствующее окно просмотра и заполните значения высоты и ширины установленных атрибутов высоты и высоты в теге svg
Затем масштабировать изображение , просто установив ширину и высоту до нужных процентов значений. Удачи.
Вы можете установить фиксированное соотношение сторон с помощью preserveAspectRatio = "x200Y200 meet, но это не обязательно
например
источник
Просто используйте CSS, чтобы браузер изменил размер SVG! Примерно так:
<object style="width:30%">
Подробнее см. Http://www.vlado-do.de/svg_test/ . Я просто также пробовал это локально с SVG, ширина и высота которого указаны в "pt". Хорошо работает в Firefox.источник
Давай посмотрим. Пришлось освежить память о SVG, последние годы я мало им пользовался.
Из того, что я обнаружил сегодня, кажется, что если вы укажете размер объектов без единиц измерения, они будут иметь фиксированный размер (я думаю, в пикселях). Очевидно, тогда нет возможности изменить их размер при изменении размера SVG (он меняет только размер области просмотра / холста).
Если, как указано, вы не укажете размер SVG в процентах ИЛИ не укажете viewBox (например, viewBox = "0 0 600 500").
Теперь, если у вас нет возможности изменить экспортированный SVG, я боюсь, что вам не повезло. Какую библиотеку вы используете?
источник
Вот решение PHP с использованием QueryPath на основе ответа Джима Келлера.
После загрузки QueryPath просто передайте свой svg-скрипт функции.
источник