Ver Mensaje Individual
  #2 (permalink)  
Antiguo 04/11/2014, 20:07
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años, 1 mes
Puntos: 977
Respuesta: ¿Como hago esta animacion?

Esta sería una forma de hacerlo con código JS nativo, con la salvedad de que funciona en la mayoría de navegadores, pero, en IE, solo a partir de la versión 9.

Código HTML:
Ver original
  1. <div>
  2.     <input type = "text" />
  3. </div>

Código CSS:
Ver original
  1. div{
  2.     background: red;
  3.     width: 2.5%;
  4.     float: right;
  5.     cursor: pointer;
  6. }
  7.  
  8. div input{
  9.     opacity: 0;
  10.     width: 0;
  11. }

Código Javascript:
Ver original
  1. var div = document.querySelector("div"),
  2.     input = div.querySelector("input"),
  3.     body = document.body,
  4.     bodyWidth, divWidth;
  5.  
  6. div.addEventListener("click", function(){
  7.     bodyWidth = parseFloat(body.clientWidth);
  8.     divWidth = parseFloat(getComputedStyle(div).width);
  9.     if (divWidth == bodyWidth){
  10.         this.style.width = (bodyWidth * 0.025) + "px";
  11.         input.style.opacity = 0;
  12.         input.style.width = 0;
  13.     }
  14.     else{
  15.         this.style.width = bodyWidth + "px";
  16.         input.style.opacity = 1;
  17.         input.style.width = "auto";
  18.     }
  19. }, false);

Ahora, la explicación. En el documento, tenemos a una división, la cual contiene una caja de texto. En la hoja de estilos, le asigno el 2.5% del ancho del cuerpo del documento (el elemento padre) a la división y la alineo a la derecha, además, le doy 0 de opacidad a la caja de texto para que no se vea al inicio y 0 de ancho. En el código JS, tomo a ambos elementos, así como al cuerpo del documento y declaro dos variables que usaré más adelante.

Cuando demos un clic a la división, se ejecutará una función. En dicha función, tomo el ancho del cuerpo del documento y el de la división pero sin la unidad de medida, que en este caso es 'px', quedando solo la parte numérica. Luego, si el ancho de la división es igual al del cuerpo del documento, le asigno el 2.5% del mismo y desaparezco a la caja de texto, caso contrario, le asigno el ancho del cuerpo del documento a la división y hago visible a la caja de texto, además de asignarle un ancho automático (el cual es calculado por el navegador).

DEMO

Para obtener compatibilidad con navegadores antiguos (y que, por fortuna, cada vez son menos usados), revisa la documentación existente de los métodos y propiedades que utilicé.

También puedes consultar en CanIUse acerca de la compatibilidad con los navegadores más usados de los métodos y propiedades que utilicé, además, te recomiendo utilizar identificadores para trabajar con los elementos, así evitarás conflictos con otros elementos similares.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand