Estoy desarrollando una aplicación web HTML5 para dispositivos móviles y me encontré con un poco de problemas con las animaciones de alta calidad.cómo animar sin problemas la altura en CSS o Javascript en dispositivos móviles
Esencialmente, cuando un usuario toca un botón, un cajón (un div con altura: 0px) debe animarse a una altura determinada (en píxeles) y el contenido se agregará a ese cajón. Si tiene una cuenta de Pinterest, puede ver la animación tal como está ahora, al http://m.pinterest.com (pulse el botón Comentar o Repintar).
El desafortunado problema es que en los dispositivos móviles, las transiciones no son Webkit acelerado por hardware de la propiedad de altura, por lo que su muy perezoso y la animación es irregular.
Éstos son algunos fragmentos de código:
HTML: ...
<div class="pin"> <a class="comment_btn mbtn" href="#" title="" ontouchstart="">Comment</a> <div class="comment_wrapper"> <div class="divider bottom_shadow"></div> <div class="comment"> <!-- Content appended here --> </div> <div class="divider top_shadow" style="margin-top: 0"></div> </div> </div> <div class="pin"> ... </div>
CSS:
.comment_wrapper { -webkit-transition: all 0.4s ease-in-out, height 0.4s ease-in-out; position: relative; overflow: hidden; width: 100%; float: left; height: 0; } .comment { background: #f4eeee; margin-left: -10px; padding: 10px; height: 100%; width: 100%; float: left; }
Javascript (usando jQuery):
function showSheet(button, wrapper, height) { // Animate the wrapper in. var css = wrapper.css({ 'height': height + 'px', 'overflow': 'visible', 'margin-bottom': '20px', 'margin-top': '10px' }); button.addClass('pressed'); } $('.comment_btn').click(function() { showSheet($(this), $(this).siblings('.comment_wrapper'), 150); });
Imágenes: http://imgur.com/nGcnS,btP3W
Estos son los problemas que tuve con Webkit transformaciones que no acabo de entender :
- Webkit Transforma escala de los niños del contenedor, lo que no es deseable para lo que estoy tratando de hacer.
-webkit-transform: none
aplicado a los niños no parece restablecer este comportamiento. - Webkit Transforms no mueve elementos hermanos. Entonces, el contenedor
.pin
después del que estamos operando no se mueve automáticamente. Esto se puede arreglar manualmente, pero es una molestia.
Gracias mucho!
Gracias mucho! Saber esto es bastante útil. Estoy bastante seguro de que voy a reconsiderar esta interacción, pero como referencia, ¿a qué te refieres al hacer que aparezca debajo de la pantalla con las transformaciones? –
Editado la respuesta con código de ejemplo, un ejemplo es el teclado virtual que se desliza desde la parte inferior de la pantalla. – Duopixel
Si usa 'translate3d (0, 100%, 0)' es aún más rápido porque la aceleración de hardware se activará :) – Timo