HTML - SVG

-

Introducción a SVG

SVG (Gráficos Vectoriales Escalables) es un formato basado en XML para crear gráficos vectoriales en la web. A diferencia de las imágenes de mapa de bits (JPEG o PNG) compuestas por píxeles, los gráficos SVG se definen usando instrucciones matemáticas, lo que permite escalarlos a cualquier tamaño sin perder calidad.

Una de las principales ventajas de usar SVG es su capacidad para crear gráficos nítidos que se ven bien en cualquier tamaño de pantalla. Ya sea que veas una imagen SVG en un dispositivo móvil pequeño o en un monitor de escritorio grande, los gráficos permanecerán nítidos. Esto hace que SVG sea adecuado para crear logotipos, íconos, gráficos y otros elementos visuales que necesitan redimensionarse con frecuencia.

Otro beneficio de SVG es su pequeño tamaño de archivo en comparación con las imágenes de mapa de bits. Dado que los gráficos SVG se definen usando código en lugar de píxeles, se pueden comprimir y optimizar para reducir su tamaño de archivo sin sacrificar la calidad de la imagen. Esto significa tiempos de carga de página más rápidos y mejor rendimiento, especialmente en dispositivos móviles o conexiones de internet más lentas.

Al comparar SVG con imágenes de mapa de bits, considera el tipo de gráfico que estás creando. Las imágenes de mapa de bits son mejores para fotografías con muchos colores y detalles. SVG destaca en la creación de formas geométricas simples, íconos e ilustraciones con colores sólidos o degradados. Los gráficos SVG también se pueden animar y hacer interactivos usando JavaScript, abriendo posibilidades para contenido web atractivo.

Consejo: Ejemplo de código HTML con espacios extra

<p>This    is   a   paragraph   with    extra   spaces.</p>

Cuando un navegador renderiza este código, mostrará el texto como:

This is a paragraph with extra spaces.

Consejo: Ejemplo de etiquetas no coincidentes

<p>This is a paragraph.</div>

En este caso, la etiqueta de apertura <p> se cierra con una etiqueta </div>, lo cual es incorrecto. La forma correcta de cerrar el párrafo es:

<p>This is a paragraph.</p>

Sintaxis básica de SVG

Para comenzar a usar SVG, necesitas entender su sintaxis básica y estructura de documento. El código SVG está escrito en formato XML, lo que significa que sigue un conjunto de reglas para definir elementos y atributos.

Lo primero que se debe incluir en un documento SVG es la declaración XML y el espacio de nombres SVG. El espacio de nombres le indica al navegador que el código está escrito en formato SVG.

Consejo: Cómo iniciar un documento SVG

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg">
  <!-- El contenido SVG va aquí -->
</svg>

El elemento <svg> es el elemento raíz de un documento SVG. Todos los demás elementos SVG se colocan dentro de él. El atributo xmlns especifica el espacio de nombres SVG, que siempre es "http://www.w3.org/2000/svg".

Dos atributos del elemento <svg> son width y height. Estos definen el tamaño del viewport SVG, que es el área visible de la imagen SVG. Puedes especificar el ancho y alto en píxeles u otras unidades:

Consejo: Establecer ancho y alto para SVG

<svg xmlns="http://www.w3.org/2000/svg" width="500" height="300">
  <!-- El contenido SVG va aquí -->
</svg>

Otro atributo que debes conocer es viewBox. Define el sistema de coordenadas y la relación de aspecto de la imagen SVG. El atributo viewBox toma cuatro valores: x, y, width y height. Los valores x e y especifican la esquina superior izquierda del viewBox, mientras que width y height definen su tamaño:

Consejo: Definir el viewBox para SVG

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <!-- El contenido SVG va aquí -->
</svg>

El viewBox comienza en las coordenadas (0, 0) y tiene un ancho y alto de 100 unidades cada uno. La imagen SVG se escalará para ajustarse dentro del viewport manteniendo su relación de aspecto.

SVG utiliza un sistema de coordenadas donde la esquina superior izquierda es (0, 0), y los valores aumentan hacia la derecha y hacia abajo. Puedes especificar coordenadas y longitudes en varias unidades, como píxeles (px), em, rem o porcentajes. Sin embargo, las unidades más comunes en SVG son las unidades de usuario, que están definidas por el atributo viewBox.

Dibujo de Formas Básicas

SVG ofrece varias formas básicas que puedes usar para crear gráficos. Estas formas incluyen rectángulos, círculos, elipses, líneas, polígonos, polilíneas y trazados.

Para dibujar un rectángulo, usa el elemento <rect>. Puedes especificar la posición y el tamaño del rectángulo usando los atributos x, y, width y height. Los atributos x e y definen las coordenadas de la esquina superior izquierda, mientras que width y height establecen las dimensiones del rectángulo:

Consejo: Dibujando un Rectángulo

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <rect x="10" y="10" width="50" height="30" />
</svg>

Para crear un círculo, usa el elemento <circle>. Especifica la posición del centro usando los atributos cx y cy, y establece el radio con el atributo r:

Consejo: Creando un Círculo

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="25" />
</svg>

Para una elipse, usa el elemento <ellipse>. Similar a un círculo, establece la posición del centro con cx y cy, pero en lugar de un solo radio, usa los atributos rx y ry para definir los radios horizontal y vertical:

Consejo: Creando una Elipse

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <ellipse cx="50" cy="50" rx="30" ry="20" />
</svg>

Para dibujar una línea, usa el elemento <line>. Especifica el punto de inicio con los atributos x1 e y1 y el punto final con x2 e y2:

Consejo: Dibujando una Línea

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <line x1="10" y1="10" x2="90" y2="90" />
</svg>

Para crear formas complejas con líneas rectas, usa los elementos <polygon> o <polyline>. Ambos toman un atributo points que define los vértices de la forma. La diferencia es que un polígono cierra automáticamente la forma, mientras que una polilínea la deja abierta:

Consejo: Creando un Polígono y una Polilínea

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <polygon points="50,10 90,90 10,90" />
  <polyline points="10,50 50,10 90,50" />
</svg>

Cuando necesites crear curvas y formas complejas, usa el elemento <path>. Toma un atributo d que define el trazado usando una serie de comandos y coordenadas. Algunos comandos comunes incluyen M (mover a), L (línea a), H (línea horizontal), V (línea vertical), C (curva Bézier cúbica) y Z (cerrar trazado):

Consejo: Creando un Trazado Complejo

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <path d="M10,50 C10,10 90,10 90,50 C90,90 10,90 10,50 Z" />
</svg>

Estas formas básicas te proporcionan los elementos fundamentales para crear una variedad de gráficos con SVG. Puedes combinarlas, darles estilo y transformarlas para lograr el aspecto deseado en tus proyectos.

Estilización de elementos SVG

SVG ofrece formas de estilizar y cambiar la apariencia de los elementos. Puedes usar atributos como fill y stroke para establecer colores, opacidad para transparencia, gradientes y patrones para textura, e incluso CSS para un estilizado más avanzado.

Para establecer el color de relleno de un elemento SVG, usa el atributo fill. Este atributo acepta palabras clave de color, valores hexadecimales, RGB o HSL:

Consejo: Establecer el color de relleno de un elemento SVG

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <rect x="10" y="10" width="50" height="30" fill="blue" />
  <circle cx="50" cy="50" r="25" fill="#ff0000" />
</svg>

El trazo es el contorno de una forma SVG. Establece el color del trazo usando el atributo stroke y controla su ancho con stroke-width:

Consejo: Establecer el color y ancho del trazo de una forma SVG

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <rect x="10" y="10" width="50" height="30" fill="none" stroke="blue" stroke-width="2" />
  <circle cx="50" cy="50" r="25" fill="none" stroke="#ff0000" stroke-width="4" />
</svg>

Para hacer un elemento transparente, usa el atributo opacity. Acepta valores entre 0 (completamente transparente) y 1 (completamente opaco):

