begin process at 2012 05 28 14:28:35
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > POSITION ABSOLUTE

POSITION ABSOLUTE


 Information sur la source

Note :
Aucune note
Catégorie :Trucs & Astuces Classé sous :positon, positionner, utilitaire, utilitaires, organiser Niveau :Débutant Date de création :18/08/2008 Date de mise à jour :22/09/2008 16:20:26 Vu / téléchargé :6 164 / 210

Auteur : kazma

Ecrire un message privé
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Script qui sert a connaitre et a determiner la position en relative (left et top) d'un objet dans une page en executant un drag sur l'objet que l'on selectionne en declarant son id il suffit simplement d'inclure dans nimporte quelle fichier html la ligne suivante :
<SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript" SRC="gestion_position.js"></SCRIPT>
Dans la source un fichier html est inclu a titre d'exemple.

Source

  • document.onmousemove=tarto;
  • onload=orgatab;
  • var deb=0;
  • var nom_element='';
  • var element_nom='';
  • function rout(){
  • tour=2;
  • }
  • function router(){
  • tour=1;
  • }
  • function disableselect(e){
  • return false;
  • }
  • function enableselecte(e){
  • return true;
  • }
  • function attribelemnt(){
  • if(document.getElementById('inlem').value.length<1){
  • alert('entrez un ID');
  • return false;
  • }
  • nom_element=document.getElementById('inlem').value;
  • if(document.getElementById(nom_element)==null){
  • alert('ID inexistant');
  • return false;
  • }
  • var poposi
  • if(navigator.appName.substring(0,3)=="Net"){
  • poposi=getComputedStyle(document.getElementById(nom_element), null).getPropertyValue('position')
  • }
  • else{
  • poposi=document.getElementById(nom_element).currentStyle.position
  • }
  • if(poposi!='absolute'){
  • alert('l \'element seletionner n\'est pas positionner en absolute');
  • nom_element=element_nom
  • return false;
  • }
  • if(navigator.appName.substring(0,5)=="Micro"){
  • if(element_nom!=""){
  • document.getElementById(element_nom).style.cursor='auto';
  • document.getElementById(element_nom).detachEvent("onmousedown",sp);
  • document.getElementById(element_nom).detachEvent("onmouseup",rout);
  • document.getElementById(element_nom).detachEvent("onmousedown",router);
  • }
  • document.getElementById(nom_element).style.cursor='move'
  • document.getElementById(nom_element).attachEvent ('onmouseup',rout);
  • document.getElementById(nom_element).attachEvent ('onmousedown', function(){return sp(nom_element);});
  • document.getElementById(nom_element).attachEvent ('onmousedown',router);
  • element_nom=nom_element;
  • }
  • else{
  • if(element_nom!=""){
  • document.getElementById(element_nom).setAttribute("onmouseover","style.cursor='auto'");
  • document.getElementById(element_nom).removeAttribute("onmouseup","tour=2");
  • document.getElementById(element_nom).removeAttribute("onmousedown","tour=1;sp(nom_element)");
  • }
  • document.getElementById(nom_element).setAttribute("onmouseover","style.cursor='move'");
  • document.getElementById(nom_element).setAttribute("onmouseup","tour=2");
  • document.getElementById(nom_element).setAttribute("onmousedown","tour=1;sp(nom_element)");
  • element_nom=nom_element;
  • }
  • }
  • function orgatab(){
  • document.body.appendChild(document.createElement('div')).setAttribute("id","div_de_table");
  • document.getElementById('div_de_table').style.position = 'absolute';
  • document.getElementById('div_de_table').innerHTML="<table border=2 bgcolor=#B9B3A7 style='height:100px;width:280px;z-Index:50'><tr><td colspan=4 height=20 bgcolor=blue onmousedown=tour=1;sp('div_de_table') onmouseup=tour=2;><tr align=center> <td colspan=2>valeur top</td> <td colspan=2>valeur left</td></tr><tr align=center><td>px</td><td>%</td><td>px</td><td>%</td></tr><tr align=center><td id='tbtpx'>00 px</td><td id='tbtpo'>00 %</td><td id='tblpx'>00 px</td><td id='tblpo'>00 %</td></tr><tr align=center><td colspan=4>ID de l'element : <input type=texte size=14 id='inlem'><button onclick=attribelemnt()>ok</button></td></tr></table>";
  • }
  • function tarto(s){
  • if(navigator.appName.substring(0,3)=="Net"){
  • setX = s.clientX+document.body.scrollLeft;
  • setY = s.clientY+document.body.scrollTop;
  • }
  • else{
  • setX = event.x+document.body.scrollLeft;
  • setY = event.y+document.body.scrollTop;
  • return false;
  • }
  • }
  • function sp(cen){
  • var tpo=document.getElementById('tbtpo');
  • var lpo=document.getElementById('tblpo');
  • var tpx=document.getElementById('tbtpx');
  • var lpx=document.getElementById('tblpx');
  • var elem=document.getElementById(nom_element);
  • if(tour==2){
  • document.onmousedown=enableselecte;
  • return false;
  • }
  • if(tour==1){
  • px=setX;
  • py=setY;
  • fen=cen;
  • tour=0;
  • }
  • idf=document.getElementById(fen);
  • idf.style.left=(idf.offsetLeft+setX-px)+"px";
  • idf.style.top=(idf.offsetTop+setY-py)+"px";
  • document.onmousedown=disableselect;
  • px=setX;
  • py=setY;
  • if(document.getElementById(nom_element)!=null){
  • tpo.firstChild.nodeValue =Math.floor( elem.offsetTop/(elem.parentNode.clientHeight/100))+" % ";
  • lpo.firstChild.nodeValue =Math.floor( elem.offsetLeft/(elem.parentNode.clientWidth/100))+" % ";
  • tpx.firstChild.nodeValue =elem.style.top;
  • lpx.firstChild.nodeValue =elem.style.left;
  • }
  • setTimeout("sp(fen)",1);
  • }
document.onmousemove=tarto;
onload=orgatab;
var deb=0;
var nom_element='';
var element_nom='';

function rout(){
tour=2;
}
function router(){
tour=1;
}

function disableselect(e){
return false;
}
function enableselecte(e){
return true;
}

function attribelemnt(){

if(document.getElementById('inlem').value.length<1){
alert('entrez un ID');
return false;
}
nom_element=document.getElementById('inlem').value;
if(document.getElementById(nom_element)==null){
alert('ID inexistant');
return false;
}
var poposi
if(navigator.appName.substring(0,3)=="Net"){
poposi=getComputedStyle(document.getElementById(nom_element), null).getPropertyValue('position')
}
else{
poposi=document.getElementById(nom_element).currentStyle.position
}

if(poposi!='absolute'){
alert('l \'element seletionner n\'est pas positionner en absolute');
nom_element=element_nom
return false;
}
if(navigator.appName.substring(0,5)=="Micro"){
if(element_nom!=""){
document.getElementById(element_nom).style.cursor='auto';
document.getElementById(element_nom).detachEvent("onmousedown",sp);
document.getElementById(element_nom).detachEvent("onmouseup",rout);
document.getElementById(element_nom).detachEvent("onmousedown",router);
}
document.getElementById(nom_element).style.cursor='move'
document.getElementById(nom_element).attachEvent ('onmouseup',rout);
document.getElementById(nom_element).attachEvent ('onmousedown', function(){return sp(nom_element);});
document.getElementById(nom_element).attachEvent ('onmousedown',router);
element_nom=nom_element;
}
else{
if(element_nom!=""){
document.getElementById(element_nom).setAttribute("onmouseover","style.cursor='auto'");
document.getElementById(element_nom).removeAttribute("onmouseup","tour=2");
document.getElementById(element_nom).removeAttribute("onmousedown","tour=1;sp(nom_element)");
}
document.getElementById(nom_element).setAttribute("onmouseover","style.cursor='move'");
document.getElementById(nom_element).setAttribute("onmouseup","tour=2");
document.getElementById(nom_element).setAttribute("onmousedown","tour=1;sp(nom_element)");
element_nom=nom_element;
}
}
function orgatab(){
document.body.appendChild(document.createElement('div')).setAttribute("id","div_de_table");
document.getElementById('div_de_table').style.position = 'absolute';
document.getElementById('div_de_table').innerHTML="<table  border=2 bgcolor=#B9B3A7 style='height:100px;width:280px;z-Index:50'><tr><td colspan=4 height=20 bgcolor=blue onmousedown=tour=1;sp('div_de_table') onmouseup=tour=2;><tr align=center> <td colspan=2>valeur top</td> <td colspan=2>valeur left</td></tr><tr align=center><td>px</td><td>%</td><td>px</td><td>%</td></tr><tr align=center><td id='tbtpx'>00 px</td><td id='tbtpo'>00 %</td><td id='tblpx'>00 px</td><td id='tblpo'>00 %</td></tr><tr align=center><td colspan=4>ID de l'element : <input type=texte size=14 id='inlem'><button onclick=attribelemnt()>ok</button></td></tr></table>";
}

