Canvas en HTML5

El elemento canvas de HTML5 es una de las aplicaciones que pueden hacernos la vida fácil, a pesar de que falta tiempo de que se valide esta tecnología para desarrollo del diseño web. Canvas corre con la ayuda de javascript, lenguaje de programación un poco abstrusa, sin embargo, el mismo elemento canvas nos hace tener un buen ánimo y felicidad por este lenguaje de programación

En algún momento de la vida tuvimos un curso de Matemáticas; las coordenas cartesianas fue uno de esos temas, donde se gráfica las diferentes funciones (lineales, logaritmicas, trigonométricas, etc.)  por eso es que nos resultara un poco incómodo trabajar en las coordenadas del elemento canvas, ya que el desplazamiento del nuestros vectores o dibujos serán hacia abajo, por eso es que tenemos que acostumbrarnos, en la siguiente figura se muestra la diferencia:





Dejar claro lo que son las coordenadas en canvas nos ayudaran a entender más acerca de todo lo que se podrá hacer en el futuro, con el paso de estos tutoriales veremos la importancia de tener esto en cuenta.

Como mencionamos el elemento canvas utiliza JavaScript para funcionar, es el que nos hara toda la magia que encierra html5. Si no conoces este lenguaje de programación será un poco difícil, pero no imposible, ya que pondré empeño en publicar algunos temas de importancia que concuerden con el tema.

Antes de dibujar debemos hacer referencia, donde se encuentra nuestro elemento canvas que viene con las etiquetas <canvas id="myCanvas"></canvas>, el modo en adquirimos su contexto bidimensional es de la siguiente forma:

var canvas = document.getElementById('myCanvas');//Accedemos al DOM mediante su id getElementById
var context = canvas.getContext('2d');//Obtenemos con contexto 


Comensemos dibujando una linea, por cual utilizaremos beginPath, context.moveTo, context.lineTo, context.lineWidth, context.strokeStyle y context.stroke.

beginPath es un metodo que permite decir: que se comenzara a realizar el dibujo; context.moveTo nos permite declarar en donde empezaran nuestras cordenadas y context.lineTo el final de esta linea; context.lineWidth nos dira el grosor de nuestra lineas; context.strokeStyle y context.stroke nos permitiran poner el color que queramos. Para dibujar una linea el codigo seria de la siguiente manera:



<!DOCTYPE HTML>
<html>
  <head>
   <title>DIBUJAR LINEAS</title>
  </head>
  <body>
    <canvas id="myCanvas" width="500" height="250"></canvas>
    <script>
      var canvas = document.getElementById('myCanvas');
      var context = canvas.getContext('2d');

      context.beginPath();
      context.moveTo(100, 100);
      context.lineTo(200, 200);
      context.lineWidth = 5;

      // set line color
      context.strokeStyle = '#ff0000';
      context.stroke();
    </script>
  </body>
</html>


La forma de la linea nos quedara como se muestra en la figura que a continuacion se presenta:



Pero aquí no queda todo por hacer, y ver una línea muy limitada que no ayude en nada, sin embargo, podemos imaginarnos infinidad de cosas:


El codigo del degradado o tapiz es el siguiente:



<!DOCTYPE HTML>
<html>
  <head>
    <style>
     #myCanvas{
 background:#333;}
    </style>
  </head>
  <body>
    <canvas id="myCanvas" width="1054" height="1000"></canvas>
    <script>
      var canvas = document.getElementById('myCanvas');
      var context = canvas.getContext('2d');
 function uno(){
 //Comienza de la primeras lineas horizontalmente.
 //Declaramos nuestras variables x,y,xp,yp.
 //Introduce la variable incre la cual nos permitira sumar
 //a la cordenada Y anterior.
var incre=30;
 var x=1;
 var y=10;
 var xp=1054;
 var yp=10;
for(var i=0;i<30;i++){  
      context.beginPath();
      //el primer valor de Y sera 40; al siguiente regreso aumentara 30px
     //con incre 30 y sera 70
     context.moveTo(x, y=y+incre);
     context.lineTo(xp, yp=yp+incre);
     context.lineWidth=2;
      context.stroke();
      context.strokeStyle = 'yellow';
      context.stroke();
}}

function dos(){
    //Comienza de la segunda lineas verticalmente.
var incre=30;
x=10;
y=1;
xp=10;
yp=1000;
for(var i=0;i<30;i++){  
      context.beginPath();
     context.moveTo(x=x+incre, y);
      context.lineTo(xp=xp+incre, yp);
     context.lineWidth=2;
      context.stroke();
      context.strokeStyle = 'yellow';
      context.stroke();
}
}
uno();
dos();
    </script>
  </body>
</html>


Utilizamos el ciclo de estructura de control FOR para poder imprimir las líneas que quisiéramos. Para poder recorrer las líneas en sus coordenadas utilizamos la variable incre, para moverlas cada 30px. Si usted no sabe a un lo que está pasando, puede poner un alerta dentro del bucle del ciclo de FOR de la siguiente forma la cual nos servirá para entender con rapidez.
alert("el valor de x es:"+x+" el valor de y es: "+y);

Si jugamos un poco con nuestro bucle de control y tomamos la variable i, podremos incrementar el ancho de nuestra linea:


 var canvas = document.getElementById('myCanvas');
 var context = canvas.getContext('2d');

x=10;
y=1;
xp=10;
yp=1000;
  incre=30;
for(var i=0;i<30;i++){  
     context.beginPath();
    context.moveTo(x=x+incre, y);
     context.lineTo(xp=xp+incre, yp);
    context.lineWidth=5+i;/*incrementamos el ancho de nuestra linea*/
     context.stroke();
     context.strokeStyle ="#33FFFf";
     context.stroke();
}

El incremento del ancho de linea se notara un poco; es cuestion de que uno empiece a jugar con lo valores de color, de tamaño y la inclinacion de nuestra lineas.


Ya por ultimo utlizaremos el el ajuste de color RGBA su significado viene de rojo, verde, azul y alfa. Alfa es el que nos permitira tener transparencias en nuestros colores, este valor es solo de 0 a 1. Los otros valores RGB viene de 0 a 255.

rgba(255, 153, 0, 0.5)

Como vemos en la siguiente figura que se muestra el trabajo de opacidad de RGBA.




Asi quedaría nuestro codigo:



 var canvas = document.getElementById('myCanvas');
      var context = canvas.getContext('2d');
 function uno(){
 //Comienza de la primeras lineas horizontalmente.
 //Declaramos nuestras variables x,y,xp,yp.
 //Introducimos la variable incre la cual nos permitira sumar
 //a la cordenada Y anterior.
 var incre=30;
 var x=1;
 var y=10;
 var xp=1054;
 var yp=10;


for(var i=0;i<30;i++){
context.strokeStyle = "rgba(255, 153, 0, 0.5)";  
      context.beginPath();
 //el primer valor de Y sera 40; al siguiente regreso aumentara 30px
 //con incre 30 y sera 30
 context.moveTo(x, y=y+incre);
 context.lineTo(xp, yp=yp+incre);
 context.lineWidth=10;
      context.stroke();
      context.strokeStyle = "rgba(255, 153, 0, 0.5)";
      context.stroke();
}}

function dos(){
    //Comienza de la segunda lineas verticalmente.
var incre=30;
x=10;
y=1;
xp=10;
yp=1000;
for(var i=0;i<30;i++){
 context.strokeStyle ="rgba(51, 187, 241, 0.5)";  
      context.beginPath();
 context.moveTo(x=x+incre, y);
      context.lineTo(xp=xp+incre, yp);
 context.lineWidth=10;
      context.stroke();
   
      context.stroke();
}}
uno();
dos();



Para poder convertir nuestros colores hexadecimales a rgba accedemos a conversión.

Hasta este momento podemos observar el poder que tiene el elemento canvas de html5 con ayuda de javascript, y el ciclo de control For que hace todo el trabajo. Había contemplado recorrer en un solo tutorial, todo los elementos que conforman canvas, pero, esto se estenderia mucho, asi es que nos veremos en la proxima.



Crear una Pagina web

El codigo html para un blog en bloger es complejo, cuando esta se analiza para poder manipularla para fines esteticos, es cuando se requiere conocer este a fondo. El lenguaje principal de codificacion html es el siguiente:


<html>
<head>
</head>
<body>
</body>
</html>


Donde:

Html nos indica que esta escrito en ese lenguaje. Head es uno de los tags que van dentro de nuestro html, en esta se ponen el titulo de la paguina con el tag <title></title>; los estilos de nuestra pagina que van en nuestra hoja de estilos <style type=text/css> </style>estas son: el color, tamaño y fuentes de texto, tamaños y posiciones de nuestras cajas o divisiones. Body es tambien uno de los tags que estan dentro de html, en esta ponemos el contenido principal de nuestra paguina.

Para saber como se hace esto e iniciarse en el mundo de las paguinas web, haremos los siguientes pasos:

1.- Copiaremos el siguiente codigo.

<html>
<head>
<title>Mi primera página web</title>
<style type=text/css>
body{
background:#eaeaea;}
#div_estatico{
color:#FFF;
width:200px;
height:600px;
background:#1a1a1a;
position:fixed;
border-radius:10px;
border: 5px dotted #0ff;
margin-top:-15px;
}

#normal{
text-align:justify;
padding:20px;
font-family:"Times New Roman", Times, serif;
font-size:30px;
margin-left:200px;
}
h1{

text-align:center;
}


ul, li{
color:#CCCCCC;
text-align:left;

}
a:link{
font-size:18px;
color:#CCC;
}
a:hover{
color:#FFF;;
}

</style>
</head>
<body>
<div id="div_estatico">
<h1>Mi primera paguina<h1>
<hr />
<ul>
<li><a href="#">Reflexiones</a></li>
<li><a href="#">Poemas</a></li>
<li><a href="#">Frases</a></li>
<li><a href="#">Cacnciones</a></li>
</ul>

</div>
<div id="normal">
<h1>El murciélago</h1>
<h2>(Leyenda juchiteca)</h2>


<p>Las mariposas que hoy vemos, ingrávidas, que se pueden posar en las flores, en la superficie de las aguas y hasta en las trémulas ramas del aire, no son otra cosa que una fracasada imagen de lo que el murciélago fue en otro tiempo: el ave más bella de la creación. Pero no siempre fue así. Cuando la luz y la sombra hecharon a andar, era como ahora la conocemos y se llama biguidibela: biguidi, mariposa; y bela, carne: mariposa de carne, es decir, desnuda.</p>