Consejo: Establecer la opacidad de un elemento SVG

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <rect x="10" y="10" width="50" height="30" fill="blue" opacity="0.5" />
  <circle cx="50" cy="50" r="25" fill="#ff0000" opacity="0.7" />
</svg>

También puedes establecer la opacidad del relleno o del trazo por separado usando fill-opacity y stroke-opacity.

SVG admite gradientes lineales y radiales para crear transiciones suaves de color. Define el gradiente usando el elemento <linearGradient> o <radialGradient> y referencíalo en el atributo fill o stroke usando una URL:

Consejo: Usar gradientes lineales en SVG

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <defs>
    <linearGradient id="myGradient">
      <stop offset="0%" stop-color="blue" />
      <stop offset="100%" stop-color="red" />
    </linearGradient>
  </defs>
  <rect x="10" y="10" width="50" height="30" fill="url(#myGradient)" />
</svg>

Los patrones te permiten rellenar formas con imágenes repetitivas u otros elementos SVG. Define el patrón usando el elemento <pattern> y referencíalo en el atributo fill o stroke:

Consejo: Usar patrones en SVG

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <defs>
    <pattern id="myPattern" x="0" y="0" width="20" height="20" patternUnits="userSpaceOnUse">
      <circle cx="10" cy="10" r="5" fill="blue" />
    </pattern>
  </defs>
  <rect x="10" y="10" width="50" height="30" fill="url(#myPattern)" />
</svg>

Además de los atributos, puedes estilizar elementos SVG usando CSS. Aplica reglas CSS a elementos SVG usando estilos en línea, hojas de estilo internas o hojas de estilo externas:

Consejo: Estilizar elementos SVG usando CSS

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <style>
    .myStyle {
      fill: blue;
      stroke: red;
      stroke-width: 2;
    }
  </style>
  <rect x="10" y="10" width="50" height="30" class="myStyle" />
</svg>

Usar CSS permite un estilizado más flexible y reutilizable, ya que puedes dirigirte a elementos basados en sus nombres de etiqueta, clases o IDs.

Combinando estas técnicas de estilizado, puedes crear gráficos SVG visualmente atractivos y personalizados que se ajusten al diseño y los requisitos de tu proyecto.

Texto en SVG

Añadir texto a tus gráficos SVG es fácil usando el elemento <text>. Puedes posicionar el texto usando los atributos x e y, que especifican las coordenadas del punto de anclaje del texto. Por defecto, el punto de anclaje es el borde izquierdo de la línea base del texto:

Consejo: Ejemplo de Texto Básico

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 100">
  <text x="20" y="35">¡Hola, SVG!</text>
</svg>

Para formatear y estilizar el texto, puedes usar varios atributos o propiedades CSS. Por ejemplo, puedes cambiar la familia de fuente, tamaño, peso y estilo usando los atributos font-family, font-size, font-weight, y font-style:

Consejo: Ejemplo de Texto Estilizado

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 100">
  <text x="20" y="35" font-family="Arial" font-size="24" font-weight="bold" font-style="italic">
    ¡Hola, SVG!
  </text>
</svg>

También puedes aplicar colores de relleno y trazo al texto, ajustar el punto de anclaje del texto usando el atributo text-anchor (con valores como start, middle, o end), y controlar el espaciado entre caracteres o palabras usando los atributos letter-spacing y word-spacing.

Si necesitas envolver texto o crear texto en múltiples líneas, puedes usar el elemento <tspan> dentro del elemento <text>. Cada <tspan> representa una línea separada de texto y puede tener su propio posicionamiento y estilo:

Consejo: Ejemplo de Texto en Múltiples Líneas

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 100">
  <text x="20" y="35">
    <tspan>¡Hola,</tspan>
    <tspan x="20" y="60">SVG!</tspan>
  </text>
</svg>

Otra característica interesante del texto SVG es la capacidad de colocarlo a lo largo de una ruta. Para hacer esto, primero define una ruta usando el elemento <path>. Luego, usa el elemento <textPath> dentro del elemento <text> y referencia la ruta usando el atributo href:

Consejo: Ejemplo de Texto a lo Largo de una Ruta

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 100">
  <path id="myPath" d="M20,20 C20,50 180,50 180,20" fill="none" stroke="black" />
  <text>
    <textPath href="#myPath">Texto a lo largo de una ruta</textPath>
  </text>
</svg>

El texto seguirá la forma de la ruta, creando efectos visuales interesantes. Puedes controlar la posición del texto a lo largo de la ruta usando el atributo startOffset, que acepta un valor de longitud o porcentaje.

Agregar texto a tus gráficos SVG abre muchas posibilidades para crear visualizaciones, gráficos o diagramas informativos y atractivos. Con las diversas opciones de formato y estilo disponibles, puedes personalizar el texto para que se ajuste a tus necesidades de diseño.

Transformando y animando SVG

SVG permite transformar y animar elementos para crear gráficos atractivos e interactivos. Puedes aplicar transformaciones como traslación, rotación y escalado a los elementos, animarlos usando SMIL (Lenguaje de Integración Multimedia Sincronizada), o hacerlos interactivos con JavaScript.

Para transformar un elemento SVG, usa el atributo transform. El atributo acepta varias funciones de transformación:

Función Descripción
translate(x, y) Mueve el elemento horizontalmente x unidades y verticalmente y unidades.
rotate(angle) Rota el elemento el ángulo especificado (en grados) alrededor de su origen.
scale(x, y) Escala el elemento horizontalmente por x y verticalmente por y. Si solo se proporciona un valor, escala uniformemente.

Puedes combinar múltiples transformaciones listándolas separadas por espacios dentro del atributo transform:

Consejo: Combinando múltiples transformaciones

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <rect x="50" y="50" width="100" height="100" fill="blue" transform="translate(25, 25) rotate(45) scale(0.5)" />
</svg>

SVG también permite animar elementos usando SMIL. Para crear una animación, usa el elemento <animate> dentro del elemento que quieres animar. Especifica el atributo a animar usando el atributo attributeName, y establece los valores inicial y final con los atributos from y to. Puedes controlar la duración y el tiempo de la animación con los atributos dur y begin:

Consejo: Animando el ancho usando SMIL

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <rect x="50" y="50" width="100" height="100" fill="blue">
    <animate attributeName="width" from="100" to="150" dur="2s" begin="0s" repeatCount="indefinite" />
  </rect>
</svg>

Este ejemplo anima el ancho del rectángulo de 100 a 150 durante 2 segundos, repitiéndose indefinidamente.

Puedes animar varios atributos como x, y, width, height, fill, opacity, y más. SMIL también proporciona otros elementos de animación como <animateTransform> para animar transformaciones y <animateMotion> para animar un elemento a lo largo de una trayectoria.

Para hacer que los elementos SVG sean interactivos, puedes usar JavaScript para escuchar eventos y manipular los elementos. Los elementos SVG admiten eventos comunes como click, mouseover, mouseout, y más. Puedes adjuntar escuchadores de eventos a los elementos usando JavaScript y modificar sus atributos o estilos basándote en las interacciones del usuario:

Consejo: SVG interactivo usando JavaScript

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <rect id="myRect" x="50" y="50" width="100" height="100" fill="blue" />
  <script>
    const rect = document.getElementById('myRect');
    rect.addEventListener('click', function() {
      this.setAttribute('fill', 'red');
    });
  </script>
</svg>

También puedes usar bibliotecas de JavaScript como D3.js o Snap.svg para simplificar el trabajo con SVG y crear animaciones e interacciones complejas.

Al usar transformaciones, animaciones e interactividad, puedes dar vida a tus gráficos SVG y crear experiencias de usuario atractivas. Experimenta con estas técnicas para añadir movimiento, capacidad de respuesta e interés visual a tus proyectos basados en SVG.

Filtros y efectos SVG

SVG ofrece un conjunto de filtros y efectos que permiten agregar cambios visuales a tus gráficos. Con los filtros, puedes crear efectos de desenfoque, sombra paralela e iluminación, mientras que el enmascaramiento y el recorte te ayudan a controlar la visibilidad de los elementos. SVG también admite modos de fusión para crear combinaciones visuales.

Un efecto de filtro es el desenfoque gaussiano, que suaviza los bordes de un elemento. Para aplicar un efecto de desenfoque, utiliza el elemento <filter> con una primitiva <feGaussianBlur>. Establece el atributo stdDeviation para controlar la cantidad de desenfoque:

Consejo: Efecto de desenfoque gaussiano

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <defs>
    <filter id="blurFilter">
      <feGaussianBlur stdDeviation="5" />
    </filter>
  </defs>
  <rect x="50" y="50" width="100" height="100" fill="blue" filter="url(#blurFilter)" />
</svg>

Otro efecto es la sombra paralela, que agrega una sombra detrás de un elemento. Usa la primitiva de filtro <feDropShadow> para crear una sombra paralela. Especifica los atributos dx y dy para el desplazamiento de la sombra, stdDeviation para la cantidad de desenfoque y flood-color para el color de la sombra:

Consejo: Efecto de sombra paralela

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <defs>
    <filter id="dropShadowFilter">
      <feDropShadow dx="4" dy="4" stdDeviation="4" flood-color="black" />
    </filter>
  </defs>
  <rect x="50" y="50" width="100" height="100" fill="blue" filter="url(#dropShadowFilter)" />
</svg>

SVG también admite efectos de iluminación, que pueden agregar profundidad y realismo a tus gráficos. Utiliza las primitivas de filtro <feDiffuseLighting> o <feSpecularLighting> para crear efectos de iluminación. Estas primitivas requieren una fuente de luz, como <fePointLight> o <feDistantLight>, y un atributo lighting-color para especificar el color de la luz:

Consejo: Efectos de iluminación

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <defs>
    <filter id="lightingFilter">
      <feDiffuseLighting in="SourceGraphic" lighting-color="white">
        <fePointLight x="100" y="100" z="50" />
      </feDiffuseLighting>
    </filter>
  </defs>
  <rect x="50" y="50" width="100" height="100" fill="blue" filter="url(#lightingFilter)" />
</svg>

El enmascaramiento y el recorte son técnicas para controlar la visibilidad de los elementos. Una máscara es un canal alfa que determina la opacidad de un elemento, mientras que un trazado de recorte define una región fuera de la cual se cortan los elementos. Para crear una máscara, utiliza el elemento <mask> y define el contenido de la máscara usando otros elementos SVG. Haz referencia a la máscara usando el atributo mask:

Consejo: Efecto de enmascaramiento

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <defs>
    <mask id="myMask">
      <rect x="0" y="0" width="200" height="200" fill="white" />
      <circle cx="100" cy="100" r="50" fill="black" />
    </mask>
  </defs>
  <rect x="50" y="50" width="100" height="100" fill="blue" mask="url(#myMask)" />
</svg>

Para el recorte, usa el elemento <clipPath> para definir la región de recorte y haz referencia a ella usando el atributo clip-path:

Consejo: Efecto de recorte

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <defs>
    <clipPath id="myClip">
      <circle cx="100" cy="100" r="50" />
    </clipPath>
  </defs>
  <rect x="50" y="50" width="100" height="100" fill="blue" clip-path="url(#myClip)" />
</svg>

SVG admite modos de fusión, que determinan cómo se combinan los colores de los elementos superpuestos. Utiliza el atributo mix-blend-mode para establecer el modo de fusión de un elemento. Algunos modos de fusión comunes incluyen multiply, screen, overlay y darken:

Consejo: Modos de fusión

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
  <rect x="50" y="50" width="100" height="100" fill="blue" />
  <circle cx="100" cy="100" r="50" fill="red" mix-blend-mode="multiply" />
</svg>

Al usar filtros, efectos, enmascaramiento, recorte y modos de fusión, puedes agregar riqueza visual y profundidad a tus gráficos SVG. Experimenta con estas técnicas para crear diseños que capten la atención de tu audiencia.

