viewBox de SVG y escalado adaptable
Haga que los SVG se escalen correctamente en cualquier tamaño de pantalla
viewBox de SVG y escalado adaptable es una lección gratuita de HTML Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de HTML Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de HTML Academy incluye 4 lecciones en total.
width y height frente a viewBox
Los atributos width y height de SVG establecen el tamaño renderizado en el DOM. El atributo viewBox define el espacio de coordenadas interno. Son independientes: un viewBox de "0 0 100 100" con width="200" y height="200" escala el espacio de coordenadas 2x.
Sintaxis de viewBox
viewBox="min-x min-y width height". Lo más habitual es: viewBox="0 0 100 100", que define un espacio de coordenadas de 100x100 cuyo origen es el punto inicial. Los valores de coordenadas del SVG hacen referencia a este espacio, no a píxeles.
SVG adaptable
Para crear un SVG adaptable, omita los atributos width y height (o establézcalos en 100%) y deje que viewBox defina las proporciones. Añada CSS: svg { width: 100%; height: auto; }. El SVG se escala para ajustarse a su contenedor y mantiene la relación de aspecto.
preserveAspectRatio
preserveAspectRatio controla cómo se ajusta viewBox al viewport de SVG cuando las relaciones de aspecto son diferentes. Valores: "xMidYMid meet" (predeterminado: añade bandas), "xMidYMid slice" (recorta para rellenar), "none" (estira para ajustarse sin mantener la relación de aspecto).
min-x y min-y para desplazar
Cambiar min-x y min-y desplaza la parte visible del espacio de coordenadas SVG. viewBox="50 50 100 100" muestra la región desde (50,50) hasta (150,150). Esto permite crear desplazamiento interactivo actualizando los valores de viewBox con JavaScript.
Zoom con viewBox
Reduzca las dimensiones de viewBox para ampliar: viewBox="25 25 50 50" muestra una región más pequeña, ampliada para ocupar todo el elemento SVG. Aumente las dimensiones para alejar la vista. Actualice viewBox en los eventos wheel para crear un zoom interactivo sin escalar el elemento SVG.
SVG en img frente a SVG integrado
SVG en una etiqueta img: se escala de forma adaptable con object-fit, pero no se puede estilizar con CSS ni controlar mediante scripts. SVG integrado: ofrece acceso completo desde CSS y JavaScript, pero aumenta el tamaño del HTML. Elija según las necesidades de interactividad.
Patrón de SVG para iconos
Los SVG de iconos utilizan un viewBox fijo (por ejemplo, "0 0 24 24") y no tienen width ni height, de modo que CSS puede definir su tamaño: .icon { width: 1.5rem; height: 1.5rem; }. viewBox garantiza que los iconos se escalen correctamente a cualquier tamaño y mantengan un renderizado vectorial nítido.
symbol para sprites de iconos
Defina los iconos en elementos <symbol viewBox="0 0 24 24"> dentro de un SVG oculto. Haga referencia a ellos con <use href="#icon-name">. Cada elemento use puede tener sus propios valores de width, height, fill y color: un solo archivo de sprite para todos los iconos.
currentColor para aplicar temas
El atributo fill="currentColor" de SVG hereda la propiedad CSS color del elemento o de su elemento principal. Establezca color: red en el SVG o en un elemento principal y el icono se rellenará automáticamente de rojo. Esto permite que los iconos de un solo color sigan el color del texto sin estilos específicos de SVG.
Depuración de viewBox
Si el contenido SVG aparece recortado o se sitúa de forma inesperada, registre o inspeccione el valor de viewBox. Un error común consiste en establecer viewBox con las dimensiones en píxeles de la ilustración de origen sin ajustarlo al tamaño renderizado, lo que provoca problemas de escala. Compruebe que viewBox coincida con los límites reales del contenido de la ilustración SVG.
Comprobación de conocimientos
¿Cómo consigue que un SVG se escale de forma adaptable para ajustarse al ancho de cualquier contenedor?
Resumen
El viewBox de SVG define un espacio de coordenadas interno independiente del tamaño renderizado en píxeles, lo que permite un escalado adaptable. Establecer width:100%; height:auto con un viewBox permite que los SVG se adapten a cualquier contenedor. El patrón de sprite symbol+use, la aplicación de temas con currentColor y preserveAspectRatio forman un conjunto completo de herramientas para utilizar SVG flexibles y adaptables a distintos temas.
Preguntas frecuentes
¿La lección «viewBox de SVG y escalado adaptable» es gratis?
Sí — el texto completo de «viewBox de SVG y escalado adaptable» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de HTML Academy, actualiza a CoddyKit PRO. El curso de HTML Academy incluye 4 lecciones en total.
¿Qué aprenderé en «viewBox de SVG y escalado adaptable»?
Haga que los SVG se escalen correctamente en cualquier tamaño de pantalla Practicas HTML Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar HTML Academy?
No se requiere experiencia previa. HTML Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «viewBox de SVG y escalado adaptable»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de HTML Academy?
Sí. Cada lección de HTML Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- SVG en línea frente a img y object
- Formas SVG básicas: rect, circle y path
- viewBox de SVG y escalado adaptable
- Animar SVG con CSS y SMIL