Foros del Web » Creando para Internet » CSS »

Hacer que el icono del menu cambie al abrirse este

Estas en el tema de Hacer que el icono del menu cambie al abrirse este en el foro de CSS en Foros del Web. Hola. Estoy intentando hacer una web personal y quería crear un efecto que me ha parecido muy curioso, podéis verlo en esta web: http://www.petas.it/ Como ...
  #1 (permalink)  
Antiguo 12/09/2015, 06:29
 
Fecha de Ingreso: septiembre-2014
Mensajes: 72
Antigüedad: 9 años, 7 meses
Puntos: 0
Hacer que el icono del menu cambie al abrirse este

Hola.

Estoy intentando hacer una web personal y quería crear un efecto que me ha parecido muy curioso, podéis verlo en esta web:

http://www.petas.it/

Como veis arriba a la derecha, al hacer click en el boton, el icono y el color del menu cambian con una animación que me parece muy elegante. ¿Sabéis como podría hacerla? No quiero que me deis el código línea por línea, pero es que no se ni por donde empezar.

Muchas gracias y un saludo.
  #2 (permalink)  
Antiguo 12/09/2015, 11:48
Avatar de fede5426  
Fecha de Ingreso: diciembre-2014
Ubicación: Córdoba
Mensajes: 446
Antigüedad: 9 años, 4 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
  #3 (permalink)  
Antiguo 01/10/2015, 12:03
 
Fecha de Ingreso: septiembre-2014
Mensajes: 72
Antigüedad: 9 años, 7 meses
Puntos: 0
Respuesta: Hacer que el icono del menu cambie al abrirse este

Muchas gracias por tu respuesta.

¿Sabes por qué motivo al aplicar un float:right al botón para que aparezca a la derecha de la pantalla se anula el efecto hover? Es decir, si le aplico ese float, al pasar el ratón por encima no pasa nada.

Gracias de nuevo y un saludo.
  #4 (permalink)  
Antiguo 01/10/2015, 13:41
Avatar de AngelKrak  
Fecha de Ingreso: noviembre-2014
Mensajes: 917
Antigüedad: 9 años, 5 meses
Puntos: 91
Respuesta: Hacer que el icono del menu cambie al abrirse este

amigo si quieres aplicarle el float right crea un nuevo div y dale a ese el float ;)

Ejemplo:
http://codepen.io/AngelKrak/pen/rOyBmY

Etiquetas: color, icono
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:15.