Incrustación de SVG en HTML

Puedes incrustar gráficos SVG en tus documentos HTML de varias maneras, cada una con sus propias ventajas y casos de uso. Los tres métodos principales son usar la etiqueta <img>, SVG en línea y SVG como imagen de fondo.

Una de las formas más sencillas de incrustar una imagen SVG es usando la etiqueta <img>. Puedes hacer referencia a un archivo SVG externo en el atributo src, al igual que lo harías con otros formatos de imagen como JPEG o PNG:

Consejo: Uso de la etiqueta <img>

<img src="image.svg" alt="Imagen SVG" width="200" height="200">

Usar la etiqueta <img> es bueno cuando quieres mantener tu código SVG separado de tu HTML y tratar el SVG como un archivo de imagen normal. Sin embargo, este método no te permite aplicar estilos o programar el SVG desde tu HTML.

Si deseas más control sobre tu SVG y la capacidad de aplicar estilos y programarlo, puedes usar SVG en línea. Esto significa colocar el código SVG directamente en tu documento HTML:

Consejo: Uso de SVG en línea

<body>
  <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 200">
    <rect x="50" y="50" width="100" height="100" fill="blue" />
    <circle cx="100" cy="100" r="50" fill="red" />
  </svg>
</body>

El SVG en línea te permite usar CSS para aplicar estilos a los elementos SVG y JavaScript para interactuar con ellos, al igual que lo harías con otros elementos HTML. Este método es bueno cuando quieres crear gráficos SVG dinámicos e interactivos que estén estrechamente integrados con tu página web.

También puedes usar SVG como imagen de fondo en CSS. Haz referencia al archivo SVG en la propiedad background-image o en la propiedad abreviada background:

Consejo: Uso de SVG como imagen de fondo en CSS

<div class="background"></div>

<style>
.background {
  width: 200px;
  height: 200px;
  background-image: url('image.svg');
  background-size: cover;
}
</style>

Usar SVG como imagen de fondo es útil cuando quieres añadir gráficos decorativos a tu página web sin añadirlos a tu marcado HTML. Puedes aplicar propiedades CSS como background-size, background-position y background-repeat para controlar cómo se muestra el fondo SVG.

Al decidir qué método usar, piensa en tus necesidades específicas:

Método Caso de uso
Etiqueta <img> Mostrar una imagen SVG sin aplicarle estilos ni programarla
SVG en línea Crear gráficos SVG dinámicos e interactivos que sean parte del contenido de tu página
SVG como imagen de fondo Añadir gráficos decorativos a tu página web sin añadirlos a tu marcado HTML

Accesibilidad SVG

Al crear gráficos SVG, es importante considerar la accesibilidad para asegurar que tu contenido pueda ser entendido y navegado por todos los usuarios, incluyendo aquellos con discapacidades. SVG ofrece varias características que pueden ayudar a mejorar la accesibilidad, como los elementos <title> y <desc>, roles y atributos ARIA, y otras buenas prácticas.

El elemento <title> te permite proporcionar un título breve y descriptivo para un elemento SVG. Este título no se muestra visualmente, pero puede ser leído por lectores de pantalla para ayudar a los usuarios a entender el propósito del elemento. Coloca el elemento <title> como el primer hijo del elemento que describe:

Consejo: Uso del elemento <title>

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40">
    <title>Círculo</title>
  </circle>
</svg>

El elemento <desc> te permite proporcionar una descripción más detallada de un elemento SVG. Al igual que el <title>, la descripción no se renderiza visualmente pero puede ser accedida por lectores de pantalla y otras tecnologías de asistencia. Coloca el elemento <desc> después del elemento <title>:

Consejo: Uso del elemento

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40">
    <title>Círculo</title>
    <desc>Un círculo azul con un radio de 40 unidades, centrado en (50, 50)</desc>
  </circle>
</svg>

