9
votes

Comment pouvons-nous ajouter CSS + animation dans jQuery?

Voici un petit extrait de ce que j'essaie de faire: XXX PRE>

Ceci pourrait être fait avec CSS: P>

var rmatrix = /matrix\(\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\)/;

jQuery.support.scaleTransformProp = (function() {
    var div = document.createElement('div');
    return div.style.MozTransform === '' ? 'MozTransform' : 
           div.style.WebkitTransform === '' ? 'WebkitTransform' :
           div.style.OTransform === '' ? 'OTransform' :
           div.style.MsTransform === '' ? 'MsTransform' :
           false;
})();

if (jQuery.support.scaleTransformProp) {

    jQuery.cssHooks['scale'] = {
        get: function(elem, computed, extra) {
            var transform = jQuery.curCSS(elem, jQuery.support.scaleTransformProp),
                m = transform.match(rmatrix);
            return m && parseFloat(m[1]) || 1.0;
        },
        set: function(elem, val) {
            var transform = jQuery.curCSS(elem, jQuery.support.scaleTransformProp);
            if (transform.match(rmatrix)) {
                elem.style[jQuery.support.scaleTransformProp]= transform.replace(rmatrix, function(m, $1, $2, $3, $4, $5, $6) {
                    return 'matrix(' + [val, $2, $3, val, $5, $6].join(',') + ')';
                });
            } else {            
            elem.style[jQuery.support.scaleTransformProp]= 'scale(' + val + ')';
            }
        }
    };

    jQuery.fx.step.scale = function(fx) {
        jQuery.cssHooks['scale'].set(fx.elem, fx.now)
    };

}

/*SEMENTARA*/
$('#why-red a').hover(function() {
    $(this).animate({ 
        'scale' : 1.1
        }, 200);    
    }, function() {
    $(this).animate({ 
        'scale': 1
        }, 200);
});


0 commentaires

5 Réponses :


4
votes

Vous ne pouvez pas utiliser de jQuery's's .animate () en conjonction avec CSS Transforms, au moins sans plugin, car la balance échelle () est non numérique et confondez-le.

Cependant, vous n'avez pas besoin de jQuery du tout pour l'effet que vous êtes après. Vous pouvez combiner -webkit-transformer avec -webkit-transition (et -moz et -o équivalents) pour L'animation se transforme directement dans CSS. Par exemple: xxx

(voir: http://www.the-art-of-web.com/css/css-animation/ )

Si vous souhaitez que vous puissiez pouvoir pouvoir être capable de Appliquez le CSS via JQuery's .CSS () On VOIR, mais cela n'est pas nécessaire. Ou si vous souhaitez appliquer des transitions CSS en utilisant jQuery: xxx


2 commentaires

Génial, mais cela semble loin pour IE: D.


@Adam, oui, il n'y a pas d'option CSS pour IE. Vous pouvez "dégrader gracieusement" cependant;)



0
votes

Voir les démos de JQuery ayant une excellente source.

http://jqueryui.com/demos/toggleclass/

Animation de couleur Animation de classe Montrer ma peau

juste à la volée ..


0 commentaires

2
votes

Si vous souhaitez .animer () Les transitions utilisées automatiquement lorsqu'elles sont disponibles (et une animation régulière autrement), vous devez consulter " Améliorer la fonction d'animation de JQuery pour utiliser automatiquement les transitions CSS3 ".

Responsentiel GitHub du plugin.


0 commentaires

0
votes

Une autre option à ceux mentionnés ci-dessus est Transit JS.

Utilisation de Transit JS Vous pouvez appeler ... P>

$('.className').transition({ scale: 1.0, duration: 400 });


0 commentaires

1
votes

Je sais que cette question a été posée il y a des années, mais j'ai trouvé une solution pour un problème similaire, j'ai donc décidé de partager. J'ai utilisé @ - webkit-keyframes code> pour créer 2 animations. un avec .mouseover code> et un avec .mouseout code>. Combinaison avec .AddClass code> et .RemoVeclass code> J'ai réussi à faire ce travail.

Voir exemple dans JSFIDDLE P>

ou ce code d'extraction: P>

p>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="why-red">
<a href="#">why-red a</a>
</div>


1 commentaires

Merci pour ce commentaire, c'est exactement ce que je cherchais.