<p>La más fea y desventurada de todas las criaturas era entonces el murciélago. Y un día acosado por el frío, subió al cielo y le dijo a Dios:</p>

<p>-Me muero de frío. Necesito plumas.
Y como Dios, aunque no cesa de trabajar, no vuelve las manos a tareas ya cumplidas, no tenía ni una pluma. Así fue que le dijo que volviera a la tierra y suplicara en su nombre una pluma a todas las aves; porque Dios da más de lo que se le pide. Y el murciélago vuelto a la tierra, recurrió a aquellos pájaros de más vistoso plumaje.<p>
<p>La pluma verde de los loros, la azul de la paloma azul, la blanca de la paloma blanca, la tornasol de la chuparrosa, su más próxima imagen actual: todas las tuvo el murciélago; y orgulloso volaba por las cimas de la montaña, y las otras aves, refrenando su vuelo, se detenían para admirarlo.<p>
<p>Y había una emoción nueva, plástica sobre la tierra.
A la caída de la tarde, volando con el viento del Poniente, coloraba el horizonte; y una vez viniendo de más allá de las nubes, creó el arcoíris, como un eco de su vuelo; sentado en las ramas de los árboles, abría alternativamente sus alas, sacudiéndolas en un temblor que alegraba el aire.</p>

<p>Todas las aves comenzaron a sentir envidia de él; y el odio se volvió unánime, como un día lo fue la admiración.</p>

<p>Otro día subió al cielo parvada de pájaros, el colibrí adelante. Dios escucho su queja. El murciélago se burlaba de ellos; además con una pluma menos, padecían de frío; y ellos mismos trajeron el mensaje celestial en que se llamaba al murciélago. Cuando estuvo en la casa de allá arriba, Dios le hizo repetir los ademanes que de aquel modo habían ofendido a sus compañeros; y agitando las alas, se quedó otra vez desnudo. Se dice que todo un día llovieron plumas del cielo. Y desde entonces solo vuela en los atardeceres en rápidos giros, cazando plumas imaginarias, y no se detiene, para que nadie advierta su fealdad.</p>

Andres Henesterosa
</div>
</body>
</html>

2.- Abrimos el blog de notas que se encuentra por lo regular en accesorios.

3.- Pegamos el codigo en el blog de notas.

4.- Guardaremos nuestro archivo en Mis Documentos con el nombre que queramos y la extención .html por ejemplo:

miprimerapagina.html

5.- El siguiente paso sera abrir nuestros documento .html en donde lo guardamos y le daremos click derecho>abrir con>El navegador que utilicen(chrome, mozilla firefox, Internet Explorer, etc.)

Y listo tendremos nuestra primera paguina web; podemos cambiar y jugar con  nuestro codigo, si vemos nuestra caja o división llamada div_estatico, se encuentra en posicion fija, esto se logra posicionandola con position:fixed y esta caja tiene un ancho y una altura width:200px , height:700px que nos permitira verla como una cinta; border-radius:10px,  border: 5px dotted #0ff son nuestros estilos de borde redondos -borremos estos para ver lo que sucede-. En nuestra division normal, lo unico que hacemos , es darle un margen izquierdo de 200px margin-left:200px, el tamaño de nuestra división fija, para que así quede recorrida hacia la derecha.

Para finalizar ponemos los comentarios de todos nuestros estilos CSS que utlizamos y su funcionamiento dentro de ella, que van adentro de nuestro tag head y que son encerradas por los tags siguientes: <style type=text/css></style> . . En nuestros div pusimos una id con su nombre declarado, para hacerlo llamar despues con el numeral # en nuestros estilos CSS entre llaves #div_estatico{} .


<style type=text/css>
body{/*BODY Es la pagina principal*/
background:#eaeaea;/*El color de toda nuestra paguina*/
}
#div_estatico{
color:#FFF;
/*El color de nuestra fuente*/
width:200px;
/*El ancho de nuestra caja o división*/
height:600px;
/*La altura de la división*/
background:#1a1a1a;
/*El color de nuestro fondo de nuestra caja o division*/
position:fixed;
/*Para que nuestra caja no se pueda mover*/
border-radius:10px;
/*El radio de nuesta caja para no tener una vista cuadrada, sí se le quita, los bordes seran cuadrados.*/
border: 5px dotted #0ff;
/*El tamaño de nuestro borde, el estilo y el color.*/
margin-top:-15px;
/*Para situarla hasta la parte de arriba, borrar esta parte y se dara cuenta lo que pasa.*/
}

#normal{
text-align:justify;
/*Nuestro texto justificado*/
padding:20px;
/*El margen de nuestra caja con respecto al texto, esto se vera más adelante.*/
font-family:"Times New Roman", Times, serif;
/*la fuente de nuestra division normal.*/
font-size:25px;
/*El tamaño de la fuente.*/
margin-left:200px;
/*Para que no se interponga con nuestra división estatica.*/
}
h1{
text-align:center;
/*Alinear nuestras etiquetas h1 en el centro*/
}