Los roles y atributos ARIA (Aplicaciones de Internet Enriquecidas Accesibles) también pueden usarse para mejorar la accesibilidad de los elementos SVG. Los roles ARIA definen el propósito o tipo de un elemento, mientras que los atributos ARIA proporcionan información adicional sobre el estado o las propiedades del elemento.

Consejo: Uso de roles y atributos ARIA

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 100 100">
  <circle cx="50" cy="50" r="40" role="button" tabindex="0">
    <title>Haz clic aquí</title>
  </circle>
</svg>

Otras buenas prácticas de accesibilidad para SVG incluyen:

Buena práctica Descripción
Proporcionar texto alternativo Usa los elementos <title> y <desc> o los atributos aria-label y aria-labelledby para proporcionar texto alternativo para imágenes SVG.
Asegurar suficiente contraste de color Asegura un contraste de color suficiente entre los elementos de primer plano y fondo para hacer los gráficos legibles para usuarios con discapacidades visuales.
Usar elementos semánticos Usa elementos semánticos y nombres de ID y clases significativos para ayudar a transmitir la estructura y propósito del contenido SVG.
Probar con tecnologías de asistencia Prueba tus gráficos SVG con lectores de pantalla y otras tecnologías de asistencia para asegurar que sean accesibles y proporcionen una buena experiencia de usuario.

Optimización y rendimiento de SVG

Al usar gráficos SVG en su sitio web, es importante optimizarlos para mejorar el rendimiento y asegurar que sus páginas carguen rápidamente. Algunas formas de mejorar el rendimiento de SVG son minimizar el tamaño del archivo, usar sprites SVG y seguir otras consideraciones de rendimiento.

Una forma clave de optimizar SVG es reducir el tamaño del archivo. Los archivos SVG pueden contener muchos datos innecesarios, como metadatos, comentarios y espacios en blanco extra, que pueden aumentar el tamaño del archivo. Para minimizar el tamaño del archivo, puede:

Técnica de optimización Descripción
Eliminar elementos, atributos y comentarios innecesarios Elimine cualquier elemento, atributo o comentario que no sea necesario para el funcionamiento correcto del SVG.
Simplificar trazados y formas Reduzca el número de puntos y combine elementos similares para crear trazados y formas más simples.
Usar nombres cortos y significativos para IDs y clases Elija nombres concisos y descriptivos para IDs y clases para mantener el código SVG limpio y manejable.
Comprimir el archivo SVG Use GZIP u otro método de compresión para reducir el tamaño del archivo SVG.

También existen herramientas como SVGO (SVG Optimizer) que pueden automatizar el proceso de optimización de archivos SVG.

Otra técnica para mejorar el rendimiento de SVG es usar sprites SVG. Un sprite es un único archivo que contiene múltiples elementos SVG, cada uno identificado por un ID único. En lugar de cargar muchos archivos SVG individuales, puede cargar el sprite una vez y mostrar diferentes partes según sea necesario, lo que reduce el número de peticiones HTTP y acelera la carga de la página.

Para crear un sprite SVG, combine sus archivos SVG individuales en un solo archivo y asigne a cada elemento SVG un ID único. Luego, haga referencia al sprite en su HTML usando el elemento <use> y el ID del SVG que desea mostrar:

Consejo: Ejemplo de uso de sprite SVG

<svg>
  <use xlink:href="sprite.svg#icon-1"></use>
</svg>

También hay algunas consideraciones generales de rendimiento a tener en cuenta al usar SVG:

  • Use SVG solo para gráficos que necesiten ser escalables o interactivos. Para imágenes simples, los formatos de mapa de bits como JPEG o PNG pueden ser más adecuados.
  • Tenga en cuenta el número y la complejidad de los elementos SVG en una página. Los gráficos muy complejos con muchos elementos pueden ralentizar el renderizado.
  • Evite usar filtros y efectos SVG en exceso, ya que pueden consumir muchos recursos, especialmente en dispositivos móviles.
  • Almacene en caché los archivos SVG para reducir los tiempos de carga para visitantes recurrentes.
  • Sirva los archivos SVG con compresión gzip para reducir su tamaño de transferencia.