Je voudrais déplacer un élément de menu sur 5px au passage de la souris et le faire revenir à sa position d'origine en utilisant Scriptaculous. J'utilise le callback afterFinish pour m'assurer que l'effet Move bump-out est terminé avant l'exécution de l'effet Move bump-back-in.Irrégularités de rappel scriptaculeuses avec effet de mouvement
Le problème est que l'élément ne revient pas à sa position d'origine si vous passez rapidement la souris sur plusieurs fois. Plus vous passez la souris, plus c'est fermé. Je pensais que c'était ce que le rappel afterFinish était censé empêcher. Il semble fonctionner correctement avec l'effet Morph, et il est censé fonctionner avec tous les effets Scriptaculous, comme indiqué ci-dessous:
Javascript - Scriptaculous - Effect Callback function
J'ai essayé d'utiliser des files d'attente d'effets, même résultat, et a passé plusieurs heures à parcourir divers forums pour m'aider à comprendre cela.
Voici l'exemple Morph qui fonctionne correctement:
<SCRIPT>
function morphMe(obj) {
new Effect.Morph($(obj), {
style: {
height: '200px',
width: '200px'},
afterFinish: function(){ new Effect.Morph($(obj), {
style: {
height: '20px',
width: '200px'}});
}
})
}
</SCRIPT>
<div id="bumptest" class="leftnav" style="position: absolute; left: 100px; width: 200px; border: 1px solid green" onmouseover="morphme(this);">Morph Me</div>
Voici l'exemple Move qui ne fonctionne pas comme prévu sur mouseover rapide et les aboutissants. Peut-être que j'ai besoin d'utiliser setTimeout mais je ne comprends pas pourquoi cela devrait être nécessaire.
<SCRIPT>
function OnFinish(obj){
new Effect.Move(obj.element.id, {x: -5, y: 0, duration: .4});
}
function bumpOut(myObject){
new Effect.Move(myObject,
{ x: 5,
y: 0,
duration: 0.4,
afterFinish: OnFinish,
});
}
</SCRIPT>
<div id="bumptest" class="leftnav" style="position: absolute; left: 100px; width: 200px; border: 1px solid green" onmouseover="bumpOut(this);">Bump me right and then back</div>
Toute aide, peut-être même un mod utilisant setTimeout ou un pointeur vers un script solide qui le fait déjà, est grandement apprécié.
Merci,
motorhobo
A ha. Je suppose que cela n'arrive pas avec les autres effets Scriptaculous parce qu'ils ont une position statique. Merci ... je n'aurais pas pensé à ça. – VanAlbert
Il ne s'agit pas de positions statiques ou absolues, car comme vous l'avez dit, le premier exemple (morphMe) fonctionne. C'est plutôt l'hypothèse "Quand je commence l'effet, l'objet concerné doit être dans son état normal/initial" qui ne tient pas. – giraff