Ir al contenido principal

Las bondades del CSS3: transition y transform

   Por supuesto seguimos con la página de ejemplo Las Edades de la Tierra. En esta ocasión voy a comentar cómo animar los enlaces (aunque realmente no es necesario que sean enlaces) sin la necesidad de usar javascript. Con CSS (CSS3) la tarea es relativamente sencilla. En la página de ejemplo podéis ver que tanto en la sección principal (a la izquierda), que abre las explicaciones sobre las diferentes eras y eones, como en la sección de de enlaces, al pasar el puntero del ratón sobre ellos, estos se hacen más grandes, se transforman a una escala mayor y, lo mejor, es que no es necesario usar javascript para realizar el efecto, basta con unas pocas líneas en el CSS. Aviso que en el IE funciona pero regular (no realiza el efecto de transición suave, por lo menos en la versión 9).

   Vayamos al grano, el efecto se consigue combinando las propiedades transition y transform, con las cuales podemos realizar animaciones muy buenas. En el caso del ejemplo de la página web Las Edades de la Tierra, el efecto se realiza con las siguientes lineas en CSS3:

   En el caso de los enlaces de la derecha:

#enlaces a {
    display:block;!important;
    -ms-transition:-ms-transform 300ms ease-out;
    -webkit-transition:-webkit-transform 300ms ease-out;
    transition:transform 300ms ease-out;
}
#enlaces a:hover, #enlaces a:focus {
    -ms-transform: scale(1.4);
    -webkit-transform: scale(1.4);
    transform: scale(1.4);
}


   En el caso de zona principal (a la izquierda):

.menu1 li {
    display:block!important;
    -ms-transition:-ms-transform 300ms ease-out;
    -webkit-transition:-webkit-transform 300ms ease-out;
    transition:transform 300ms ease-out;
    cursor: pointer;
}

.menu1 li:hover, .menu1 li:focus {
    -ms-transform: scale(1.1);
    -webkit-transform: scale(1.1);
    transform: scale(1.1);   
}

   Vamos a ver primero  '#enlaces a' y '.menu1 li' que sería dar el formato inicial a los elementos 'a' y 'li' de nuestro HTML.
Primera linea: 'display:block;!important;'. En este caso en concreto  queremos agrandar el tamaño de la letra sobre la cual colocamos el puntero del ratón por lo cual es necesario tener el espacio suficiente cuando esto ocurra, por eso es importante esta linea, sino, la transformación no ocurrirá. La segunda y tercera lineas no las comento porque son lo mismo que la cuarta, pero con los modificadores necesarios para que funcione en navegadores como el IE, el Safari y el Chrome.
La cuarta linea: 'transition:transform 300ms ease-out;'. Aquí está lo importante, definimos a que elemento del CSS aplicamos la transición (a transform), cuanto tiempo durará (300ms) y que se realizará de la manera ease-out (con un final lento). Más sobre esto en w3schools. En la última linea de '.menu1 li' incluyo 'cursor:pointer' porque li no es un enlace propiamente dicho, como lo es a, así que le doy apariencia de enlace al cursor (o al puntero del ratón) cuando este se sitúa encima del elemento.

   Vamos a la segunda parte, '#enlaces a:hover, #enlaces a:focus' y '.menu1 li:hover, .menu1 li:focus' que sería el formato de a y li cuando el puntero del ratón (o el cursor) se sitúa encima del elemento. En este caso con una linea nos sobra (bueno, más si queremos que nos funcione en varios navegadores). La linea es 'transform: scale(1.1);'. En este caso queremos que la transformación haga una escala del elemento, la cual se realizará con las pautas marcadas en transition (ver más posibilidades en w3schools). Y, creo que esto es todo.

Comentarios

  1. Borgata Hotel Casino & Spa - Mapyro
    Borgata Hotel Casino & 오산 출장마사지 Spa Rooms with a 논산 출장안마 maximum of 2 guests. This hotel 안산 출장안마 is located in the center 남양주 출장마사지 of Atlantic 상주 출장샵 City and offers 566 rooms. A

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Leer un archivo XML con jQuery y javascript y modificar un HTML con su contenido

   Una manera muy interesante y fácil de modificar los textos de tu página web. Si, por ejemplo, tenemos una página donde cambiamos a menudo unas noticias que tenemos en el margen derecho, podríamos tener un código HTML como este:    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Manejar archivo XML</title> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> <script src="leerxml.js"></script> <link rel="stylesheet" href="estilos.css"> </head> <body> <h1>Titulo de la página</h1> <div id="derecha"> <div class="noticias"> <div class="prim

Recargar div con efecto de aparición suave (Fade In) en jQuery

  En este post continúo con el código que describí en el segundo post sobre cómo refrescar un div sin necesidad de refrescar toda la página, pero añadiéndole unas lineas para este se aparezca de forma suave. La página de ejemplo es http://www.talleresguadamia.com y el código es el que sigue: <script type="text/javascript"> $(document).ready(function(){    $("#contenido a").each(function(){       var href = $(this).attr("href");       $(this).attr({ href: "#"});       $(this).click(function(event){                  $("#contenido").css("display","none");          $("#contenido").load(href).fadeIn(700);        });    }); });; </script>   Podéis ver lo fácil que es. Hemos agregado sólo dos cosas:   - La linea  "$('#contenido').css('display','none')", que lo único que hace es cambiar la propiedad css "display" del div "#contenido&q

Código jQuery para ver una imagen al pasar el ratón sobre un enlace.

   Voy a explicar un código en jQuery , para que, al pasar el puntero del mouse sobre un enlace o, en este caso, sobre un texto cualquiera (sin necesidad de ser un enlace), se nos muestre una imagen cerca del enlace y que esta desaparezca al retirar el puntero del mouse (sin necesidad de hacer click sobre él). Podéis pensar que me estoy repitiendo con un anterior post. Casi que si. Pero la diferencia es que, en este caso, no sabemos donde estará situada la imagen. Es decir que, dependiendo de la situación de la pantalla donde esté el enlace o texto, allí se mostrará la imagen.    Vamos al grano. Primero el código en HTML:       <span class="enlace" title="hyneria.png">Hyneria</span>    Podéis ver que, en este caso, no se trata de un enlace. Le pongo el nombre de 'enlace' a la clase porque en el CSS le doy apariencia de enlace. Aquí lo importante es 'title' el cual contiene el nombre de la imagen que queremos mostrar (pod