ul, li{
color:#CCCCCC;/*El colo de nuestros listas*/
text-align:left;/*Alineamos hacia la izquierda*/

}
a:link{
font-size:18px;
/*La fuente de del tamaño de link y el color*/
color:#CCC;
}
a:hover{
/*Al pasar el puntero de nuestro raton nuestra fuente es de color blanco*/
color:#FFF;;
}
em,b,big{
color:#0FF;}

</style>

Ocultar etiquetas al pie de la pagina

Es molesto(para fines estetico) en algunas ocasiones que las etiquetas al pie de las entradas, se muestren. Podemos quitar estas al ingresar en Diseño del blog que se requiera configurar como se muestra a continuación:

1.-Ingresamos al Diseño de nuestro blog.
2.-Ingresamos a las Entradas del blog.
3.-Desactivaremos las casilla de Etiquetas.

A pesar que blogger da esta opción, no siempre se lograr ocultarlos, si no que tenemos que ir a nuestra Plantilla y editar nuestro HTML.

Para quitar las etiquetas del pie de pagina de nuestras entradas, debemos encontrar el siguiente código:


<span class='post-labels'>
<b:if cond='data:post.labels'>
<data:postLabelsLabel/>
<b:loop values='data:post.labels' var='label'>
<a expr:href='data:label.url' rel='tag'>
<data:label.name/>  
</a>
<b:if cond='data:label.isLast != &quot;true&quot;'>
</b:if>
</b:loop>
</b:if>
</span>



Podemos eliminar todo, pero, si queremos usarlo nuevamente, seria más practico ocultarla; esto lo logramos escribiendo corchetes angulares:


<!--     Pondremos aquí nuestro codigo ya mencionado    -->



Si nos cuesta trabajo encontrar este código nos podemos situar rápidamente en este Widget :


<b:widget id="Blog1" locked="true" title="Entradas del blog" type="Blog">...</b:widget>



Daremos click a la flecha negra y tendremos que encontrar el siguiente codigo:


 <b:includable id='post' var='post'> </b:includable> }

Daremos click nuevamente en expandir en la flecha negra y buscaremos nuestro código para ocultar nuestras etiquetas.

Ocultar el titulo y descripcion del blog

Cuando tenemos varios blog que queramos que lleven el mismo nombre, como en una pagina web, nos vemos en la necesidad de eliminar el titulo del blog, esta se encuentra por lo regular en la cabecera; con el nombre de header: header-wraper, header-inner, etc. Tenemos que borrar en el siguiente código <data:title/>, <data:title/>:


<data:title/>
<b:else/>
<a expr:href='data:blog.homepageUrl'><data:title/></a>



Pero si solo se quiere ocultar el titulo del blog, se tendrá que encontrar las siguientes lineas:

.header h1 {
  font: $(header.font);
  color: $(header.text.color);
}

o bien:

#header h1 {
  font: $(header.font);
  color: $(header.text.color);
}

y poner entre ellos display:none:



.header h1 {
  display:none;
}


Ahora, para eliminar la descripción del blog debemos encontrar el siguiente código y borrar <data:description/>:


<b:includable id='description'>
<div class='descriptionwrapper'>
<p class='description'><span><data:description/></span></p>
</div>
</b:includable>


Si solo queremos ocultar las descripción emplearemos el mismo metodo que se utilizo para ocultar el titulo:


.header .description {
display:none;
}


Agregar barras laterales


Las barras laterales nos permiten incluir varios gadget para nuestro blog, una de las mas importantes son: html/javascript, seguidores en google y la lista de los usuarios que siguen tu blog, etc.



En nuestro blog podemos agregar infinidad de barras laterales, izquierda o derecha. Tambien podemos añadir barras en el pie de nuestro blog. El codigo que se introduce es el siguiente:


  <b:section class='sidebar' id='sidebar' preferred='yes'/>
 <b:section class='footer' id='footer' preferred='yes'/>



Si queremos poner mas gadget en nuestro blog, solo sera necesario poner un numero a sidebar o footer por ejemplo:


 <b:section class='sidebar1' id='sidebar1' preferred='yes'/>
 <b:section class='sidebar2' id='sidebar2' preferred='yes'/>
 <b:section class='sidebarN' id='sidebarN' preferred='yes'/>



En donde insertaremos el primer codigo es en una de las diviciones de nuestro blog, usualmente estos gadget van en los lados laterales, por lo que buscaremos las diviciones de sidebar-wrapper y es donde sera puesto nuestros section:


<div id='sidebar-wrapper'>
<b:section class='sidebar1' id='sidebar2' preferred='yes'>
</div>



Si nuestro blog se ha iniciado desde el principio, es decir, que vamos creando nuestro trabajo a nuestra manera, con nuestro propio código; no habrá problemas para verlo a simple vista, que este lugar no tenga nada, pero, si es una de las plantillas de blogger, el código que se encuentre sera como el que se muestra:


<div id='sidebar-wrapper'>
<b:section class='sidebar2' id='sidebar2' preferred='yes'>
<b:widget id='PlusOne1' locked='false' title='+1 Button' type='PlusOne'>
<b:includable id='main'>

<div class='widget-content'>
<g:plusone expr:annotation='data:annotation' expr:href='data:blog.canonicalHomepageUrl'  expr:size='data:size' source='blogger:blog:plusone' width='250'/>

