11548 sujets

JavaScript, DOM et API Web HTML5

Slt tlm,

je suis en train de faire une fonction de popOver qui fait grandir ou rapetisser une div progressivement.

Voici la source

Seulement, j'ai un problème de logique. Je voudrais que le centre de la div reste fixe dans la page, mais je n'arrive pas tout a fait a traduire cet effet (comme vous pouvez le voir).

La div de droite est un carré (ça marche), tandis que la div de gauche est un rectangle (ça ne marche pas, la div se déplace a gauche pour je ne sais quelle raison!).

Je pensait que ça venait du fait que stepWidth et stepHeight pouvait être des chiffres a virgules, et que la position de la div ne peut pas être un chiffre a virgule. Mais apparemment, ce n'est pas ça le problème (ou en tout cas, il n'y a pas que ça), car même avec un step "rond" j'ai ce problème.

Je m'en remet dc a vous, car la ça commence a faire un petit moment que je bug la dessus et que je ne vois pas d'où ça vient!


Merci bp!
+++
Modifié par maxroucool (26 Oct 2007 - 18:07)
Il faut que tu fasse un calcul du type:

left = (largeurdelecran/2) - (largeurdubloc/2), ceci à chaque setTimeout
OK, c'est pas tout a fait ce que je voulais faire, mais c'est très bien, car de toute façon je voulais placer ces div au milieu!


Merci bp!
+++
pour récuperer la largeur de la page tu vas avoir besoin d'une fonction getWindowSize() :


function getWindowSize(){
  windowWidth =  window.innerWidth;
  windowWidth = (windowWidth)? windowWidth : document.documentElement.clientWidth;
  windowWidth = (windowWidth)? windowWidth : document.body.clientWidth;
  windowHeight =  window.innerHeight;
  windowHeight = (windowHeight)? windowHeight: document.documentElement.clientHeight;
  windowHeight = (windowHeight)? windowHeight: document.body.clientHeight;  
  return {'width': windowWidth, 'height': windowHeight};
}



pour recuperer les valeurs tu fais windowSize = getWindowSize(), et aprés windowSize.width c'est la largeur et windowSize.height la hauteur.
Modifié par matmat (25 Oct 2007 - 18:19)
OK merci pour cette fonction bien utile, moi j'étais passé par une div cachée de largeur et de hauteur 100%!


Sinon, est-ce que je peux abuser de ta patience et te demander comment faire pour pouvoir executer une action lorsque la div a fini de grandir et qu'elle est a la bonne taille?

Je sais qu'il suffirait de placer mon code dans le "else" de la fin, mais je voudrais pouvoir executer une commande en dehors de cette fonction.

J'ai essayé de mettre "return true;" dans le else de la fin et ensuite je met dans ma page:

window.onload = function(){
if(popOver("test2", 200, 200) == true){ code... }
}


Mais ca ne marche pas, et la je vois plus trop quoi faire!
Modifié par maxroucool (25 Oct 2007 - 18:36)