Dimension d'un div de façon dynamique

[Résolu]
Signaler
Messages postés
23
Date d'inscription
vendredi 11 novembre 2005
Statut
Membre
Dernière intervention
23 février 2006
-
Messages postés
23
Date d'inscription
vendredi 11 novembre 2005
Statut
Membre
Dernière intervention
23 février 2006
-
Bonjour tout le monde

Je cherche le moyen d'avoir dynamiquement les dimensions d'un div...

J'ai essayé document.getElementbyID(IDdiv).offsetWidth et .offsetHeight mais il me répond "Erreur : this.document.ftb has no properties" (ca c'est le
copier/coller, il marque pas vraiment ça mais je pense que ça c'est
plus parlant)

Alors j'ai essayé de mettre .width et d'autre (dont je me souviens plus) mais j'ai toujours la même erreur....

Je place le code si ça peux aidé... C'est un code que j'ai trouvé ici (enfin je crois j'ai plus le lien) que j'essai de modifier (ça travail mon peu de JS, et puis je trouvais simple le code de base)
Je met en orange la partie à problème...

/**********************
* infobulles
* Ben, 23/07/2005
**********************/

//Espacement entre le curseur et l'infobulle
var cursorX = 5;
var cursorY = 5;

//Gestion des navigateurs (IE, MOZ, NS)
nav = navigator.appName;

ie = document.all;
ns = document.layers;
fi = document.getElementById && !document.all;

if(!ie && !ns && !fi){
alert("Navigateur "+nav+" incompatible !");}

if(!ie){
document.captureEvents(Event.MOUSEMOVE);}

document.onmousemove = get_mouse;

function get_mouse(e){
//Récupère les coordonnées de la souris
if(ie){
sourisX = event.x;
sourisY = event.y;
window.status = x;
}else{
sourisX = e.pageX;
sourisY = e.pageY;
}

//Création du terme bubble (désignant l'infobulle)
var bubble = document.getElementById("infobulle");

//Récupère la résolution de l'écran
var ecranX = document.body.clientWidth + document.body.scrollLeft;
var ecranY = document.body.clientHeight + document.body.scrollTop;

//Récupère la taille de la bubble
var tailleX = bubble.offsetWidth;
var tailleY = bubble.offsetHeight;

//Vérifie si la bubble sort de l'écran à droite
if( sourisX + cursorX + tailleX > ecranX ){
//Oui, la bubble est bloqué
bubble.style.left = ecranX - tailleX + 'px';
} else {
//Non, la bubble se déplace
bubble.style.left = sourisX + cursorX + 'px';}

//Vérifie si la bubble sort de l'écran en bas
if( sourisY + cursorY + tailleY > ecranY ) {
//Oui, la bubble est bloqué
bubble.style.top = ecranY - tailleY + 'px';
} else {
//Non, la bubble se déplace
bubble.style.top = sourisY + cursorY + 'px';}
}

//Affiche la bubble
function see_bubble(text){
bubble.style.visibility = "visible";
bubble.style.display = "block";
bubble.innerHTML = text;}

//Cache la bubble
function kill_bubble(){
bubble.style.visibility = "hidden";
bubble.style.display = "none";}

J'espère que vous pourrez m'aidez....

PS: J'ai pas trouvé de balise pour mettre un commentaire ou du code, c'est normal?
PS': Je sais, c'est un script d'infobulle, y'en a plein de déjà fait, mais bon.... J'ai le d'essayer et d'apprendre.

6 réponses

Messages postés
23
Date d'inscription
vendredi 11 novembre 2005
Statut
Membre
Dernière intervention
23 février 2006

J'ai trouvé le pb.... Si on retire le "var" à "var bubble = document.getElementById("infobulle");" ça marche....
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
ok, tu as un script d'info-bulle...
Tu veux faire quoi exactement ? pourquoi chercher à connaitre sa taille ?
Messages postés
23
Date d'inscription
vendredi 11 novembre 2005
Statut
Membre
Dernière intervention
23 février 2006

Merci de ta réponse Mindiell

Si la position de la souris plus l'écart entre la souris et la bulle plus la taille de la bulle sont plus grand que la taille de l'écran, il en manquera un bout, donc dans ce cas, la bulle est bloqué au bord de l'écran.

Voila pourquoi je veux connaitre sa taille en dynamique, pour éviter que la bulle sortent de l'écran...
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
Moi j'ai une bulle comme ca, un div. Je vérifie rien, j'ai juste ca :

.tooltip_on
{
position : absolute;
display : block;
}

et ca dépasse jamais de l'écran (il se retaille tout seul, suivant le texte ca fera une bulle de plusieurs lignes, pitet un peu moche, mais bon...)

Forcément, quand on arrive trop à droite ca déborde, mais bon :

http://www.mindiell.net/tooltip/exemple.html
Messages postés
23
Date d'inscription
vendredi 11 novembre 2005
Statut
Membre
Dernière intervention
23 février 2006

Merci pour cette astuce, mais je préfèrerai pouvoir calculer la taille, comme ça la bulle sera indéformable...

En attendant d'avoir la réponse à ma question, je vais me servir de ça.

PS: Je ne valide pas car ça ne répond pas vraiment à ma question, et puis j'ai un problème pour valider....
PS': Et puis ça va peut être me poser problème, il y aura surement des bulles proche du bord de l'écran!
Messages postés
559
Date d'inscription
jeudi 25 juillet 2002
Statut
Membre
Dernière intervention
5 septembre 2007
1
Ok,
une petite question : "Comment calcules-tu la première taille de ta bulle ?"

Si la souris est très à gauche de l'écran, la taille de départ fait quasiment toute la largeur de l'écran, non ? Si on déplace la souris vers la droite, la bule restera sur place, mais très grande.
En contre-partie, si on passe avec la souris très à droite, la bulle de départ sera toute petite.

C'est pour ca que si j'étais toi, je fixerais la largeur de l'infobulle. A partir de là, plus de problèmes, tu connais forcément sa taille !

Si tu re-regardes mon lien, j'ai fixé la taille de la bulle, et j'ai donc pu bloquer celle-ci :o)