<script type='text/javascript'>
window.___gcfg = {&quot;lang&quot;: &quot;<data:language/>&quot;};
</script>
</div>

</b:includable>
</b:widget>
<b:widget id='HTML2' locked='false' title='' type='HTML'>
<b:includable id='main'>
<!-- only display title if it's non-empty -->
<b:if cond='data:title != &quot;&quot;'>
<h2 class='title'><data:title/></h2>
</b:if>
<div class='widget-content'>
<data:content/>
</div>

<b:include name='quickedit'/>
</b:includable>
</b:widget>
</b:section>
</div>



Como podemos observar que en esta lista de gadget tenemos un boton de Google Plus y el gadget de añadir código html.

Para terminar podemos trabajar con nuestro footer-wrapper o pie de pagina, todos los pasos son los mismo que ya se mencionaron, las etiquetas footer se encontraran al final del código de blogger.


Transition en css3



En este tutorial hablaremos acerca de las transiciones que se pueden hacer con CSS3. Los parámetros que utilizaremos serán:

transition: [propiedades][tiempo][función de tiempo][retardo] ;

El parámetro de propiedades nos permitirá elegir el parámetro que queramos modificar, los mas usuales son width, height, background y border. El más conveniente es utilizar all, que incluye todos los parámetros, como lo habíamos presentado en el tutorial anterior menu scale-all CSS3.

El parámetro de tiempo nos permitirá ver el tiempo de animación en que tardara este en ejecutarse, esta en segundos:

transition-duration: 1s;

El parámetro función de tiempo simplemente una curva de aceleración que se emplea para acelerar o ir mas lento al empezar la animación; algunas funciones son ease, lineal, ease in.

El parámetro retardo define cuan la transición se iniciara.

Para trabajar con este tipo de estilos, necesitamos hover, que nos permitirá ver estos efectos al pasar el cursor encima de ella. Para practicar con estos estilos necesitamos primero declarar los parametros de  tiempo, funcion y retardo, si es necesario las propiedades de cada uno o simplemente podemos poner all, el codigo que se insertara sera el siguiente:

transition-property: all; Este es el parámetro de propiedades

transition-duration: 0.5s; Este es el parámetro de tiempo

transition-timing-function: ease; Este es el parámetro de función

transition-delay: 2s; Este es el parámetro de retardo


Esto quiere decir que la transición comenzara a partir de dos segundos y tambien regresara a su forma normal en dos segundos, el efecto se completara en 0.5 segundos.

Los parámetros de propiedades se declaran de manera normal con un hover, las propiedades que pueden ser modificadas son varias:

background-color
background-image
background-position
border-bottom-color
border-bottom-width
border-color
border-left-color
border-left-width
border-right-color
border-right-width
border-spacing
border-top-color
border-top-width
border-width
bottom
color
font-size
font-weight
height
left
margin-bottom
margin-left
margin-right
margin-top
opacity
padding-bottom
padding-left
padding-right
padding-top
right
text-indent
text-shadow
top
visibility
width
word-spacing
z-index
zoom

Como siempre se ha dicho no hay mejor que la practica para comprender este tipo de estilo; insertamos en nuestro body el siguiente codigo:


<div id="ejemplotransitione">
</div>


Insertamos en nuestra hoja de estilos el siguiente código del que habíamos comentado:

#ejemplotransitione
{
width:100px;
height:50px;
background: #03F;
border-color:#FFFFFF;
border-style:solid;
border-width:2px;
text-shadow:#666666 3px 3px 3px;

transition-duration: 1s;/* Firefox 4 */
-moz-transition-duration: 1s; /* Firefox 4 */ /* Safari and Chrome */
-webkit-transition-duration:1s; /* Safari and Chrome *//* Opera */
-o-transition-duration: 1s; /* Opera */
transition-property: all;
-webkit-transition-property:all;
-o-transition-property:all;
-moz-transition-property:all;
transition-delay:1s;
-webkit-transition-delay: 1s;
-o-transition-delay:1s;
-moz-transition-delay:1s;
}

El efecto se visualiza al ingresar el cursor; esto se logra por medio de hover:

#ejemplotransitione:hover
{
width:200px;
border-top-width:50px;
border-right-width:30px;
border-left-width:30px;
border-bottom-width:30px;
background: #0CC;
border-bottom-color: #FF0;
border-left-color:#6F9;
border-right-color: #F90;
border-top-color: #0C9;
font-size:20px 30%;
text-shadow:#F0F 6px 6px 6px;

}





Como vemos en hover se ponen todos los parámetros de todas las propiedades que queramos manipular el efecto que se consigue es el siguiente anteponiendo que en unas versiones de Internet Explorer no soporta este tipo de estilos, por lo que es necesario instalar chrome como navegador:

Ejemplo

Como vemos el efecto comienza a partir de un segundo que se logra por medio del parámetro delay. La transición en que tarda en dar el ciclo completo es de un segundo y las propiedades como habíamos declarado son todas, sin embargo todas nuestras declaraciones de propiedades las hicimos en hover, ahi podemos escribir los parámetros que queramos animar.


A continuación  realizaremos un ejemplo tipo menu en cual emplearemos mas propiedades para ver su funcionamiento:



<div id="solo">

<ul id="menu-transition">

