Background by Miguel Angel Avila – @geeklangel
Las siglas SVG significan Scalable Vector Graphics, es decir, gráficos vectoriales escalables. Al final, no es más que otro tipo de imagen (como jgp, png, etc) pero con numerosas ventajas de cara a la edición y visualización en un sitio web:
Esto es el código de un SVG inline:
Que se traduce en esta imagen:
Sabemos que uno de los principales inconvenientes a la hora de cargar una web son las imágenes, y más si cabe, cuando están mal optimizadas. Si disponemos de los gráficos a insertar en formato «vector», podemos exportarlo a SVG e integrarlos directamente en nuestra web sin mayor complicación.
Sin embargo, a día de hoy, la biblioteca de medios de WordPress no permite subir directamente un SVG. Esto se puede arreglar con algún plugin o añadiendo este bloque de código al functions.php
de tu child theme:
// añadir soporte para svg function add_file_types_to_uploads($file_types){ $new_filetypes = array(); $new_filetypes['svg'] = 'image/svg+xml'; $file_types = array_merge($file_types, $new_filetypes ); return $file_types; } add_action('upload_mimes', 'add_file_types_to_uploads');
Existen varias formas de agregar un gráfico SVG. En esta web podéis ver las diferentes posibilidades de insertarlo con ejemplos. Yo me voy a centrar en las que me parecen más relevantes:
img
): es la manera más sencilla de colocarlo si no queremos hacer modificaciones de forma, contenido, etc. Podemos subir directamente el archivo .svg a través de la biblioteca de medios. Comentar que, al contrario que con otros tipos de imagen, la biblioteca no nos ofrece una previsualización de la miniatura de los SVG.object
): de esta forma tendremos un control total para manipular el gráfico. Se colocaría de la siguiente forma:
Para definir una hoja de estilos externa deberemos hacerlo dentro del propio código del .svg antes de subirlo, añadiendo lo siguiente, delante del tag :
También podemos editar los estilos dentro del propio archivo .svg pero creo que esta opción nos da mucha menos versatilidad a la hora de hacer modificaciones.
NOTA: existe la posibilidad de insertar directamente en nuestro código el svg inline pero no aconsejo hacer esto ya que el mantenimiento se puede dificultar bastante sobre todo si tenemos varios.
Estos iconos de mi página de servicio Puesta en marcha están colocados como SVG. Los tengo como imagen (img
) porque no está pensado modificarlo a futuro pero he hecho una versión inline aquí para demostrar las capacidades de modificación del SVG.
Modificando relleno y trazo
En este caso vemos como controlar el relleno de un objeto (fill
) y el trazo de la línea (stroke
). Simplemente, añadimos las propiedades en el apartado <style>
dentro del inline svg.
svg#icono2 .cls-1 { fill: yellow; stroke: brown; stroke-dasharray: 1,1; stroke-width: .5; } svg#icono2 .cls-2 { fill: green; }
Animaciones
Disponemos de varios tipos de animaciones para aplicar a los SVG: <animate>
,
<animate>
, <animateColor>
, <animateMotion>
, <animateTransform>
.
En el ejemplo, utilizamos <animateTransform>
para dar movimiento a objeto:
<animateTransform attributeName="transform" type="rotate" from="0 18 18" to="10 18 18" begin="0s" dur="10s" repeatCount="indefinite" />
Y Con <animate>
podemos variar colores, por ejemplo, pasando gradualmente de uno a otro:
<animate dur="5s" values="blue; aqua; red" keyTimes="0; 0.5; 1" attributeName="fill" repeatCount="indefinite" />