CSS3 Ya
El objetivo de este tutorial es conocer y practicar con las nuevas propiedades que nos presenta el
css3. Disponemos de un concepto terico, un ejercicio resuelto y la vista en ejecucin de la pgina
con su hoja de estilo.
Si no conoce nada de CSS puede visitar primero el tutorial de : CSS Ya.
1 - Bordes redondeados (border-radius)
2 - Bordes redondeados de alguno de los vrtices (border-top-left-radius etc.)
3 - Sombras (box-shadow)
4 - Sombras mltiples (box-shadow)
5 - Sombras interiores (box-shadow)
6 - Sombras con transparencias (box-shadow)
7 - Sombras de texto (text-shadow)
8 - Transformaciones 2D: rotacin (transform:rotate)
9 - Transformaciones 2D: punto de origen (transform-origin)
10 - Transformaciones 2D: escalado (transform:scale)
11 - Transformaciones 2D: translacin (transform:translate)
12 - Transformaciones 2D: torcer (transform:skew)
13 - Transformaciones 2D: mltiples transformaciones en forma simultanea
14 - Opacidad (opacity)
15 - Opacidad (color)
16 - Mltiples columnas (column-count)
17 - Mltiples columnas dinmicas (column-width)
18 - Mltiples columnas y su separacin (column-gap)
19 - Mltiples columnas y lnea separadora (column-rule)
20 - Importar una fuente no disponible en el navegador (@font-face)
21 - Imgenes de fondo (background-image)
22 - Imgenes de fondo en diferentes posiciones (background-position)
23 - Imgenes de fondo (background-size)
24 - Imgenes de fondo (background-origin)
25 - Transiciones de una propiedad (transition)
26 - Transiciones de mltiples propiedades (transition)
27 - Transiciones (funciones de transicin)
28 - Transiciones (tiempo de demora en iniciar la transicin)
29 - Transiciones (otra sintaxis para hacer lo mismo)
30 - Animaciones (sintaxis bsica)
31 - Animaciones (animation-iteration-count y animation-direction)
32 - Animaciones (animation-timing-function y animation-delay)
33 - Animaciones (animation-play-state)
34 - Animaciones (definicin de ms de 2 keyframes)
Concepto
Ejemplo
Vista Previa
Bordes redondeados (border-radius)
La propiedad border-radius permite crear esquinas redondeadas. Especificamos en pxeles u otra medida
el radio de redondeo de la o las esquinas.
Podemos indicar un nico valor que se asignar a los cuatro vrtices:
#recuadro1{
border-radius: 20px;
background-color:#ddd;
width:200px;
padding:10px;
}
Tambin podemos indicar el redondeo de cada vrtice en forma independiente (el orden de los valores son
la esquina superior izquierda, la esquina superior derecha, la esquina inferior derecha y por ltimo la
esquina inferior izquierda):
#recuadro2{
border-radius: 20px 40px 60px 80px;
background-color:#aa0;
width:200px;
padding:10px;
margin-top:10px;
Retornar
Concepto
Ejemplo
Vista Previa
Bordes redondeados de alguno de los vrtices (border-topleft-radius etc.)
Si tenemos que redondear solo alguno de los cuatro vrtices podemos utilizar alguna de las siguientes
propiedades:
border-top-left-radius
border-top-right-radius
border-bottom-right-radius
border-bottom-left-radius
Con esta definicin de la propiedades border-top-left-radius y border-bottom-right-radius deben aparecer
redondeados los vrtices superior izquierdo e inferior derecho:
#recuadro1{
border-top-left-radius: 20px;
border-bottom-right-radius: 20px;
background-color:#ddd;
width:200px;
padding:10px;
}
El segundo ejemplo muestra redondeado solo el vrtice superior derecho:
Retornar
Concepto
Ejemplo
Vista Previa
Sombras (box-shadow)
La propiedad box-shadow permite definir una sombra a un objeto de la pgina. Debemos definir tres
valores y un color, por ejemplo:
#recuadro1{
box-shadow: 30px 10px 20px #aaa;
border-radius: 20px;
background-color:#ddd;
width:200px;
padding:10px;
}
La propiedad tiene 3 valores y un color, los valores son los siguientes:
- El desplazamiento horizontal de la sombra, positivo significa que la sombra se encuentra a la derecha
del objeto, un desplazamiento negativo pondr la sombra a la izquierda.
- El desplazamiento vertical, uno negativo la sombra ser en la parte superior del objeto, uno positivo la
sombra estar por debajo.
El tercer parmetro es el radio de desenfoque, si se pone a 0 la sombra ser fuerte y con color liso, ms
Retornar
Concepto
Ejemplo
Vista Previa
Sombras mltiples (box-shadow)
Con la propiedad box-shadow podemos aplicar mltiples sombras a un objeto. Para esto debemos aplicar
la siguiente sintaxis:
box-shadow: [desplazamiento en x] [desplazamiento en y] [desenfoque] [color] ,
[desplazamiento en x] [desplazamiento en y] [desenfoque] [color] etc.
Por ejemplo si queremos que aparezca una sombra de color rojo en la parte superior izquierda y una
sombra verde en la parte inferior derecha podemos aplicar lo siguiente:
#recuadro1{
box-shadow: -30px -30px 20px #f00,
30px 30px 20px #0f0;
border-radius: 20px;
background-color:#ddd;
width:200px;
padding:10px;
}
Retornar
Concepto
Ejemplo
Vista Previa
Sombras interiores (box-shadow)
Otra posibilidad de la propiedad box-shadow es la de implementar la sombra interior al objeto, para esto
debemos anteceder a los valores la palabra inset. Por ejemplo si queremos un recuadro con sombra interior
de color rojo y sombra exterior de color amarilla podemos aplicar los siguientes valores:
#recuadro1{
box-shadow: inset 0px 0px 40px #f00,
0px 0px 40px #ff0;
border-radius: 20px;
background-color:#ddd;
width:200px;
padding:10px;
}
Retornar
Concepto
Ejemplo
Vista Previa
Sombras con transparencias (box-shadow)
Otra posibilidad que podemos aplicar a la propiedad box-shadow es definir un valor de transparencia de
la sombra. Para esto debemos utilizar la funcin rgba, ejemplo:
box-shadow: 30px 30px 30px rgba(255,0,0,0.3);
Mediante la funcin rgba indicamos el color de la sombra con los primeros tres parmetros (en este
ejemplo 255 de rojo, 0 de verde y 0 de azul), luego el cuarto parmetro es el ndice de transparencia
(donde 0 indica que es totalmente transparente la sombra y 1 es totalmente opaca, podemos utilizar
cualquier valor entre 1 y 0)
Para confeccionar un recuadro con sombra de color rojo con un ndice de transparencia del 50% luego
debemos especificarlo de la siguiente manera:
#recuadro1{
box-shadow: 30px 30px 30px rgba(255,0,0,0.5);
border-radius: 20px;
background-color:#ddd;
width:200px;
padding:10px;
}
Retornar
Concepto
Ejemplo
Vista Previa
Sombras de texto (text-shadow)
Es importante tener en cuenta que esta propiedad no la soporta el Internet Explorer 9.
La propiedad text-shadow nos permite definir una sombra a un texto, la sintaxis ms comn es:
Elemento {
text-shadow: desplazamientoX desplazamientoY radio-de-desenfoque color;
}
La propiedad tiene 4 valores que son los siguientes:
- El desplazamiento horizontal de la sombra, un desplazamiento negativo pondr la sombra a la izquierda.
- El desplazamiento vertical, un valor negativo dispone la sombra en la parte superior del texto, uno
positivo la sombra estar por debajo del texto.
- El tercer parmetro es el radio de desenfoque, si se pone a 0 la sombra ser fuerte y con color liso, ms
grande el nmero, ms borrosa ser.
- El ltimo parmetro es el color de la sombra.
Por ejemplo si queremos que un texto tenga una sombra en la parte inferior a derecha con un pequeo
desenfoque de color gris luego debemos implementar el siguiente cdigo:
#titulo1 {
text-shadow: 5px 5px 5px #aaa;
}
SI queremos que la sombra se disponga en la parte superior izquierda de cada letra luego debemos definir
los siguientes valores:
#titulo2 {
text-shadow: -5px -5px 5px #aaa;
}
Retornar
Concepto
Ejemplo
Vista Previa
Transformaciones 2D: rotacin (transform:rotate)
Las transformaciones todava no estn definidas como un estndar en todos los navegadores, por lo que
es necesario agregar el prefijo del navegador que la implementa:
Elemento {
-ms-transform: funcin de transformacin(valor(es));
/* Internet Explorer */
-webkit-transform: funcin de transformacin(valor(es)); /* WebKit */
-moz-transform: funcin de transformacin(valor(es));
/* Firefox */
-o-transform: funcin de transformacin(valor(es));
/* Opera */
}
Tengamos en cuenta que la propiedad de transformacin 2D definitiva ser:
Elemento {
transform: funcin de transformacin(valor(es));
}
La primer funcin de transformacin que veremos ser la de rotar un elemento HTML.
La funcin de rotacin se llama rotate y tiene un parmetro que indica la cantidad de grados a rotar. La
rotacin es en el sentido de las agujas del reloj. Podemos indicar un valor negativo para rotar en sentido
antihorario.
Para rotar un recuadro 45 grados en sentidos de las agujas de un reloj y que funcione en la mayora de los
navegadores deberemos implementar el siguiente cdigo:
#recuadro1{
-ms-transform: rotate(45deg);
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
border-radius: 20px;
background-color:#ddd;
width:200px;
padding:10px;
}
Tengamos en cuenta que se ejecuta la propiedad -ms-transform, -webkit-transform etc. segn el
navegador que est procesando la pgina, inclusive hemos agregado la propiedad transform:
Retornar
Concepto
Ejemplo
Vista Previa
Transformaciones 2D: punto de origen (transform-origin)
Como vimos en el punto anterior cuando rotamos un elemento HTML siempre hay un punto fijo (por
defecto es el punto central del recuadro)
Podemos variar dicho punto y ubicar por ejemplo en cualquiera de los cuatro vrtices del recuadro con la
siguiente sintaxis:
Elemento {
transform-origin: left top;
}
Elemento {
transform-origin: right top;
}
Elemento {
transform-origin: left bottom;
}
Elemento {
transform-origin: right bottom;
}
Por ejemplo si queremos dejar fijo el vrtice superior izquierdo y seguidamente rotar 10 grados en
sentido horario luego debemos codificar:
#recuadro1{
-ms-transform: rotate(10deg);
-webkit-transform: rotate(10deg);
-moz-transform: rotate(10deg);
-o-transform: rotate(10deg);
transform: rotate(10deg);
-ms-transform-origin: left top;
-webkit-transform-origin: left top;
-moz-transform-origin: left top;
Retornar
Concepto
Ejemplo
Vista Previa
Transformaciones 2D: escalado (transform:scale)
Otra funcin de transformacin 2D es el escalado, esta funcin permite agrandar o reducir el tamao del
elemento. La primer sintaxis que podemos utilizar es la siguiente:
Elemento {
transform: scale(valorx ,valory);
}
El primer parmetro indica la escala para x (con el valor 1 el elemento queda como est, con un valor
mayor crece y con un valor menor decrece), el segundo parmetro es para la escala en y.
Por ejemplo si queremos que sea del doble de ancho y la mitad de altura luego ser:
Elemento {
transform: scale(2 ,0.5);
}
Un recuadro escalado con 20% menos de ancho y 20% ms de alto (definiendo el punto de origen en el
vrtice superior izquierdo:
#recuadro1{
-ms-transform: scale(0.8 , 1.2);
-webkit-transform: scale(0.8 , 1.2);
-moz-transform: scale(0.8 , 1.2);
-o-transform: scale(0.8 , 1.2);
transform: scale(0.8 , 1.2);
-ms-transform-origin: left top;
-webkit-transform-origin: left top;
-moz-transform-origin: left top;
-o-transform-origin: left top;
transform-origin: left top;
border-radius: 20px;
background-color:#ddd;
width:200px;
padding:10px;
}
Retornar
Concepto
Ejemplo
Vista Previa
Transformaciones 2D: translacin (transform:translate)
La funcin translate permite desplazar un elemento HTML indicando una medida (en porcentaje, pxeles,
em, etc.) la sintaxis es:
Elemento {
transform: translate(valorx ,valory);
}
Por ejemplo si queremos trasladar 25 pxeles en "x" y 10 pxeles en "y" luego debemos codificar:
#recuadro1{
-ms-transform: translate(25px,10px);
-webkit-transform: translate(25px,10px);
-moz-transform: translate(25px,10px);
-o-transform: translate(25px,10px);
transform: translate(25px,10px);
border-radius: 20px;
background-color:#ddd;
width:200px;
padding:10px;
}
Si vemos el primer recuadro tiene aplicada la traslacin:
Retornar
Concepto
Ejemplo
Vista Previa
Transformaciones 2D: torcer (transform:skew)
La funcin skew permite torcer el elemento HTML en x e y, la sintaxis es la siguiente:
Elemento {
transform: skew(gradosx ,gradosy);
}
Por ejemplo si queremos torcer en x 15 grados un recuadro luego debemos codificar:
#recuadro1{
-ms-transform: skew(15deg,0deg);
-webkit-transform: skew(15deg,0deg);
-moz-transform: skew(15deg,0deg);
-o-transform: skew(15deg,0deg);
transform: skew(15deg,0deg);
border-radius: 20px;
background-color:#ddd;
width:200px;
padding:10px;
}
Si queremos torcer en y 15 grados un recuadro luego debemos codificar:
#recuadro2{
Retornar
Concepto
Ejemplo
Vista Previa
Transformaciones 2D: mltiples transformaciones en forma
simultanea
La sintaxis de css3 nos permite definir en la propiedad transform mltiples transformaciones en forma
simultanea (debemos dejar al menos un espacio en blanco entre cada llamada a una funcin de
transformacin):
Elemento {
transform: rotate(grados) scale(valorx ,valory) translate(valorx ,valory) skew(gradosx ,g
}
Por ejemplo apliquemos mltiples transformaciones a un recuadro:
#recuadro1{
-moz-transform: rotate(15deg) scale(0.9,0.6) translate(10px,10px) skew(5deg,0deg);
-ms-transform: rotate(15deg) scale(0.9,0.6) translate(10px,10px) skew(5deg,0deg);
-webkit-transform: rotate(15deg) scale(0.9,0.6) translate(10px,10px) skew(5deg,0deg);
-o-transform: rotate(15deg) scale(0.9,0.6) translate(10px,10px) skew(5deg,0deg);
transform: rotate(15deg) scale(0.9,0.6) translate(10px,10px) skew(5deg,0deg);
border-radius: 20px;
background-color:#ddd;
width:200px;
padding:10px;
}
Retornar
Concepto
Ejemplo
Vista Previa
Opacidad (opacity)
La opacidad es una caracterstica de los objetos de no dejar pasar la luz (mientras un objeto es ms opaco
significa que no deja pasar la luz) Un elemento HTML dispone de la propiedad opacity para definir cual
es su opacidad. La sintaxis es la siguiente:
Elemento {
opacity: valor;
}
El valor es un nmero comprendido entre 0 y 1. El 0 significa que es totalmente transparente (luego no se
ver nada en pantalla, pero el espacio ocupado por el elemento HTML queda reservado), el 1 significa
que es totalmente opaco (no deja pasar la luz)
Veamos tres recuadro con una imagen de fondo y un texto en su interior con diferentes niveles de
opacidad (tengamos en cuenta que cuando le asignamos una opacidad a un elemento HTML luego todos
los elementos contenidos en dicho elementos heredan dicha opacidad):
#recuadro1 {
background-image: url("foto1.jpg");
opacity:0.3;
color:#f00;
width:700px;
height:450px;
border-radius:15px;
font-size:30px;
}
Retornar
Concepto
Ejemplo
Vista Previa
Opacidad (color)
En CSS3 aparece una variante de la asignacin del color mediante la funcin rgba.
Elemento {
color: rgba(rojo,verde,azul,opacidad);
}
Para definir un color debemos indicar cuatro valores, los tres primeros son valores enteros entre 0 y 255,
que indican la cantidad de rojo, verde y azul. El cuarto valor es un nmero entre 0 y 1 que indica la
opacidad que se aplica al color. Si indicamos un 1 se grafica totalmente opaco (es el valor por defecto)
un valor menor har ms transparente el grfico.
Veamos un ejemplo primero dispondremos un texto dentro de un recuadro que tiene una imagen y no
utilizaremos la funcin rgba para definir la opacidad, sino utilizaremos la funcin rgb para definir solo el
color:
#recuadro1 {
background-image: url("foto1.jpg");
color:#f00;
width:700px;
height:450px;
border-radius:15px;
font-size:45px;
}
.texto1 {
color:rgb(255,255,0);
}
Retornar
Concepto
Ejemplo
Vista Previa
Mltiples columnas (column-count)
Otra novedad que nos trae CSS3 es permitir disponer un bloque de texto en mltiples columnas con la
nica indicacin de la cantidad de columnas que queremos que lo divida:
Elemento {
column-count: cantidad de columnas;
}
Por ejemplo para generar un cuadro con tres columnas debemos implementar el siguiente cdigo:
#recuadro1{
-moz-column-count:3;
-webkit-column-count:3;
column-count:3;
border-radius: 20px;
background-color:#ddd;
width:600px;
padding:10px;
}
Tenemos que anteceder los prefijos -moz, -webkit para que funcionen con el Firefox y Chrome. El Opera
Retornar
Concepto
Ejemplo
Vista Previa
Mltiples columnas dinmicas (column-width)
Con la propiedad column-width tambin generamos mltiples columnas. Tiene sentido emplearla cuando
nuestro diseo es flexible, es decir que si modificamos el tamao de la ventana del navegador su
contenido se relocaliza.
Con la propiedad column-width especificamos el ancho de la columna en pxeles, porcentaje etc. y luego
se generan tantas columnas como entren en el contenedor.
La sintaxis es la siguiente:
Elemento {
column-width: ancho;
}
Si queremos crear un recuadro con texto y que cada columna ocupe 150 pxeles luego codificamos:
#recuadro1{
-moz-column-width:200px;
-webkit-column-width:200px;
column-width:200px;
border-radius: 20px;
background-color:#ddd;
padding:10px;
}
El resultado puede variar dependiendo las dimensiones de la ventana del navegador (siempre y cuando
hayamos creado una pgina web fluida, es decir sin un ancho fijo):
Retornar
Concepto
Ejemplo
Vista Previa
Mltiples columnas y su separacin (column-gap)
El CSS3 nos permite especificar la separacin entre las columnas. Su sintaxis es:
Elemento {
column-gap: valor;
}
Podemos utilizar cualquier unidad para indicar la separacin entre columnas (px, em etc.)
Si queremos una separacin de 40 pxeles entre columnas luego debemos codificar:
#recuadro1{
-moz-column-gap:40px;
-webkit-column-gap:40px;
column-gap:40px;
-moz-column-count:3;
-webkit-column-count:3;
column-count:3;
border-radius: 20px;
background-color:#ddd;
width:600px;
padding:10px;
}
Retornar
Concepto
Ejemplo
Vista Previa
Mltiples columnas y lnea separadora (column-rule)
Podemos configurar una lnea separadora entre las columnas cuando utilizamos mltiples columnas. La
sintaxis es la siguiente:
Elemento {
column-rule: grosor estilo color;
}
Con el siguiente ejemplo veamos los distintos valores de esta propiedad. Definimos una lnea de un pxel,
con trazo slido de color rojo:
#recuadro1{
-moz-column-rule: 1px solid #f00;
-webkit-column-rule: 1px solid #f00;
column-rule: 1px solid #f00;
-moz-column-count:3;
-webkit-column-count:3;
column-count:3;
border-radius: 20px;
background-color:#ddd;
width:600px;
padding:10px;
}
Retornar
Concepto
Ejemplo
Vista Previa
Importar una fuente no disponible en el navegador (@fontface)
En CSS3 se especifica una nueva sintaxis para importar fuentes no disponibles en el navegador y que se
descargan de un servidor web.
El problema actual es que hay varios formatos de fuentes que son apoyados por distintos navegadores. El
IE8 e inferiores solo admite el formato EOT que es propietario. El formato True Type es ampliamente
soportado por navegadores modernos. Otros formatos son el OpenType, SVG y WOFF.
Esta diversidad de formatos de fuente hace necesario que indiquemos la mayor cantidad de formatos de
fuentes posibles para nuestro sitio.
Para importar una fuente que ser utilizada por una pgina web tenemos que utilizar la regla @font-face,
en la misma indicamos el nombre de la fuente a importar y la direccin web de donde la debe descargar el
navegador, la sintaxis es:
@font-face {
font-family: [nombre de la fuente];
src: local(""),
url("nombrearchivo.woff") format("woff"),
url("nombrearchivo.otf") format("opentype"),
url("nombrearchivo.svg#nombre de la fuente") format("svg");
}
Podemos descargar una fuente del sitio www.fontsquirrel.com
para probar la importacin de fuentes (hay una seccin donde podemos descargar varios formatos para la
misma fuente)
Veamos un ejemplo de utilizar una fuente descargada del sitio mencionado anteriormente:
<!DOCTYPE html>
<html>
<head>
<title>Prueba</title>
Retornar
Concepto
Ejemplo
Vista Previa
Imgenes de fondo (background-image)
La propiedad brackground-image permite insertar un conjunto de imgenes dentro de un elemento. Para
ello debemos especificar sus nombres:
Elemento {
background-image: url("imagen1", url("imagen2", ...);
}
La primera imagen que se dibuja es la que indicamos al final de la lista.
Por ejemplo vamos a mostrar una imagen de fondo con formato jpg y sobre esta una de tipo png, la
primera:
y la imagen png es:
Retornar
Concepto
Ejemplo
Vista Previa
Imgenes de fondo en diferentes posiciones (backgroundposition)
Podemos mediante la propiedad background-position indicar la posicin de la imagen con respecto al
contenedor.
La sintaxis es la siguiente:
Elemento {
background-image:
url("imagen1", url("imagen2", ...);
background-position: posx posy
, posx posy;
}
El par de valores que indicamos coincide con la posicin de las imgenes que especificamos en la
propiedad background-image.
Implementaremos una pgina que muestre una imagen de 700*400 y dentro de esta otra imagen que se
ubique en los cuatro vrtices de la imagen ms grande.
Utilizaremos las imgenes:
Retornar
Concepto
Ejemplo
Vista Previa
Imgenes de fondo (background-size)
Esta propiedad nos permite escalar una imagen dispuesta en el fondo. La sintaxis es:
Elemento {
background-size: ancho alto;
}
Estas longitudes se las puede especificar en pxeles, porcentajes etc.
Por ejemplo si queremos mostrar tres imgenes dentro de un div con distintos tamao:
<!DOCTYPE html>
<html>
<head>
<title>Prueba</title>
<style type="text/css">
#recuadro1{
background-image:
url("logo1.png"),
url("logo1.png"),
url("foto1.jpg");
background-position: 0% 0%,
50% 50%;
background-size:
30px 30px,
250px 250px,
700px 450px;
background-repeat: no-repeat;
width:700px;
height:450px;
}
body {
background:white;
margin:50px;
Retornar
Concepto
Ejemplo
Vista Previa
Imgenes de fondo (background-origin)
La propiedad background-origin establece el punto donde se comienza a dibujar el fondo. Pudiendo ser
en el borde, la almohadilla o el contenido (border-box, padding-box o content-box)
Elemento {
background-origin: border-box/padding-box/content-box;
}
Un ejemplo de disponer en tres recuadros imgenes de fondo inicializando la propiedad backgroundorigin con los tres valores posibles:
<!DOCTYPE html>
<html>
<head>
<title>Prueba</title>
<style type="text/css">
#recuadro1{
background-origin: border-box;
border: 20px solid #eee;
padding: 20px;
background-image: url("casa.png");
background-color:#ff0;
background-repeat: no-repeat;
width:300px;
height:200px;
}
#recuadro2{
background-origin: padding-box;
border: 20px solid #eee;
padding: 20px;
background-image: url("casa.png");
background-color:#ff0;
background-repeat: no-repeat;
Retornar
Concepto
Ejemplo
Vista Previa
Transiciones de una propiedad (transition)
Las transiciones en css3 permiten modificar el valor de una propiedad de un elemento HTML en forma
gradual durante un tiempo determinado de un estado inicial a un estado final.
La sintaxis ms simple para definir una transicin de una propiedad es:
Elemento {
transition: [nombre de propiedad] [duracin de la transicin] ;
}
Por ejemplo crearemos dos recuadro y cuando pasemos la flecha del mouse sobre el mismo cambiaremos
su tamao. El primer recuadro lo haremos sin transicin:
#recuadro1{
border-radius: 20px;
background-color:#ddd;
width:200px;
padding:10px;
}
#recuadro1:hover{
width:300px;
}
Cuando probamos la pgina veremos que el recuadro1 cambia el ancho del recuadro de 200 pxeles a 300
pxeles en forma instantanea al pasar la flecha del mouse.
Ahora si definimos la propiedad transition indicando que acte sobre la propiedad width y que el cambio
lo realice en 1 segundo:
#recuadro2{
border-radius: 20px;
background-color:#ff0;
width:200px;
padding:10px;
transition:width 1s;
-moz-transition:width 1s;
-ms-transition:width 1s;
-webkit-transition:width 1s;
Retornar
Concepto
Ejemplo
Vista Previa
Transiciones de mltiples propiedades (transition)
Tambin podemos hacer transiciones de mltiples propiedades, para ello indicamos cada transicin
separada por coma:
Elemento {
transition: [nombre de propiedad] [duracin de la transicin],
[nombre de propiedad] [duracin de la transicin],
[nombre de propiedad] [duracin de la transicin] ;
}
Por ejemplo si queremos que el recuadro modifique su ancho y cambie de color luego debemos codificar
lo siguiente:
#recuadro1{
border-radius: 20px;
background-color:#ff0;
width:200px;
padding:10px;
transition:width 1s,
background-color 8s;
-moz-transition:width 1s,
background-color 8s;
-ms-transition:width 1s,
background-color 8s;
-webkit-transition:width 1s,
background-color 8s;
-o-transition:width 1s,
background-color 8s;
}
#recuadro1:hover{
width:300px;
background-color: #f00;
}
Como vemos en la propiedad transition indicamos la propiedad width con una duracin de un segundo y
la propiedad background-color con un valor de 8 segundos. Esto significa que cuando dispongamos la
Retornar
Concepto
Ejemplo
Vista Previa
Transiciones (funciones de transicin)
Un tercer parmetro opcional de la propiedad transition es indicar una "funcin de transicin" que nos
permite seleccionar la velocidad durante la transicin:
Elemento {
transition: [nombre de propiedad] [duracin de la transicin] [funcin de transicin];
}
Los valores posibles que podemos especificar son:
ease : Define un efecto de transicin con un comienzo lento, luego rpido y finalmente termina lento
(cuando no definimos la funcin de transicin elige esta por defecto)
linear : Define un efecto de transicin con la misma velocidad de inicio a fin.
ease-in : Define un efecto de transicin con un comienzo lento.
ease-out : Define un efecto de transicin con un final lento.
ease-in-out : Define un efecto de transicin con un comienzo lento y un final lento.
La sintaxis luego si queremos aplicar la funcin de transicin linear ser:
#recuadro2{
margin: 5px;
border-radius: 20px;
background-color:#eee;
width:200px;
padding:10px;
transition:width 2s linear;
-moz-transition:width 2s linear;
-ms-transition:width 2s linear;
-webkit-transition:width 2s linear;
-o-transition:width 2s linear;
}
Retornar
Concepto
Ejemplo
Vista Previa
Transiciones (tiempo de demora en iniciar la transicin)
El cuarto parmetro opcional de la propiedad transition es indicar un tiempo de espera hasta que se inicie
la transicin:
Elemento {
transition: [nombre de propiedad] [duracin de la transicin]
[funcin de transicin] [tiempo de inicio];
}
Es decir indicamos la cantidad de milisegundos o segundos hasta que se inicia el proceso de transicin.
Por ejemplo si queremos que la transicin comience en 1 segundo la sintaxis ser la siguiente:
#recuadro1{
border-radius: 20px;
background-color:#eee;
width:200px;
padding:10px;
transition:width 1s ease 1s;
-moz-transition:width 1s ease 1s;
-ms-transition:width 1s ease 1s;
-webkit-transition:width 1s ease 1s;
-o-transition:width 1s ease 1s;
}
Puede ser muy til si queremos encadenar transiciones, por ejemplo si queremos que el elemento
modifique su ancho y luego al finalizar el cambio del ancho modifique su color:
#recuadro2{
margin:5px;
border-radius: 20px;
background-color:#eee;
width:200px;
padding:10px;
transition:width 1s ease,
background-color 1s ease 1s;
-moz-transition:width 1s ease,
background-color 1s ease 1s;
-ms-transition:width 1s ease,
Retornar
Concepto
Ejemplo
Vista Previa
Transiciones (otra sintaxis para hacer lo mismo)
Hemos visto que la propiedad transition podemos indicarle hasta cuatro parmetros. Los dos primeros
son obligatorios y los otros son opcionales.
CSS3 dispone de otras cuatro funciones para indicar cada uno de estos valores en forma independiente:
Elemento {
transition-property: [nombre de propiedad];
transition-duration: [duracin de la transicin];
transition-timing-function: [funcin de transicin];
transition-delay: [tiempo de inicio];
}
Por ejemplo si queremos modificar el ancho de un elemento cuando disponemos la flecha del mouse y
que dure 1 segundo y se lance luego de medio segundo la sintaxis es la siguiente:
#recuadro1{
margin:5px;
border-radius: 20px;
background-color:#eee;
width:200px;
padding:10px;
transition-property: width;
transition-duration: 1s;
transition-timing-function: linear;
transition-delay: 0.5s;
-moz-transition-property: width;
-moz-transition-duration: 1s;
-moz-transition-timing-function: linear;
-moz-transition-delay: 0.5s;
-ms-transition-property: width;
-ms-transition-duration: 1s;
-ms-transition-timing-function: linear;
-ms-transition-delay: 0.5s;
-webkit-transition-property: width;
-webkit-transition-duration: 1s;
-webkit-transition-timing-function: linear;
Retornar
Concepto
Ejemplo
Vista Previa
Animaciones (sintaxis bsica)
Las animaciones en css3 nos permiten hacer cosas que con las transiciones no alcanzamos y nos
quedamos cortos.
La sintaxis bsica para una animacin:
Elemento {
animation-name: [nombre de la animacin];
animation-duration: [tiempo de duracin];
}
@ keyframes [nombre de la animacin] {
from {
[propiedades y valores del estado inicial de la animacin]
}
to {
[propiedades y valores del estado final de la animacin]
}
}
Veamos un ejemplo donde emplearemos la sintaxis expuesta, a este momento solo el FireFox, Chrome y
Opera implementan las animaciones. Mostraremos un recuadro con un texto que parta de la columna
30px y avance hasta la columna 300px y que cambie del color gris al color amarillo:
#recuadro1{
left:30px;
position:relative;
border-radius: 20px;
background-color:#ddd;
width:200px;
height:100px;
padding:4px;
-moz-animation-name: animacion1;
-moz-animation-duration: 4s;
-webkit-animation-name: animacion1;
-webkit-animation-duration: 4s;
-o-animation-name: animacion1;
Retornar
Concepto
Ejemplo
Vista Previa
Animaciones (animation-iteration-count y animationdirection)
Otras dos propiedades muy importantes para crear animaciones con css3 son animation-iteration-count y
animation-direction:
Elemento {
animation-iteration-count: [cantidad de veces a repetir la animacin o "infinite"];
animation-direction: ["normal" o "alternate"];
}
Si queremos que la animacin se repita solo tres veces luego indicamos en la propiedad animationiteration-count dicho valor:
-moz-animation-iteration-count: 3;
En cambio si queremos que se repita siempre luego especificamos el valor "infinite":
-moz-animation-iteration-count: infinite;
La propiedad animation-direction indica como debe repetirse la animacin, puede tomar el valor
"normal" con lo que la animacin cada vez que finaliza comienza desde el principio. Pero si
inicializamos con el valor "alternate" cuando finaliza la animacin comienza desde el final hasta el
principio:
-moz-animation-direction: alternate;
El ejemplo del concepto anterior que muestra un recuadro con un texto que se desplaza de izquierda a
derecha cambiando su color, pero ahora indicando que se repita en forma indefinida y con el valor
"alternate" en la propiedad animation-direction:
#recuadro1{
left:30px;
position:relative;
border-radius: 20px;
background-color:#ddd;
width:200px;
height:100px;
padding:4px;
-moz-animation-name: animacion1;
Retornar
Concepto
Ejemplo
Vista Previa
Animaciones (animation-timing-function y animationdelay)
Similar a las transiciones disponemos de dos propiedades para definir la funcin de transicin y el tiempo
que debe esperar para comenzar la animacin:
Elemento {
animation-timing-function: [funcin de transicin];
animation-delay: [tiempo de demora para iniciar la animacin];
}
Los valores posibles para la propiedad animation-timing-function:
ease : Define un efecto de animacin con un comienzo lento, luego rpido y finalmente termina
lento (cuando no definimos la funcin elige esta por defecto)
linear : Define un efecto de animacin con la misma velocidad de inicio a fin.
ease-in : Define un efecto de animacin con un comienzo lento.
ease-out : Define un efecto de animacin con un final lento.
ease-in-out : Define un efecto de animacin con un comienzo lento y un final lento.
El problema del concepto anterior definimos la funcin de animacin "linear" y un tiempo de retardo de 2
segundos:
#recuadro1{
left:30px;
position:relative;
border-radius: 20px;
background-color:#ddd;
width:200px;
height:100px;
padding:4px;
-moz-animation-name: animacion1;
-moz-animation-duration: 4s;
-moz-animation-iteration-count: infinite;
-moz-animation-direction: alternate;
-moz-animation-timing-function: linear;
-moz-animation-delay: 2s;
-webkit-animation-name: animacion1;
Retornar
Concepto
Ejemplo
Vista Previa
Animaciones (animation-play-state)
La propiedad animation-play-state nos permite cambiar el estado de la animacin, los valores posibles
son "running" y "paused", es decir ejecutndose o pausada. La sintaxis luego es:
Elemento {
animation-play-state: [running o paused];
}
Por defecto una animacin comienza con esta propiedad con el valor "running".
El siguiente ejemplo muestra un recuadro que cuando disponemos la flecha del mouse en su interior se
activa la animacin cambiando por esquinas redondeadas y el color interior:
#recuadro1{
border-radius: 20px;
background-color:#ddd;
width:200px;
height:100px;
padding:8px;
-moz-animation-play-state:paused;
-moz-animation-name: animacion1;
-moz-animation-duration: 4s;
-moz-animation-iteration-count: infinite;
-moz-animation-direction: alternate;
-webkit-animation-play-state:paused;
-webkit-animation-name: animacion1;
-webkit-animation-duration: 4s;
-webkit-animation-iteration-count: infinite;
-webkit-animation-direction: alternate;
-o-animation-play-state:paused;
-o-animation-name: animacion1;
-o-animation-duration: 4s;
-o-animation-iteration-count: infinite;
-o-animation-direction: alternate;
}
#recuadro1:hover {
Retornar
Concepto
Ejemplo
Vista Previa
Animaciones (definicin de ms de 2 keyframes)
Hasta ahora hemos indicado en la animacin solo 2 keyframes (el inicial y el final), pero para
animaciones ms complejas es posible que necesitemos ms de 2 keyframes, para esto tenemos la
siguiente sintaxis:
@-moz-keyframes [nombre de la animacin] {
0%{
[propiedades y valores]
}
[valor en porcentaje]%{
[propiedades y valores]
}
[valor en porcentaje]%{
[propiedades y valores]
}
100%{
[propiedades y valores]
}
}
Por ejemplo si queremos 5 frames claves que nos permitan desplazar un recudrado sobre un permetro de
un rectngulo luego tenemos que especificar los siguientes frames:
#recuadro1{
left:30px;
top:30px;
position:relative;
border-radius: 20px;
background-color:#ddd;
width:100px;
height:100px;
padding:4px;
-moz-animation-name: animacion1;
-moz-animation-duration: 4s;
-moz-animation-iteration-count: infinite;
-webkit-animation-name: animacion1;
-webkit-animation-duration: 4s;
Retornar