<li id="trasicionuno" ><a href="#">casa</a></li>

<li id="trasiciondos" ><a href="#">Contacto</a></li>

<li id="trasiciontres" ><a href="#">Mensajes</a> </li>

<li id="trasicioncuatro" ><a href="#">Seres</a> </li>

</ul>



</div>

Insertamos en nuestra hoja de estilos:
ul, ol{

list-style:none;

}

#menu-transition li a{
color:#FFFF33;
text-decoration:none;
}

#menu-transition > li{
float:left;
}

#trasicionuno {
margin:0 auto;
width:70px;
height:30px;
background:#C90;
border-color: #fc0;
border-style:solid;
border-width:25px 20px 10px 20px;
box-shadow:inset 1px 1px 20px #963;
-moz-box-shadow:inset 10px 10px 10px #333;
webkit-box-shadow:inset 10px 10px 10px #333;
transition-duration: 1s;
-moz-transition-duration: 1s;
-webkit-transition-duration: 1s;
-o-transition-duration: 1s;
}

#trasicionuno:hover
{
padding:10px;
}
#trasiciondos {

margin:0 auto;
width:70px;
height:30px;
background:#C90;
border-color: #F93;
border-style:solid;
border-width:10px 20px 25px 20px;
box-shadow:inset 1px 1px 20px #963;
-moz-box-shadow:inset 10px 10px 10px #333;
webkit-box-shadow:inset 10px 10px 10px #333;
transition-duration: 1s;/* Firefox 4 */
-moz-transition-duration: 1s; /* Firefox 4 */ /* Safari and Chrome */
-webkit-transition-duration: 1s; /* Safari and Chrome *//* Opera */
-o-transition-duration: 1s;
}
#trasiciondos:hover
{
border-width:25px 20px 10px 20px;
background: #C96;
border-color: #FF6;
}


#trasiciontres {
margin:0 auto;
width:70px;
height:30px;
background:#C90;
border-color: #fc0;
border-style:solid;
border-width:25px 20px 10px 20px;
box-shadow:inset 1px 1px 20px #963;
-moz-box-shadow:inset 10px 10px 10px #333;
webkit-box-shadow:inset 10px 10px 10px #333;
transition-duration: 0.5s;
-moz-transition-duration: 0.5s;
-webkit-transition-duration: 0.5s;
-o-transition-duration: 0.5s;
}
#trasiciontres:hover{
border-width:15px 10px 10px 10px;
color:#99FF33;
}

#trasicioncuatro {
margin:0 auto;
width:70px;
height:30px;
background:#C90;
border-color: #F93;
border-style:solid;
border-width:10px 20px 25px 20px;
box-shadow:inset 1px 1px 20px #963;
-moz-box-shadow:inset 10px 10px 10px #333;
webkit-box-shadow:inset 10px 10px 10px #333;
transition-duration: 1s;
-moz-transition-duration: 1s;
-webkit-transition-duration: 1s;
-o-transition-duration: 1s;
}

#trasicioncuatro:hover{
border-width:25px 20px 10px 20px;
background: #C96;
border-color: #FF6;
}

#solo{

width:auto;
height:68px;
background:#C90;
margin-left:-10px;
margin-right:-10px;
}
#menu-transition{
box-shadow: 10px 10px 20px #963;
-moz-box-shadow: 10px 10px 10px #333;
webkit-box-shadow: 10px 10px 10px #333;
}

Menu scale-all en CSS3

Seguimos practicando en CSS3 elegantes estilos para nuestras paginas web, como ya habíamos mencionado uno de los estilos que se utilizan es la transformación:

transform: función(parametros);

En este caso la función que emplearemos sera “scale” en el cual podremos aumentar o disminuir nuestros elementos:

EJEMPLO transform: scale(2);

Diferentes funciones se pueden utilizar,

scaleX(x) y scaleY(y):

son lo mismo pero sólo afectan al ancho (X) o el alto (Y), es decir, que si queremos que solo aumente o disminuya de tamaño en uno de sus orígenes, debemos declarar solo un valor. En la siguiente declaración podemos manejar los dos valores juntos,

scale(x,y):

donde el valor de nuestro parámetro normal es 1; por ejemplo cuando el valor es 1.5 aumenta un 50% o si el valor es 0.5 el elemento disminuiría un 50%. Si se le aplica un valor solamente el aumento sera proporciona en ambos lados, si se aplica los dos valores,  aumentara como queramos, ya sea mas grande de altura o de ancho. Empezamos a insertar nuestro codigo para entender este tipo de stilos que nos proporciona la versión 3 de css,



<div id="scale">
EJEMPLO
</div>

insertamos en nuestra hoja de estilos:


<style>
#scale{
margin:150px;

box-shadow:inset 2px 5px 25px   #333333;
 -moz-box-shadow:inset 2px 5px 25px #FFF;
 webkit-box-shadow:inset 2px 5px 25px #FFF;
width:100px;
height:100px;
background:#06F;
}
#scale:hover{
-moz-transform: scale(2,2.5)  ;
-webkit-transform: scale(2,2.5) ;
-o-transform: scale(2,2.5) ;
-ms-transform: scale(2,2.5) ;
transform: scale (2,2.5);
}
</style>

