Coordonnées et taille d'une DIV

gegar12 Messages postés 2 Date d'inscription mercredi 8 décembre 2010 Statut Membre Dernière intervention 8 décembre 2010 - 8 déc. 2010 à 10:08
gegar12 Messages postés 2 Date d'inscription mercredi 8 décembre 2010 Statut Membre Dernière intervention 8 décembre 2010 - 8 déc. 2010 à 17:03
Tout d'abord, je viens de m'inscrire sur ce forum et je salue tous ses membres.

J'ai trouvé un script qui me permet de bouger des calques (div) et qui fonctionne très bien.
Ce que je souhaiterais, c'est pouvoir récupérer les coordonnées du div (par rapport au bord haut gauche du navigateur) ainsi que sa longueur et sa hauteur.
Je vous remercie pour votre attention !

-- Voici le script :

var X_OTHER = 1;
var X_LEFT = 2;
var X_RIGHT = 3;

var Y_OTHER = 1;
var Y_UP = 2;
var Y_DOWN = 3;

var vgCurrentElement = null;
var vgCurrentPositionX = X_OTHER;
var vgCurrentPositionY = Y_OTHER;

var vgCurrentX = 0;
var vgCurrentY = 0;
var vgCurrentWidth = 0;
var vgCurrentHeight = 0;

var vgMouseX = 0;
var vgMouseY = 0;
var vgMouseDiffX = 0;
var vgMouseDiffY = 0;
var vgMouseDown = false;

var vgTimerMouse;
var vgTimerTime = 20;


//----------------------------//
function position(e)
{
vgMouseX (navigator.appName.substring(0,3) "Net") ? e.pageX : event.x+document.body.scrollLeft;
vgMouseY (navigator.appName.substring(0,3) "Net") ? e.pageY : event.y+document.body.scrollTop;
}

//----------------------------//
function fnResizeDiv()
{
if(vgCurrentElement!=null && vgCurrentElement!=undefined)
{
document.getElementById(vgCurrentElement).style.left = vgCurrentX;
document.getElementById(vgCurrentElement).style.top = vgCurrentY;
document.getElementById(vgCurrentElement).style.width = vgCurrentWidth;
document.getElementById(vgCurrentElement).style.height = vgCurrentHeight;
}
}

//----------------------------//
function fnOnMouseDown()
{
vgMouseDown = true;

if(vgCurrentElement!=null && vgCurrentElement!=undefined)
{
//Init of size
vgCurrentX = document.getElementById(vgCurrentElement).offsetLeft;
vgCurrentY = document.getElementById(vgCurrentElement).offsetTop;
vgCurrentWidth = document.getElementById(vgCurrentElement).offsetWidth;
vgCurrentHeight = document.getElementById(vgCurrentElement).offsetHeight;

//Init of distance
vgMouseDiffX = vgMouseX-vgCurrentX;
vgMouseDiffY = vgMouseY-vgCurrentY;

//Init of position
if(vgMouseDiffX < 20 || (vgCurrentWidth-vgMouseDiffX) < 20)
{
if(vgMouseDiffX < vgCurrentWidth/2)
vgCurrentPositionX = X_LEFT;
else
vgCurrentPositionX = X_RIGHT;
}
else
vgCurrentPositionX = X_OTHER;



if(vgMouseDiffY < 20 || (vgCurrentHeight-vgMouseDiffY) < 20)
{
if(vgMouseDiffY > vgCurrentHeight/2)
vgCurrentPositionY = Y_DOWN;
else
vgCurrentPositionY = Y_UP;
}
else
vgCurrentPositionY = Y_OTHER;


vgTimerMouse = setInterval("fnOnMouseMove();", vgTimerTime);
}
}

function fnOnMouseUp()
{
vgMouseDown = false;
clearInterval(vgTimerMouse);
}

function fnOnMouseMove()
{
if(vgMouseDown && vgCurrentElement!=null && vgCurrentElement!=undefined)
{
switch(vgCurrentPositionX)
{
case X_LEFT: vgCurrentWidth += vgCurrentX-vgMouseX;
if(vgCurrentWidth<0)
vgCurrentWidth = 0;
else
vgCurrentX = vgMouseX;
break;
case X_RIGHT: vgCurrentWidth = vgMouseX-vgCurrentX;
if(vgCurrentWidth<0)
vgCurrentWidth = 0;
break;
default: break;
}
switch(vgCurrentPositionY)
{
case Y_UP: vgCurrentHeight += vgCurrentY-vgMouseY;
if(vgCurrentHeight<0)
vgCurrentHeight = 0;
else
vgCurrentY = vgMouseY;
break;
case Y_DOWN: vgCurrentHeight = vgMouseY-vgCurrentY;
if(vgCurrentHeight<0)
vgCurrentHeight = 0;
break;
default: break;
}

if(vgCurrentPositionX==X_OTHER && vgCurrentPositionY==Y_OTHER)
{
vgCurrentX = vgMouseX-vgMouseDiffX;
vgCurrentY = vgMouseY-vgMouseDiffY;
}



fnResizeDiv();
}
}

function fnOnMouseOver(sSelectedElementName)
{
if(!vgMouseDown)
{
if(sSelectedElementName==null && sSelectedElementName!="undefined")
{
vgCurrentElement = null;
}
else
{
vgCurrentElement = sSelectedElementName;
}
}
}


//----------------------------//
function fnOnLoad()
{
if(navigator.appName.substring(0,3) == "Net")
document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = position;

//fnResizeDiv();
}

2 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
8 déc. 2010 à 14:09
Bonjour,
on peut utiliser cette fonction, qui existe en 30541 exemplaires sur le net, pour la position
//---------------------------
function getPositionObj( Obj){
  var PosX = 0;
  var PosY = 0;
  //-- Recup. Position Objet
  PosX = Obj.offsetLeft;
  PosY = Obj.offsetTop;
  //-- Si propriete existe
  if( Obj.offsetParent){
    //-- Tant qu'un parent existe
    while( Obj = Obj.offsetParent){
      //-- Ajout position Parent
      PosX += Obj.offsetLeft;
      PosY += Obj.offsetTop;
    }
  }
  //-- Retour des positions sous forme d'un objet
  return({left:PosX, top:PosY});
}

pour les dimensions voir du coté de offsetWidth et offsetHeight entre autres clientWidth et clientHeight
;O)
0
gegar12 Messages postés 2 Date d'inscription mercredi 8 décembre 2010 Statut Membre Dernière intervention 8 décembre 2010
8 déc. 2010 à 17:03
merci pour ta réponse !
je vais tester celà
0
Rejoignez-nous