Maison >interface Web >js tutoriel >Pourquoi animate() de jQuery ne parvient-il pas à animer la couleur d'arrière-plan au survol de la souris et comment puis-je y remédier ?

Pourquoi animate() de jQuery ne parvient-il pas à animer la couleur d'arrière-plan au survol de la souris et comment puis-je y remédier ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-26 09:56:20259parcourir

Why Does jQuery's animate() Fail to Animate Background Color on Mouseover, and How Can I Fix It?

jQuery : animer les changements de couleur d'arrière-plan au survol de la souris

Arrière-plan :

jQuery fournit une puissante méthode animate() pour gérer de manière transparente transitionnez diverses propriétés CSS au fil du temps. Cependant, tenter d'animer la propriété « background-color » entraîne souvent une erreur « Propriété non valide ».

Problème :

Lorsque vous essayez d'animer la couleur d'arrière-plan à l'aide jQuery au survol de la souris, vous pourriez rencontrer ceci erreur :

$(".usercontent").mouseover(function() {
    $(this).animate({ backgroundColor: "olive" }, "slow");
});

Solution :

Pour résoudre ce problème, il est nécessaire de charger le plugin de couleur jQuery, qui prend en charge l'animation de diverses propriétés de couleur. Voici comment l'implémenter :

// Include the jQuery color plugin


// Animate background color on mouseover using plugin
$(".usercontent").mouseover(function() {
    $(this).animate({ backgroundColor: "olive" }, "slow");
});

Implémentation du plugin :

Le plugin améliore la méthode principale jQuery animate() pour gérer les transitions de couleurs. Il vous permet de spécifier des valeurs de couleur dans différents formats, notamment les noms de couleurs RVB, hexadécimaux et CSS. Voici un extrait du plugin :

jQuery.each(["backgroundColor", "borderBottomColor", "borderLeftColor", "borderRightColor", "borderTopColor", "color", "outlineColor"], function (f, e) {
    jQuery.fx.step[e] = function (g) {
        ...
        g.elem.style[e] = "rgb(" + [Math.max(Math.min(parseInt((g.pos * (g.end[0] - g.start[0])) + g.start[0]), 255), 0), Math.max(Math.min(parseInt((g.pos * (g.end[1] - g.start[1])) + g.start[1]), 255), 0), Math.max(Math.min(parseInt((g.pos * (g.end[2] - g.start[2])) + g.start[2]), 255), 0)].join(",") + ")"
    }
});

Cette fonction étape calcule les valeurs de couleur de transition de manière incrémentielle, garantissant une animation fluide entre les couleurs de début et de fin.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn