89 votes

Effet de "surbrillance clignotante" jQuery sur un div ?

Je cherche un moyen de faire ce qui suit.

J'ajoute un <div> à une page, et un callback ajax renvoie une valeur. Le site <div> est rempli avec les valeurs de l'appel ajax, et l'élément <div> est ensuite ajouté à un autre <div> qui fait office de colonne de table.

Je voudrais attirer l'attention de l'utilisateur, lui montrer qu'il y a quelque chose de nouveau sur la page.
Je veux le <div> pour clignoter, non pas pour afficher/cacher, mais pour mettre en évidence/déclater pendant un certain temps, disons 5 secondes.

J'ai regardé le plugin blink, mais d'après ce que j'ai vu, il ne fait que montrer/cacher un élément.

En fait, la solution doit être multi-navigateurs, et oui, IE est malheureusement inclus. Je vais probablement devoir bidouiller un peu pour que ça marche dans IE, mais globalement ça doit marcher.

4 votes

S'il vous plaît, ne le faites pas. Si vous devez le faire, mettez-le simplement en évidence avec l'effet de surbrillance ( docs.jquery.com/UI/Effects/Highlight ), mais ne le faites pas clignoter.

1 votes

@tv Je pense que deux ou trois petits "clignotements" (où un "clignotement" est, espérons-le, quelque chose de subtil, comme une bordure animée qui brille ou quelque chose comme ça) sont OK et pas irritants, mais des clignotements à l'ancienne sur une longue période de temps seraient mauvais.

1 votes

Hehe, je sais que cligner des yeux est irritant, mais ça a un but ici. L'utilisateur n'est pas censé rester assis devant l'écran toute la journée, il doit donc voir si quelque chose a changé à distance.

177voto

sled Points 8468

jQuery UI Effet de surbrillance est ce que vous recherchez.

$("div").click(function () {
      $(this).effect("highlight", {}, 3000);
});

La documentation et la démo peuvent être trouvées aquí


Editar :
Peut-être que le jQuery UI Effet pulsé est plus approprié, voir aquí


Edit #2 :
Pour ajuster l'opacité, vous pouvez faire ceci :

$("div").click(function() {
  // do fading 3 times
  for(i=0;i<3;i++) {
    $(this).fadeTo('slow', 0.5).fadeTo('slow', 1.0);
  }
});

...pour qu'il ne descende pas en dessous de 50% d'opacité.

1 votes

Pulsate est ce que je recherche. Merci beaucoup. Y a-t-il un moyen de l'empêcher de s'éteindre complètement ? Juste pour s'estomper, disons jusqu'à 50% d'opacité ? Peut-être juste pour enchaîner l'effet de surbrillance plusieurs fois ?

34voto

Alternegro Points 521

Jetez un coup d'œil à http://jqueryui.com/demos/effect/ . Il a un effet nommé pulsate qui fera exactement ce que vous voulez.

$("#trigger").change(function() {$("#div_you_want_to_blink").effect("pulsate");});

30voto

Ajey Points 1059

C'est un effet de clignotement personnalisé que j'ai créé, qui utilise setInterval y fadeTo

HTML -

<div id="box">Box</div>

JS -

setInterval(function(){blink()}, 1000);

    function blink() {
        $("#box").fadeTo(100, 0.1).fadeTo(200, 1.0);
    }

Aussi simple que cela puisse paraître.

http://jsfiddle.net/Ajey/25Wfn/

1 votes

Fonctionne très bien ! Et pas besoin de JQuery UI.

0 votes

Excellente solution ! Elle fonctionne sans aucun problème avec Jquery. Merci

0 votes

C'est la meilleure solution ici !

19voto

lulalala Points 3895

Pour ceux qui ne veulent pas inclure l'ensemble de jQuery UI, vous pouvez utiliser jQuery.pulse.js à la place.

Pour avoir une animation en boucle du changement d'opacité, faites ceci :

$('#target').pulse({opacity: 0.8}, {duration : 100, pulses : 5});

Il est léger (moins de 1kb), et vous permet de mettre en boucle tout type d'animation.

1 votes

Il faut toujours utiliser les "effets" de jQuery UI.

1 votes

@JeromeJaglale Je l'utilise sans jQuery UI, puisque le changement d'opacité peut être fait dans jQuery seul. Il devrait en être de même pour vous, sauf si vous utilisez des animations spécifiques à jQuery UI.

1 votes

Bon point. J'ai été induit en erreur par la première démo (texte pulsant en rouge) qui nécessite jQuery UI Effects.

6voto

ghoppe Points 10004

Vous pouvez vous intéresser à jQuery UI. Plus précisément, l'effet de surbrillance :

http://jqueryui.com/demos/effect/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X