IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Mauvaise position curseur + centrage position


Sujet :

JavaScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 29
    Par défaut Mauvaise position curseur + centrage position
    Bonjour,

    Je m'excuse d'avance pour le manque d'inspiration dans ce titre. Je vais essayer d'être clair dans mes explications. J'ai pour mission de réaliser une map draggable, Jusque là tout va bien.
    Enfin presque. Si la position d'origine de mon élément draggé n'est pas top 0 left 0, je suis ramené au coin super gauche lors du onmousedown. Par contre, après le premier drag, si on relache le bouton et qu'on recommence, c'est la bonne position.

    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    var gX = 0;
    var gY = 0;
    var gDifX = 0;
    var gDifY = 0;
     
    var moveElement = null;
     
    function mMove(e){
        gX = (navigator.appName.substring(0,3) == "Net") ? e.pageX : event.x+document.body.scrollLeft;
        gY = (navigator.appName.substring(0,3) == "Net") ? e.pageY : event.y+document.body.scrollTop;
     
        if(moveElement != null){
            moveElement.style.left = (gX - gDifX)+'px';
            moveElement.style.top = (gY - gDifY)+'px';
        }
    }
     
    function mDown(element){
        gDifX = parseInt(element.style.left);
        gDifX = gX - ( isNaN(gDifX) ? 0 : gDifX) ;
        gDifY = parseInt(element.style.top);
        gDifY = gY - ( isNaN(gDifY) ? 0 : gDifY) ;
        moveElement = element;
    }
     
    function mUp() {
        if(moveElement != null){
        if(gX - gDifX > 0) {
            moveElement.style.left = '0px';
        }
        if(gY - gDifY > 0) {
            moveElement.style.top = '0px';
        }
        if(gX - gDifX < -2600) {
            moveElement.style.left = '-2600px';
        }
        if(gY - gDifY < -2000) {
            moveElement.style.top = '-2000px';
        }}
        moveElement = null;
    }
     
    /*if(navigator.appName.substring(0,3) == "Net")
        document.captureEvents(Event.MOUSEMOVE);*/
    document.onmousemove = mMove;

    Ce code provient d'un post du forum, je l'ai modifier afin d'empêche la map de sortir de son conteneur.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <div id="mapBox" onmouseout="mUp();">
                        <div id="map" 
                             onmousedown="javascript : mDown(this);"
                             onmouseup="javascript : mUp();"
                             onmousemove="javascript : mMove(this);">
                        </div>
    </div>

    Code css : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    #mapBox {
        width: 600px;
        height: 400px;
        position: relative;
        margin: 0 auto;
        overflow: hidden;
        border: 1px solid red;
    }
     
    #map {
        width: 3200px;
        height: 2400px;
        left: -875px;
        top: -1875px;
        position: absolute;
        background-image: url("../maps/map.jpg");
    }

    Comment faire pour que la position du cursuer soit correct ? J'aimerais également que la position correspondant à l'evenement onmousedown soit centrée dans le div mapBox.

    D'avance merci.

    Cordialement,
    Stick.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 29
    Par défaut
    Après plusieurs test, j'arrive à obtenir la position du clic, par rapport au bord de mapBox, mais pas de l'élement absolute en lui même. Par contre, après un premier drag, tout semble corretement fonctionner. je continue de chercher !

    Edit :

    Bon, il s'avere que je n'arrive pas à avoir les mêmes valeur partout. Sur IE et Opera ce sont les valeurs du top et left de l'élement relatif (mapBox). Sur chrome, les valeurs top et left de la page. Sur firefox, le drag ne fonctionne pas.

    Il va vraiment falloir qu'ils se mettent d'accord un jour !

Discussions similaires

  1. position curseur souris par rapport à ma JTable
    Par jdewalqu dans le forum Composants
    Réponses: 3
    Dernier message: 24/08/2006, 17h21
  2. position curseur dans TEdit
    Par bandit boy dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/03/2006, 16h53
  3. [win32][D5] - position curseur dans paintbox
    Par bregolhen dans le forum Composants VCL
    Réponses: 3
    Dernier message: 05/11/2005, 23h45
  4. [TstringGrid] et position curseur
    Par petitcoucou31 dans le forum Composants VCL
    Réponses: 10
    Dernier message: 01/11/2005, 22h28
  5. Réponses: 4
    Dernier message: 07/06/2005, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo