El objetivo es que el elemento <svg>
se expanda al tamaño de su contenedor principal, en este caso un <div>
, sin importar qué tan grande o pequeño sea ese contenedor.¿Cómo hacer que un elemento <svg> se expanda o contraiga a su contenedor principal?
El código:
<style>
svg, #container{
height: 100%;
width: 100%;
}
</style>
<div id="container">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" >
<rect x="0" y="0" width="100" height="100" />
</svg>
</div>
La solución más común a este problema parece estar estableciendo el atributo viewBox
en el elemento <svg>
.
viewBox="0 0 widthOfContainer heightOfContainer"
Sin embargo, esto no parece funcionar en los casos en los elementos dentro del elemento <svg>
tienen anchuras y/o alturas predefinidas. Por ejemplo, el elemento <rect>
, en el código anterior, tiene su ancho y alto explícitamente establecidos.
Así que la solución obvia es usar% anchos y% de altura en esos elementos también. ¿Pero esto incluso tiene que hacerse? Especialmente, dado que <img src=test.svg >
funciona bien y se expande/contrae sin problemas con alturas y anchos <rect>
establecidos explícitamente.
Si elementos como <rect>
, y otros elementos como él, tiene que tener sus anchuras y alturas definidas en porcentajes, hay una manera en Inkscape para configurarlo de manera que todos los elementos con la <svg>
documento anchuras uso porcentuales, alturas, etc .. en lugar de dimensiones fijas?
Guarde el svg como un archivo, que lo referencia como una imagen, como y de esa manera puede usar el ancho: 100% o alto: 100% – Burimi
Posible duplicado de [¿Cómo puedo hacer una escala svg con su contenedor principal ?] (http://stackoverflow.com/questions/19484707/how-can-i-make-an-svg-scale-with-its-parent-container) – Charles