Tengo algunos archivos SVG que especifican width
y height
así viewbox
:
<svg width="576pt" height="432pt" viewBox="0 0 576 432" > ...
pero ¿cómo mostrarlos en el navegador a un tamaño que yo decida? Los quiero más pequeños y lo he probado:
<object width="400" data="image.svg"></object>
pero luego obtengo barras de desplazamiento visibles.
Funciona si cambio los archivos SVG para configurar width
y height
en su 100%
lugar, pero quiero decidir el tamaño en el HTML independientemente de los tamaños que se utilicen en el archivo SVG. Es posible ?
Respuestas:
Puede agregar los atributos "preserveAspectRatio" y "viewBox" a la
<svg>
etiqueta para lograr esto.Abra el archivo .svg en un editor y busque la
<svg>
etiqueta. en esa etiqueta, agregue los siguientes atributos:Reemplaza {ancho} y {alto} con algunos valores predeterminados para viewBox. Utilicé los valores de los atributos "ancho" y "alto" de la etiqueta SVG y pareció funcionar.
Guarde el SVG y ahora debería escalar como se esperaba.
Encontré esta información aquí:
https://blueprints.launchpad.net/inkscape/+spec/allow-browser-resizing
fuente
preserveAspectRatio="xMinYMin meet"
no fue suficiente para mí. También necesitaba proporcionar unviewBox
como se menciona en la respuesta. ¡Lástima!preserveAspectRatio="none"
si desea estirar el svg de formas arbitrarias.100%
como se indica en esta respuesta .Ninguna de las respuestas dadas aquí funcionó para mí cuando pregunté esto en 2009. Como ahora tenía el mismo problema nuevamente, noté que usar la
<img>
etiqueta y el ancho junto con un svg funciona bien.fuente
<img>
se pierde toda la interactividad con los enlaces, Javascript, etc<img width="400" src="image.svg"/>
.Puede acceder al svg incrustado usando JavaScript:
Dado que su svg ya tiene un viewBox, Firefox debe escalar el ancho de 576 píxeles en el viewBox al ancho de 400 píxeles en su documento. Otros svgs podrían beneficiarse de un nuevo viewBox derivado del ancho y alto anunciado (estos suelen ser los mismos números). Otros navegadores pueden beneficiarse de diferentes ajustes de svg.
fuente
Security error: attempted to read protected variable
img / logo.svg ...
Esta configuración funcionó para mí.
fuente
viewBox="0 0 640 80"
. Aparentemente, si esto no está definido, realmente no puede escalarlo o dejar que CSS lo escale por usted usando, por ejemplo,width: 100%
etc.Encontré un problema en el que iOS en un iPad no cambiaba correctamente el tamaño de las imágenes SVG en una
<object>
etiqueta.El estilo CSS aumentaría o disminuiría el tamaño del
<object>
contenedor, pero la imagen dentro de él no se modificaría (en iPad, iOS 7).Las imágenes SVG se exportaron desde Adobe Illustrator, y la solución resultó reemplazar el ancho y el alto en esto:
con:
Necesitaba usar la
<object>
etiqueta porque<img>
actualmente la etiqueta no admite la incrustación de imágenes de mapa de bits en SVG.fuente
Configure el cuadro de visualización que falta y complete los valores de altura y ancho de los atributos de altura y altura establecidos en la etiqueta svg
Luego escale la imagen simplemente estableciendo la altura y el ancho en los valores porcentuales deseados . Buena suerte.
Puede establecer una relación de aspecto fija con preserveAspectRatio = "x200Y200 meet, pero no es necesario
p.ej
fuente
¡Simplemente use CSS para hacer que el navegador cambie el tamaño del SVG! Así:
<object style="width:30%">
consulte http://www.vlado-do.de/svg_test/ para obtener más detalles. También lo probé localmente con un SVG que tiene su ancho y alto en "pt". Funciona bien en Firefox.fuente
Vamos a ver. Tuve que refrescar mi memoria en SVG, no lo he usado mucho estos años.
Por lo que encontré hoy, parece que si especificas la dimensión de los objetos sin unidades, tienen un tamaño fijo (en píxeles, creo). Aparentemente, entonces, no hay forma de cambiar su tamaño cuando cambia el tamaño del SVG (solo cambia el tamaño de la ventana gráfica / lienzo).
A menos que, como se señaló, especifique el tamaño del SVG en porcentaje O especifique un viewBox (por ejemplo, viewBox = "0 0 600 500").
Ahora, si no tiene forma de cambiar el SVG exportado, me temo que no tiene suerte. ¿Qué biblioteca usas?
fuente
Aquí hay una solución PHP que usa QueryPath basada en la respuesta de Jim Keller.
Una vez que QueryPath esté cargado, simplemente pase su script svg a la función.
fuente