Documente Academic
Documente Profesional
Documente Cultură
Qué es SVG
SVG (Scalable Vector Grafics) significa Vectores Gráficos Escalables. Dicho así tal vez no
lo entendamos, pero lo entendremos mejor si decimos que es una aplicación para
hacer dibujos, banners, gráficos, etc. tanto estáticos como animados.
Con SGV podemos hacer las mismas cosas que con canvas, sin embargo su forma de
trabajar es diferente.
Mientras que con canvas los dibujos se crean mediante píxeles (mapa de bits). con SVG
se crean mediante gráficos vectoriales. Esto significa que el dibujo se adapta al
tamaño, de forma que al ampliarlo o reducirlo en la pantalla se muestra siempre
uniforme y no muestra los contornos de los píxeles para ampliaciones muy grandes.
Esto en pantalla tal vez no tenga mucha inportancia, pero si queremos imprimirlo en
un tamaño grande los dibujos hechos con SVG muestran un mejor acabado.
Características de SVG
SVG es fácil de usar, ya que se basa en el lenguaje XML, es decir el mismo lenguaje de
etiquetas que usa HTML. Esto significa que no tenemos que usar (en principio)
javascript ni otro lenguaje diferente del HTML para incorporar figuras SVG en la página,
ya que el XML es el mismo lenguaje de base que utilizan tanto HTML como SVG.
Podemos por tanto crear las figuras y dibujos con SVG mediante etiquetas que
incorporamos al lenguaje HTML.
Incluir elementos SVG en la página se puede hacer desde el mismo código HTML. SVG
dispone de una serie de etiquetas y atributos para introducir los elementos. Vemos
aquí a la derecha un círculo hecho mediante SVG. el código que hemos puesto para
poder verlo es el siguiente:
Al estar el código SVG formado por los mismos elementos que el HTML podemos
también aplicarle los lenguajes CSS y javascript.
Con CSS podemos indicar el estilo de los distintos elementos. Para ello disponemos
además de las propiedades habituales de CSS de algunas propiedades especiales para
estos elementos que veremos más adelante.
Con javascript podemos dar movimiento a los elementos creados con SVG y realizar
otra serie de efectos (aparición, desaparición, agrandar, etc.). También podemos
realizar estos efectos mediante CSS3. Sin embargo también podemos crear
animaciones mediante el código SVG, sin necesidad de utilizar javascript ni CSS3,
Veremos todo esto más adelante en este manual.
Debemos indicar mediante los atributos witdh y height la anchura y la altura del
elemento contenedor, o podemos indicarlo también mediante codigo CSS. En todo
caso hay que dar siempre una altura y anchura este elemento.
Todo ello lo guardaremos en un archivo aparte con la extension .svg, por ejemplo
circulo.svg.
Para incluir después este archivo en la página podemos hacerlo de varias maneras:
SVG es compatible con todos los navegadores en sus versiones modernas, si bien en
Internet explorer sólo es compatible con las versiones 9 en adelante. Para versiones
anteriores es necesario usar un plugin. Podemos usar "Adobe SVG Viewer, el cual nos
lo podemos descargar desde la página de Adobe:
http://www.adobe.com/devnet/svg/adobe-svg-viewer-download-area.html
hemos incluido un texto dentro de la etiqueta SVG. Este texto sólo se verá si el
navegador no es compatible, de esta manera advertimos al usuario de que la página
no se verá de forma completa.
Para saber más
La etiqueta <svg>
La etiqueta <svg> engloba la imagen SVG e incluye las formas que forman la imagen.
Una imagen SVG puede incluirse en una página web directamente o mediante la
etiqueta <img />, como se comenta en la lección Imágenes.
El plano SVG
Los dibujos SVG se definen en un plano infinito en el que el eje Y está orientado hacia
abajo, como muestra el dibujo siguiente en el que se muestran los ejes de coordenadas,
cuatro puntos en rojo y sus coordenadas.
Atributos de <svg>
Los atributos version y xmlns de <svg>
El atributo viewBox establece la porción del plano SVG que muestra la imagen. Este
atributo se establece con cuatro valores:
primer valor: abcisa (X) de la esquina superior izquierda de la porción del plano que
muestra la imagen
segundo valor: ordenada (Y) de la esquina superior izquierda de la porción del plano
que muestra la imagen
tercer valor: ancho de la porción del plano que muestra la imagen
cuarto valor: alto de la porción del plano que muestra la imagen
El ejemplo siguiente muestra con una línea roja a trazos la porción del plano SVG que
se mostraría con unos valores determinados en el atributo viewbox.
Los ejemplos siguientes muestran tres dibujos con los mismos elementos SVG: los ejes
de coordenadas y un círculo de radio 100 centrado en el origen, pero con diferentes
atributos viewbox
El atributo viewBox establece la porción del plano SVG que se muestra en la imagen ,
mientras que los atributos width y height establecen el ancho y el alto de la imagen en la
página web.
Así, una misma imagen en el plano SVG se puede ver en la página web más o menos
grande, como muestran los ejemplos siguientes:
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="https://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="https://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="100"
height="100"
id="svg2">
<defs
id="defs4" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-100.10292,-228.90234)"
id="layer1">
<polygon
points="124,145 80,114 36,145 52,93 10,61 63,61 80,10 97,60
151,61 108,93 "
transform="matrix(0.60688557,0,0,0.60646101,101.24863,231.90161)"
id="polygon4069"
style="fill:#ffff33;stroke:#ff0000;stroke-width:7.30069113" />
</g>
</svg>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="https://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="https://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
version="1.1"
width="100"
height="100"
id="svg2">
<defs
id="defs4" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-100.10292,-228.90234)"
id="layer1">
<polygon
points="124,145 80,114 36,145 52,93 10,61 63,61 80,10 97,60
151,61 108,93 "
transform="matrix(0.60688557,0,0,0.60646101,101.24863,231.90161)"
id="polygon4069"
style="fill:#ffff33;stroke:#ff0000;stroke-width:7.30069113" />
</g>
</svg>
<svg
width="100"
height="100"
id="svg2">
<g
transform="translate(-100.10292,-228.90234)"
id="layer1">
<polygon
points="124,145 80,114 36,145 52,93 10,61 63,61 80,10 97,60
151,61 108,93 "
transform="matrix(0.60688557,0,0,0.60646101,101.24863,231.90161)"
id="polygon4069"
style="fill:#ffff33;stroke:#ff0000;stroke-width:7.30069113" />
</g>
</svg>
Ese código se puede simplificar todavía más, hasta obtener el código que se ha utilizado
en esta lección:
<svg xmlns="http://www.w3.org/2000/svg"
width="100" height="100">
<path fill="#ff3" stroke="red" stroke-width="7.3"
d="M124 145l-44-31-44 31 16-52-42-32h53l17-51 17 50 54 1-43 32z"
transform="matrix(.6069 0 0 .60646 1.146 3)"/>
</svg>