SVG CSS
SVG CSS
rect
Para la creación de rectángulos y cuadrados tenemos el
atributo rect, que tiene las siguientes propiedades (las
que no se utilicen se pueden omitir):
CSS Avanzado | Imágenes SGV
rect
Para la creación de rectángulos y cuadrados tenemos el
atributo rect, que tiene las siguientes propiedades (las
que no se utilicen se pueden omitir):
CSS Avanzado | Imágenes SGV
rect
<rect x="0" y="0" rx="12" ry="12" width="60"
heigh="60" fill="gold" stroke="green" stroke-
width="1" opacity="0.8"/>
En este caso se trataría de un cuadrado de unas dimensiones de
60 píxeles de ancho por 60 píxeles de alto, que empieza a dibujar
en las coordenadas 0/0 (tomando como inicio la esquina
superior izquierda donde está ubicado el svg), con unos ángulos
suaves y redondeados (12). Con un color oro (gold) de relleno,
un grosor de 1 píxel de color verde y todo con una transparencia
del 80%.
CSS Avanzado | Imágenes SGV
circle
circle
circle
<circle cx="100" cy="100" r="45" fill="olive"
stroke="black" stroke-width="1" opacity="0.9"/>
ellipse
ellipse
ellipse
<ellipse cx="100" cy="100" rx="50" ry="25"
fill="purple" stroke="black" stroke-width="1"/>
line
line
line
<line x1="0" y1="0" x2="260" y2="40"
stroke="fuchsia" stroke-width="4" stroke-
dasharray="18,7,9,20"/>
Línea que va desde la posición 0,0 (esquina superior izquierda definida por el svg)
hasta 260 píxeles a la derecha y 40 hacia abajo (osea, será una línea diagonal) de
un color fucsia de 4 píxeles de grosor y con un tipo de línea discontinua.
Los 4 valores de stroke-dasharray (18,7, 9,29) indican (por parejas) la continuidad
de la línea. Así, los dos primeros valores (18,7) indican, el primero, un tramo visible
de una longitud de 18 píxeles, seguido de un tramo de linea no visible de 7 píxeles.
Seguidamente, los dos valores siguientes (9,20), indican un tramo de 9 píxeles de
línea visible, seguido de 20 píxeles de tramo no visible, repitiendo dichos valores
hasta el final de la longitud de la línea.
CSS Avanzado | Imágenes SGV
polyline
polyline
<polyline points="0,90, 10,90, 10,40, 40,10, 50,20,
50,10, 60,10, 60,30, 70,40, 70,90, 80,90"
fill="none" stroke="black" stroke-width="3"/>
Con estas líneas se dibuja el contorno de una casa. Las líneas se describen
por parejas, siendo los valores del primer punto (0,90, coordenada situada
en la esquina inferior izquierda del espacio definido por el svg), que
describe una línea que se extiende hasta las coordenadas descritas en el
siguiente par de valores (10,90). Es decir, la primera línea se extiende desde
la coordenada (x=0/y=90) hasta la coordenada (x=10/y=90).
Así, estos primeros 4 valores dibujan una línea horizontal de 10 píxeles.
Para todo este conjunto de líneas se utiliza un color negro de 3 píxeles de
grosor sin ningún tipo de relleno.
CSS Avanzado | Imágenes SGV
polygon
polygon
polygon
<polygon points="50,0, 82,100, 0,37, 100,37,
20,100, 50,0" fill="gold" stroke="black" stroke-
width="3"/>
polygon
Con estos dos polígonos se representan dos estrellas basadas en una misma
forma. El primer polígono compuesto por 5 líneas y el segundo, algo más
elaborado, compuesto por 10 líneas.
Las líneas se describen y dibujan siempre por parejas. Por ejemplo, en la primera
estrella, los valores del primer punto (50,0: situado en la esquina superior central)
describe una línea que va hasta las coordenadas descritas en el siguiente par de
valores (82,100). Así, estos primeros 4 valores dibujan una línea en diagonal que
va desde el punto superior de la estrella hasta su extremo inferior derecho. Ambos
polígonos tienen definido un relleno (fill) y una línea con color (negro) y grosor (3),
por lo que podemos ver que, aunque comparten la misma forma, ambas estrellas
son bastante diferentes en cuanto a su construcción.
text
text
text
<text x="30" y="35" rotate="17 0 -9 11 10 -3"
fill="red" stroke="white" stroke-width="2">
Javier
</text>
Con este cógido se crea un imagen vectorial de un texto en el que se han definido una
serie de parámetros comunes para todo el texto (tipo de letra, tamaño, colores y
posición), al mismo tiempo que se definido un grado de rotación diferente para cada una
de las letras que forman el texto (siendo 17º para la letra "J", 0 grados para la "a" o bien
-9º, que realiza una rotación de la letra "v" hacia la izquierda.
Aunque lo más sorprendente de ésto es que este texto (vectorial) sigue siendo texto y que
por lo tanto se puede seleccionar como si de texto plano se tratase ... inténtalo que es
gratis ...
CSS Avanzado | Imágenes SGV
Un truco
¿Qué pasaría si nos pasamos un par de horitas definiendo
coordenada a coordenada un dibujo complejo y cuando
acabamos nos damos cuenta de que queremos MOVER todo el
dibujo unos píxeles a la derecha o arriba para que cuadre y
encaje en el html correctamente?
Un truco
<text x="30" y="35" rotate="17 0 -9 11 10 -3"
fill="red" stroke="white" stroke-width="2"
transform="translate(20,5)">
Javier
</text>
Con este 'transform' final moveríamos todo el código anterior 20
píxeles a la derecha y 5 píxeles hacia abajo (pudiendo utilizar
números negativos si queremos moverlo hacia la izquierda o
hacia arriba).