Con CSS3 las posibilidades enriquecer nuestras aplicaciones Web ha aumentado bastante. Ya tenemos la opción de crear animaciones desde nuestra hoja de estilos CSS.
Las animaciones con CSS3 tienen aceleración por hardware las cuales hacen que no consuman tantos recursos como lo hace Javascript. En un computador normal no se nota la diferencia, pero cuando se pasa a un celular ó dispositivo móvil se puede comprobar su poder y utilidad.
En lo personal creo que estas interacciones deberían ir en Javascript, el cual tiene más control de las acciones del usuario, flujos conducidos por una navegación, y estas cosas que están de moda hoy en día como el "progressive enhancement", "graceful degradation" y demás.
A razón de esto, desarrollé este plugin para jQuery que maneja animaciones para CSS3.
Plugin CSS3Animate para animaciones CSS3 con jQuery
Código :
/** * @author bipsa * @class CSS3 Jquery Plugin and Mobile handlers. */ ;(function($){ $.fn.isCSSAnimable = function (){ return true; } /** * @author Sebastian Romero * @param {Object} options */ $.fn.CSS3Animate = function(options){ var defaults = { "class" : "in", "oncomplete": null, "time": 1000, "property": "opacity", "css" : {}, "transition": "ease-in-out", "delay" : 0 }; var settings = $.extend({}, defaults, options); this.each(function(index, current){ var element = $(this); if ($("body").isCSSAnimable()) { if (typeof settings.property === "object") settings.property = settings.property.join(",") var cssApply = $.extend({}, { "-webkit-animation-timing-function": settings.transition, "-webkit-transition-duration": (settings.time / 1000) + "s", "-webkit-transition-property": settings.property, "-webkit-transition-delay": (settings.delay / 1000) + "s", "-moz-transition-duration": (settings.time / 1000) + "s", "-moz-transition-property" : settings.property }, settings.css); element.css(cssApply).addClass(settings["class"]); if (settings.oncomplete) element.transitionEnded(settings.oncomplete); } else { if(settings.oncomplete) element.animate(settings.css, settings.oncomplete); else element.animate(settings.css); } }); return this; }; /** * @author bipsa * @param {Function} onComplete */ $.fn.transitionEnded = function(onComplete){ this.each(function(index, current){ var element = $(this); var action = function (event) { if (onComplete) { onComplete(event, element); if((jQuery.browser.webkit != true)) element.get(0).removeEventListener('transitionend', action, false); else element.get(0).removeEventListener('webkitTransitionEnd', action, false); } }; if((jQuery.browser.webkit == true)) element.get(0).addEventListener('webkitTransitionEnd', action, false); else if (jQuery.browser.mozilla && (parseFloat(jQuery.browser.version.substr(0, 3)) > 1.9)) { element.get(0).addEventListener('transitionend', action, false); } else onComplete(null, element); }); return this; }; })(jQuery);
Cómo usar el plugin de animación CSS3 con jQuery
La implementación de este plugin es sencilla, solo se hace el selector y se llama el método CSSAnimate, como pueden notar el plugin ya valida si soporta CSS transitions, y de no soportarlo simplemente asigna los estilos a su selección.
Imaginemos que creas una clase llamada ".mySelector" que permitirá rotar un elemento HTML.
Código :
.mySelector { -moz-transform : rotate(0deg) scale(1) rotate(0deg); webkit-transform : rotate(0deg) scale(1) rotate(0deg); }
Código :
$(".mySelector").CSS3Animate({ "property": ["-moz-transform", "webkit-transform"], "transition-duration": 1000, "css": { "-moz-transform" : "rotate(350deg) scale(1) rotate(15deg)", "webkit-transform" : "rotate(350deg) scale(1) rotate(15deg)" }, "oncomplete" :function(){ alert("listo!") } });
Aquí puedes ver el ejemplo del plugin funcionando. (Google Chrome, Safari o Firefox 4 Beta)
Bueno espero que les guste,
Saludos a todos
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por carnicero el 06 de Octubre de 2010
Por Edna Rheiner el 06 de Octubre de 2010
http://www.tutorialesenlaweb.com/secciones/desarrollo-web/jquery-desarrollo-web/
Por klamylo el 07 de Octubre de 2010
Por Clark el 07 de Octubre de 2010
Por Otaku RzO el 07 de Octubre de 2010
Pero creo que el hecho de crear un plugin es para ahorrar líneas de código y sin embargo aun usas varias líneas al usar tu plugin.
Hubiera sido más practico usar para tu ejemplo:
Código :
Tendrías que detectar dentro de tu plugin el navegador y determinar el CSS correcto.No dudo que más adelante jQuery implemente el uso de CSS3 para sus animaciones (o quizás ya lo hizo en su jQuery Mobile, no estoy enterado).
Y para terminar, he visto pocas personas usando comentarios sobre sus funciones ¿usas algún editor de código que te ayuda en esto?
Por CristianGRojas el 24 de Febrero de 2011
Por Martuca el 20 de Abril de 2011
Por Alexis... el 16 de Junio de 2011
Salu2
Por angelb89 el 24 de Agosto de 2011
Por Cyber Net el 28 de Octubre de 2011
Por ivan el 05 de Diciembre de 2011
Por caravi el 06 de Diciembre de 2011
Por ggp el 29 de Febrero de 2012
Por pablo el 28 de Septiembre de 2012
Por Jean Carlos Ortega el 11 de Abril de 2013