Ver Mensaje Individual
  #2 (permalink)  
Antiguo 12/09/2015, 11:48
Avatar de fede5426
fede5426
 
Fecha de Ingreso: diciembre-2014
Ubicación: Córdoba
Mensajes: 446
Antigüedad: 9 años, 5 meses
Puntos: 208
Respuesta: Hacer que el icono del menu cambie al abrirse este

Yo lo haría así:

Código HTML:
Ver original
  1. <div class="boton">
  2.     <div id="linea1" class="linea"></div>
  3.     <div id="linea2" class="linea"></div>
  4.     <div id="linea3" class="linea"></div>
  5. </div>

Código CSS:
Ver original
  1. *{box-sizing:border-box}
  2.  
  3. .boton{
  4.     width:150px;
  5.     margin:2em auto;
  6.     text-align:center;
  7.     background-color:#161616;
  8.     padding:.5em 1em;
  9.     cursor:pointer;
  10. }
  11.  
  12. .linea{
  13.     width:100%;
  14.     border:3px solid #fff;
  15.     margin:2em auto;
  16.     transition:all .3s ease;
  17. }
  18.  
  19. .boton:hover #linea1,
  20. .boton:hover #linea3{
  21.     width:75%;
  22. }
  23.  
  24. .boton:hover .linea{
  25.     border-color:#B20C1D;
  26. }

Código Javascript:
Ver original
  1. var click = 0;
  2. $(".boton").click(function(){
  3.     if(click == 0){
  4.         click = 1;
  5.         $("#linea1").css({
  6.                 transform: "rotate(45deg) translate(28px, 25px)"
  7.         });
  8.         $("#linea2").css({
  9.                 opacity: "0"
  10.         });
  11.         $("#linea3").css({
  12.                 transform: "rotate(-45deg) translate(28px, -25px)"
  13.         });
  14.     } else {
  15.             click = 0;
  16.             $("#linea1").css({
  17.                     transform: "rotate(0deg) translate(0, 0)"
  18.             });
  19.             $("#linea2").css({
  20.                     opacity: "1"
  21.             });
  22.             $("#linea3").css({
  23.                     transform: "rotate(0) translate(0, 0)"
  24.             });
  25.         }
  26. });


Las lineas se animan con la propiedad transform de CSS, con más tiempo y un poco de imaginación se pueden hacer efectos un toque más rebuscados, por ejemplo que las lineas den un giro completo antes de formar la X..

Basicamente se indica con Jquery (o javascript puro, es igual) que al clickear sobre el elemento ".boton", los divs que forman las lineas roten y se acomoden para formar la X en el botón.

Te dejo un Pen, cualquier duda que tengas pregunta..

http://codepen.io/fede5426/pen/OyyGPb

Saludos