El efecto nos quedara de la siguiente forma:
EJEMPLO transform: scale (2,2.5);
Como observamos manejamos nuestro dos valores de coordenadas,  si solo utilizamos un valor el incremento sera proporcional como aparece en el comienzo de este tema. Podemos disminuir nuestra divición de contenido como se muestra a continuación
EJEMPLO transform: scale (0.8,0.5);
Al utilizar un valor de coordenadas especifico (de un solo valor) nos quedaría de la siguiente manera, donde vemos que es igual el aumento de tamaño en el ancho del elemento div.
EJEMPLO transform: scaleX(2);

Podemos jugar con todos los valores posibles de scale y hacer diferentes diseños gráficos.  En el siguiente ejemplo hacemos un menu que nos permita visualizar un poco de lo que ya hemos escrito en tutoriales anteriores y del presente que se esta leyendo.
**********************************************************



Insertamos en nuestro body para tener el menu que se muestra:




<div id="uno">
<ul div="caja1">
<li id="solo3"></li>
<li id="solo2"></li>
<li id="solo1"></li>
<li id="o">Mensajes</li>
<li id="b">Servicios</li>
<li id="c">Contacto</li>
<li id="d">Producto</li>
<li id="solo4"></li>
<li id="solo5"></li>
<li id="solo6"></li>
</ul>
</div>




body{
background:#1a1a1a;
}
/*El elemento de lista ul y li son reseteado para no tener ningun estilo de lista */
ul, li {
  list-style:none;
}
/*Configuarmoa algunos estilos del elemnto li, como es: el tipo y tamaño de la fuente
y el padding de nuestra caja de li*/
li{
font-family: "Comic Sans MS", cursive;
font-size:10px;
padding:15px;
display:inline-block;/*Flotamos los elementos*/
vertical-align: top;/*Evitar problemas de alineacion*/
}
 /*Ingresamos valores iniciales a los elementos li de id="o" como son la sombra (shadow), la rotacion del elemento, el ancho, alto y el color de fondo*/
 #o{
box-shadow:2px 5px 25px   #333333;
-moz-box-shadow:2px 5px 25px #FFF;
webkit-box-shadow:2px 5px 25px #FFF;
width:40px;
height:40px;
background:#06F;
-moz-transform:  rotate(10deg) ;
-webkit-transform:  rotate(10deg);
-o-transform:  rotate(10deg);
-ms-transform:  rotate(10deg);
 }
  /*Ingresamos valores cuando el puntero ingresa al elemnto li, en esta parte es usado la propiedad scale que a parte de expandirse tambien girara al elemento inclinado, poniendolo en posicion natural sin la propiedad rotate.*/
#o:hover{
-moz-transform: scale(3) ;
-webkit-transform: scale(3);
-o-transform: scale(3);
-ms-transform: scale(3);
transform: scale(0.5);
-moz-transition: all 0.5s;
-webkit-transition: all 0.5s;
-o-transition: all 0.5s;
-ms-transition: all 0.5s;
transition: all 0.5s;
text-decoration: underline;/*Se muestra una linea en el texto*/
 }
  /*Ingresamos valores iniciales a los elementos li de id="b" como son la sombra, la rotacion del elemento y la transicion de la animacion que es de un segundo.*/
 #b{
transform:  rotate(350deg) ;
-moz-transform:  rotate(350deg) ;
-webkit-transform:  rotate(350deg);
-o-transform:  rotate(350deg);
-ms-transform:  rotate(350deg);
box-shadow:2px 5px 25px   #333333;
-moz-box-shadow:2px 5px 25px #FFF;
 webkit-box-shadow:2px 5px 25px #FFF;
width:40px;
height:40px;
background: #FFF;
-webkit-transition-duration:1s;//Velocidad de giro
-o-transition-duration:1s;
-moz-transition-duration:1s;
transition-duration:1s;

 }
 /*Ingresamos valores cuando el puntero ingresa al elemnto li, en esta parte es usado la propiedad scale que a parte de expandirse 3 tambien girara al elemento inclinado, poniendolo en posicion natural sin la propiedad rotate.*/
#b:hover{
text-decoration: underline;
-moz-transform: scale(3);
-webkit-transform: scale(3);
-o-transform: scale(3);
-ms-transform: scale(3);
z-index: 10 !important;
position: relative;
}
  /*Ingresamos valores iniciales a los elementos li de id="c" como son la sombra (shadow), la rotacion del elemento, el ancho, alto y el color de fondo*/
 #c{
transform:  rotate(10deg) ;
-moz-transform:  rotate(10deg) ;
-webkit-transform:  rotate(10deg);
-o-transform:  rotate(10deg);
-ms-transform:  rotate(10deg);
text-decoration: underline;
box-shadow:2px 5px 25px   #333333;
 -moz-box-shadow:2px 5px 25px #FFF;
 webkit-box-shadow:2px 5px 25px #FFF;
width:40px;
height:40px;
background:#06F;

 }
 /*Ingresamos valores cuando el puntero ingresa al elemnto li, en esta parte es usado la propiedad scale que a parte de expandirse tambien girara al elemento inclinado, poniendolo en posicion natural sin la propiedad rotate.*/
 #c:hover{
