Comment placer un DIV à une position dans votre page sans préciser de coordonnées absolues. Et ceux, même s’il possède une déclaration « position :absolute » dans son attribut style. Script compatible IE (version 4 et +) et Netscape (version 4.X et 6).
Programmation > JavaScript
Recherche :   
Actualité Système Salon Concours Outils Programmation Devparadise Programmation HTML .Net JavaScript VBScript ASP PHP Visual Basic Perl Java Active X SQL XML WAP Delphi Graphisme Flash Web Design Promotion Référencement Publicité Valeur de votre site Outils Systèmes Windows Unix Linux Benchmark Hardware Réseaux locaux Droit Sécurité
Positionnement d’un DIV.
  Auteur : Yvan VANWYNSBERGHE

Comment placer un DIV à une position dans votre page sans préciser de coordonnées absolues. Et ceux, même s’il possède une déclaration « position :absolute » dans son attribut style. Script compatible IE (version 4 et +) et Netscape (version 4.X et 6).

Publicité 
Pour manipuler les caractéristiques (contenu, visibilité, …) d'un DIV, il est souvent nécessaire de le définir en position absolue (style = "position :absolute"). Ceci implique de connaître précisément les coordonnées absolues du DIV. Or, si la page change, il faut recalculer ces coordonnées.

Afin de s'affranchir de ce problème, il existe une technique qui consiste à affecter les coordonnées du DIV avec celle d'une ancre qui est placée au bon endroit. Ainsi, on ne résonne plus en coordonnées absolues.

Nous allons décrire les étapes à réaliser pour positionner un DIV à l'endroit défini par une ancre lors du chargement de la page HTML..

Dans un premier temps, déclarez entre les balises <HEAD> et </HEAD> le javascript suivant:

<SCRIPT>
<!--
var ns4 = (document.layers)? true:false;  //NS 4
var ie4 = (document.all)? true:false;  //IE 4
var dom = (document.getElementById)? true:false;  //DOM

function setToAnchor(ID_Anchor,Name_Anchor,ID_Div)
//Fonction permettant de positionner un DIV à une position occupée par une ancre
    {
var DivLeft = 0;  //Position du Div par rapport au côté gauche de la page
var DivTop = 0;  //Position du Div par rapport au haut de la page
    if (dom)
        {
        pos = document.getElementById(ID_Anchor);
        DivLeft = getLeft(pos);
        DivTop = getTop(pos);
        document.getElementById(ID_Div).style.left = DivLeft;
        document.getElementById(ID_Div).style.top = DivTop;
        }
    else if (ie4)
        {
        pos = document.all[ID_Anchor];
        DivLeft = getLeft(pos);
        DivTop = getTop(pos);
        document.all[ID_Div].style.posLeft = DivLeft;
        document.all[ID_Div].style.posTop = DivTop;
        }
    else if (ns4)
        {
        pos = document.anchors[Name_Anchor];
        DivLeft = pos.x;
        DivTop = pos.y;
        document.layers[ID_Div].pageX = DivLeft;
        document.layers[ID_Div].pageY = DivTop;
        }
    }

function getLeft(MyObject)
//Fonction permettant de connaître la position d'un objet
//par rapport au bord gauche de la page.
//Cet objet peut être à l'intérieur d'un autre objet.
    {
    if (MyObject.offsetParent)
        return (MyObject.offsetLeft + getLeft(MyObject.offsetParent));
    else
        return (MyObject.offsetLeft);
    }
function getTop(MyObject)
//Fonction permettant de connaître la position d'un objet
//par rapport au bord haut de la page.
//Cet objet peut être à l'intérieur d'un autre objet.
    {
    if (MyObject.offsetParent)
        return (MyObject.offsetTop + getTop(MyObject.offsetParent));
    else
        return (MyObject.offsetTop);
    }
//-->
</SCRIPT>


Ensuite, déclarez le tag body suivant :

<BODY OnLoad="setToAnchor('id_ancre','nom_ancre','MonDiv')">


Après, déclarez où vous voulez dans votre page HTML le DIV que vous voulez placer :

<DIV id="MonDiv" style="position:absolute;visibility:visible;">
Le Contenu de mon div...
</DIV>


Et enfin, à l'endroit où vous voulez placer votre DIV, déclarez l'ancre :

<A id="id_ancre" name="nom_ancre">&nbsp;</A>


Remarque : Pour que cela fonctionne sur tous les navigateurs, il faut que l'ancre contienne quelque chose. C'est pourquoi, on a mis &nbsp; dans l'ancre.

A lire aussi sur Devparadise.com :
  • Interdire le clic droit de la souris
  • Création d'animations en javascript.
  • Comment bien utiliser le javascript pour faire des effets dans une page HTML
  • Exemple n°1 d’utilisation de la librairie libV1 : faire apparaître progressiv...
  • Fenêtre pop-up en javascript.
  • A télécharger aussi sur Devparadise.com :
  • Protéger les images de votre site
  • Sources pour créer des pop ups
  • Message défilant en javascript
  • Texte Animé en Javascript
  • Un Curseur avec Texte en Javascript

  • © 1997-2008 tous droits réservés Devparadise.com
    Les logos, et marques déposées sont la propriété de leurs détenteurs respectifs.
    Devparadise.com s'est engagé à respecter la confidentialité des données personnelles régies par la loi 78-17 du 6 janvier 1978.
    Déclaration C.N.I.L. n° 621623
    Javascript,DIV,Position,absolute,ancre,anchor,getElementById