11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous Smiley lol

J'ai besoin de vous! J'ai déjà posté sur d'autres forums sans succès ^^

Bon j'explique, j'ai un piti div sur ma page. Ce que je cherche à faire, c'est capturer dans mon div la position du curseur et l'afficher. Mais je veux que le (0,0) soit sur le coin gauche du div en question, autrement dit avoir les coordonnées relatives au div.
Pour se faire, j'ai besoin de calculer la position en X et Y de mon div par rapport à ma page entière.

J'utilise cette fonction:
function getLeft(MyObject)
{
	if (MyObject.offsetParent)
		return (MyObject.offsetLeft + getLeft(MyObject.offsetParent));
	else
		return (MyObject.offsetLeft);
}


Idem pour la position en Y avec offsetTop.


Ce code marche impecablement sous Mozilla/FF et IE, MAIS (c'est le mais qui fait chier Smiley langue ) Mozilla me retourne une valeur erronée quand le body est positionné en absolu.

Sur ma page j'applique le style:
body {
margin: 0px;
padding: 0px;
width: 800px;
position: absolute;
left: 50%;
margin-left: -400px;
}

(style batard pour centrer la page sur l'écran ^^)

_ Quand je fait des tests juste sur la position de ce body, IE me retourne une valeur correcte, mais Mozilla me retourne 0.
_ Si j'applique le meme style sur un autre element que le body, les deux naviguateurs retournent une valeur correcte.
_ Si je change le style de positionnement du body en enlevant le positionnement absolu et en mettant:
body {
margin: 0px;
padding: 0px;
width: 800px;
margin-left: auto;
margin-right: auto;
}
(pour le même effet de centrage de page)
Les 2 naviguateurs me renvoient la bonne valeur. (mais IE ne reconnait pas le "auto", et ne centre pas la page Smiley biggol )


Aidez-moi Smiley smile

Est-ce qu'il existe un moyen pour calculer cette foutue position du body en absolu? ^^
NikoGJ a écrit :
Est-ce qu'il existe un moyen pour calculer cette foutue position du body en absolu? ^^

Est-ce qu'il y a besoin de positionner le body en absolu ?

Je commencerais par là.
Internet Explorer a du mal à considérer body comme un simple conteneur, aussi vaut-il mieux utiliser une div comme conteneur général, et la positionner avec les marges automatiques (la technique du centrage par le positionnement absolu pose un certain nombre de problèmess de compatibilité et d'accessibilité).

En passant, je remarque juste que tu utilises une largeur de 800px. C'est fait exprès, ou c'est une erreur ?
Pour rappel, la largeur disponible dans une fenêtre maximisée sur un écran en 800x600 serait plutôt en dessous de 780px. La fourchette « confortable » serait plutôt 750-770px, d'autant plus qu'il faut prendre en compte le fait que la fenêtre du navigateur ne sera pas forcément maximisée...
mpop a écrit :
Est-ce qu'il y a besoin de positionner le body en absolu ?

Et bien en fait, oui et non ^^
Je développe une sorte de librairie en javascript et j'aimerai que ce soit indépendant de la structure du site, donc j'essaie un peu toutes les possibilités pour voir les erreurs qui apparaissent. Et vu qu'il y a pas mal de sites utilisant cela... Smiley confus
Si effectivement il est impossible de calculer la position quand le body est mis en absolu....bah tant pis je mettrai un avertissement dans la doc! ^^

Ensuite, pour la technique du centrage absolu avec marges négatives et largeur fixe de 800px, c'est celle que j'utilise pratiquement toujours... Maintenant au vu de ce que tu a dis, je suis allé voir ton site et le css qui s'y rapporte.....et bien je vais devoir revoir mes CSS! Smiley lol
Modifié par NikoGJ (23 Sep 2006 - 18:48)