text-decoration: underline;
-moz-transform: scale(3) ;
-webkit-transform: scale(3) ;
-o-transform: scale(3) ;
-ms-transform: scale(3) ;
z-index: 10 !important;/*Para que no quede atras de los elemento que le preceden, evitando su choque*/
position: relative;/*Posicionando la caja para ayudar a z-index, esta hace que su caja salga de su contexto*/
 }
 /*Ingresamos valores iniciales a los elementos li de id="d" como son la sombra (shadow), la rotacion del elemento, el ancho, alto y el color de fondo. Tambien agregamos el tiempo de transicion*/
#d{
transform:  rotate(350deg) ;
-moz-transform:  rotate(350deg) ;
-webkit-transform:  rotate(350deg);
-o-transform:  rotate(350deg);
-ms-transform:  rotate(350deg);
box-shadow:2px 5px 25px   #333333;
-moz-box-shadow:2px 5px 25px #FFF;
webkit-box-shadow:2px 5px 25px #FFF;
width:40px;
height:40px;
background:#fff;
-moz-transition: all 0.2s;
-webkit-transition: all 0.2s;
-o-transition: all 0.2s;
-ms-transition: all 0.2s;
transition: all 0.2s;

 }
  /*Ingresamos valores cuando el puntero ingresa al elemnto li, en esta parte es usado la propiedad scale que a parte de expandirse tambien girara al elemento inclinado, poniendolo en posicion natural sin la propiedad rotate.*/
 #d:hover{
-moz-transform: scale(3);
-webkit-transform: scale(3);
-o-transform: scale(3);
-ms-transform: scale(3);
transform: scale(3);
text-decoration: underline;
z-index: 10 !important;
position: relative;
}
/*Ingresamos valores a elementos que no tienen animacion al ingresar el raton, solo tenemos condiciones iniciales como la rotacion de elemento, el tamano del elemnto li, la sombra y el color del fondo*/
  #solo1{
box-shadow:0px 2px 15px   #333333;
-moz-box-shadow:0px 2px 15px   #333333;
webkit-box-shadow:0px 2px 15px   #333333;
width:20px;
height:20px;
background:#FFF;}
/*Ingresamos valores a elementos que no tienen animacion al ingresar el raton, solo tenemos condiciones iniciales como la rotacion de elemento, el tamano del elemnto li, la sombra y el color del fondo*/
#solo2{
box-shadow:0px 2px 15px   #333333;
-moz-box-shadow:0px 2px 15px   #333333;
webkit-box-shadow:0px 2px 15px   #333333;
-webkit-transform: rotate(100deg);
-o-transform:  rotate(100deg);
-ms-transform: rotate(100deg);
width:10px;
height:10px;
background:#06F;
}
/*Ingresamos valores a elementos que no tienen animacion al ingresar el raton, solo tenemos condiciones iniciales como la rotacion de elemento, el tamano del elemnto li, la sombra y el color del fondo*/
#solo3{
box-shadow:0px 2px 15px   #333333;
-moz-box-shadow:0px 2px 15px   #333333;
webkit-box-shadow:0px 2px 15px   #333333;
-webkit-transform: rotate(100deg);
-o-transform:  rotate(100deg);
-ms-transform: rotate(100deg);
width:5px;
height:5px;
background:#FFF;
}
#uno{
padding:5px;
margin:100px;
width:590px;
height:100px;
background-image: url(../../../Documents/neon/Luces/SCALE3.jpg)/*insertamos la imagen que queramos */
}
/*Ingresamos valores a elementos que no tienen animacion al ingresar el raton, solo tenemos condiciones iniciales como la rotacion de elemento, el tamano del elemnto li, la sombra y el color del fondo*/
#solo4{
box-shadow:0px 2px 15px   #333333;
 -moz-box-shadow:0px 2px 15px   #333333;
 webkit-box-shadow:0px 2px 15px   #333333;
width:20px;
height:20px;
background:#06F;
}
/*Ingresamos valores a elementos que no tienen animacion al ingresar el raton, solo tenemos condiciones iniciales como la rotacion de elemento, el tamano del elemnto li, la sombra y el color del fondo*/
#solo5{
box-shadow:0px 2px 15px   #333333;
 -moz-box-shadow:0px 2px 15px   #333333;
 webkit-box-shadow:0px 2px 15px   #333333;
-webkit-transform: rotate(100deg);
-o-transform:  rotate(100deg);
-ms-transform: rotate(100deg);
width:10px;
height:10px;
background:#fff;
}
/*Ingresamos valores a elementos que no tienen animacion al ingresar el raton, solo tenemos condiciones iniciales como la rotacion de elemento, el tamano del elemnto li, la sombra y el color del fondo*/
#solo6{
box-shadow:0px 2px 15px   #333333;
 -moz-box-shadow:0px 2px 15px   #333333;
 webkit-box-shadow:0px 2px 15px   #333333;
-webkit-transform: rotate(100deg);
-o-transform:  rotate(100deg);
-ms-transform: rotate(100deg);
width:5px;
height:5px;
background:#06F;
   }



Es bastante el código que se plantea, los cuadro que se encuentran en los lados laterales se  giran con nuestras cascadas que dicen solo5, solo6 etc. El menu quedaria de la siguiente manera:
  • Mensajes
  • Servicios
  • Contacto
  • Producto