function tarto(s){
if(navigator.appName.substring(0,3)=="Net"){
setX = s.clientX+document.body.scrollLeft;
setY = s.clientY+document.body.scrollTop;
}
else{
setX = event.x+document.body.scrollLeft;
setY = event.y+document.body.scrollTop;
return false;
}
}

function sp(cen){

var tpo=document.getElementById('tbtpo');
var lpo=document.getElementById('tblpo');
var tpx=document.getElementById('tbtpx');
var lpx=document.getElementById('tblpx');
var elem=document.getElementById(nom_element);
if(tour==2){
document.onmousedown=enableselecte;
return false;
}
if(tour==1){
px=setX;
py=setY;
fen=cen;
tour=0;
}
idf=document.getElementById(fen);
idf.style.left=(idf.offsetLeft+setX-px)+"px";
idf.style.top=(idf.offsetTop+setY-py)+"px";
document.onmousedown=disableselect;
px=setX;
py=setY;
if(document.getElementById(nom_element)!=null){
tpo.firstChild.nodeValue =Math.floor( elem.offsetTop/(elem.parentNode.clientHeight/100))+" % ";
lpo.firstChild.nodeValue =Math.floor( elem.offsetLeft/(elem.parentNode.clientWidth/100))+" % ";
tpx.firstChild.nodeValue =elem.style.top;
lpx.firstChild.nodeValue =elem.style.left;
}
setTimeout("sp(fen)",1);
}

 Conclusion

Script qui peut eviter de se prendre la tete a positionner des objets dans une page

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

19 août 2008 15:04:07 :
mise aux normes
25 août 2008 15:25:28 :
debogage netoyage et petites amelioration
26 août 2008 21:56:58 :
ajout d'un elert pour precision sur le style de position modification du titre remplacement de relative par absolute
26 août 2008 23:31:03 :
petit oublie
16 septembre 2008 10:07:25 :
-correction de bogue -le pointer de la sourie change de forme quand il est sur un objet deplacable
22 septembre 2008 16:20:27 :
remplacement de style.position par getComputedStyle pour compatible w3c et currentStyle pour IE

 Sources du même auteur

Source avec Zip Source avec une capture BOUTON ROTATIF
Source avec Zip Source avec une capture EFFET DE ROTATION A 360° D'IMAGE AVEC ACCELERATION DECELERAT...
Source avec Zip Source avec une capture PETIT LOGICIEL DE DESSIN, RETOUCHE AVEC CANVAS
Source avec Zip Source avec une capture DRAG & DROP VERS UN CANVAS
Source avec Zip Source avec une capture DIAPO EN CSS 3D

 Sources de la même categorie

PARSER LES CARACTÈRES HTML D'UNE STRING par jdmcreator
CONSTRUCTION D'UNE TABLE TRIABLE À PARTIR D'UN TABLEAU 2D par phm
Source avec Zip Source avec une capture SUBDIVISER LE RÉSULTAT D'UNE RECHERCHE EN PAGES par kimmp
Source avec Zip TIMER : SETTIMEOUT & SETINTERVAL AMÉLIORÉS par jdmcreator
Source avec Zip Source avec une capture ONGLETS ET CHANGEMENT INSTANTANÉ DE LA LANGUE par william voirol

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture FORMULAIRE TABLEAU par vic511
Source avec une capture UTILITAIRE DE DEBUGAGE DE TABLEAU MULTIDIMENTIONNEL par josh666

Commentaires et avis

Commentaire de nickadele le 19/08/2008 12:30:54 administrateur CS

Faudrait peut-être un peu normaliser ton code !
Certaines lignes avec ";" d'autres sans !!!
Fonction tarto qui retourne une valeur dans certains cas et d'autres pas!!!

Nickadele

Commentaire de kazma le 19/08/2008 15:08:09 administrateur CS

c'est fait j'ai normalise le code au niveau des virgules ;

en ce qui concerne la fontion tarto si il s'agit du return false c'est une astuce pour eviter que quand je deplace une fenetre les elements de la page soient selectionne

Commentaire de nickadele le 19/08/2008 17:00:59 administrateur CS

ok, mais pourquoi l'appliquer à une condition et pas à  l'autre ?

Commentaire de kazma le 19/08/2008 17:39:02 administrateur CS

c'est pour IE pour ff j'utilise les deux fonctions qui se trouve ver le debut du script
# function disableselect(e){
# return false;
# }
# function enableselecte(e){
# return true;
# }
fontions que je declanche dans la fonction qui gere les deplacement
IE n'y prete pas attention et n'y decele aucunes erreurs
la solution peut paraitre pas tres propre pour moi ce n'est qu'une facon de resoudre un probleme bien evidement si on me propose une solution propre je suis preneur

Commentaire de XtremDuke le 26/08/2008 16:33:57

Ça me paraît être un peu compliqué pour simplement connaitre un positionnement dans la page...

La fonction suivante te retourne les coordonnées d'un objet quelque soit son mode de positionnement (absolute/relative/fixed) :

function getRealOffsets(HTMLElt){
var valTop = 0, valLeft = 0;
var obj = HTMLElt;
do{
valTop += obj.offsetTop  || 0;
valLeft += obj.offsetLeft || 0;
obj = obj.offsetParent;
if(obj && obj.tagName.toLowerCase() == 'body') break;
}while(obj);
return {left: valLeft, top: valTop};
}

Si ca peut t'aider...

Commentaire de kazma le 26/08/2008 21:48:48 administrateur CS

ce n'est pas connaitre la position de l'objet qui complique le script c'est le fait que l'on puisse positionner a la vole avec la sourie par dragage les objets que l'on a selectionner par leurs id car le script sert a connaitre bien sur la position des objet mais il sert surtout a positionner les objects dalleur en relisant ton commantaire j'ai refait des testes pour la position relative et je me suis apercu de deux erreur l'une concerne le script j'ai du rajouter une alerte qui se termine par un false pour preciser que l'id selectionne n'ai pas en absolute la deuxieme erreur est que le titre de la source devrait s'appeler position absolute et pas relative ++

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Positionner un calque par dessus un select [ par LACSAP2 ] impossible de positionner un calque par dessus un select. Dans l'exemple ci-après, alors que tous les autres input sont recouverts par le calque fusch Positionner la scroll bar dans un select multiple [ par RoroLaDechire ] Bonjour,je souhaiterais que la première option sélectionnée dans un select multiple, lors d'un rechargement de la page, soit au milieu du select, et n positionnement popup [ par mamoucheka ] Salut!Est ce que quelqu'un pourrait m'aider?J'essaie de positionner ma popup. J'arrive à la positionner par rapport à l'ecran (par rapport au haut et positionner un texte au centre de l'écran [ par Linuss ] Bonjour &#224; tous, ma question est toute b&#234;te, mais au lieu d'utiliser des balises &lt;br /&gt;, sauriez vous comment faire pour afficher un te Positionner une ligne de formulaire [ par benoi6 ] Bonjour,J'ai un code qui me permet d'ajouter des lignes &#224; un formulaire en cliquant sur un bouton. Cependant ma ligne ajout&#233; se place tout a je force le focus. comment positionner le curseur a la fin du champs ? [ par nicola2s ] Bonjour,J'ai un input text dont je force le focus au chargement de la page.le pb du focus est qu'il positionne le curseur au debut de la zone de saisi positionner un TextArea [ par micamac ] Bonjour,je crée un TextArea, mais dans les paramètres, il y a juste une string et le nombre de lignes et colonnes initiales, pas la position de la zon Positionner curseur en haut de la page [ par aloisio11 ] Bonjour,J'ai un problemme peut banal : Je charge une page avec plein de référence, je clique sur le haut de ma page pour pouvoir faire une recherche a Positionner un div sur un autre.. [ par syndrael ] Bonjour, Je suis en train de batailler sur un problème et je pense qu'un regard extérieur pourrait m'être utile.. J'ai deux div consecutifs (en non im comment positionner une fenêtre en haut a gauche [ par jphilippev ] bonjour je voudrais placer une fenêtre html en haut a droiteil y a déja un window.resizeTo mais pour ce qui est de la placer a un endroit définit... j


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,009 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales