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 :

[AJAX] [Scriptaculous] redimensionner dynamiquement div


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Par défaut [AJAX] [Scriptaculous] redimensionner dynamiquement div
    Bonjour,

    Je cherche a donner a l'utilisateur la possibilité de redimensionner en ligne un div.

    En gros, je voudrais avoir le meme principe que celui qui s'applique aux images:
    Quand on passe la souris sur le coin ou sur un côté du div, l'icone de redimension apparait, et permet la redimension du div en déplacant la souris...

    J'ai compris le principe :
    Il faut savoir a quelles coordonnées on est quand on clique, puis en faisant la différence avec les coordonnées quand on lache la souris on sait le deplacement effectué, puis on met a jour la balise style="width:; height:;" en fonction de ce déplacement...

    Mais en pratique, je ne vois pas du tout comment m'y prendre!!

    Merci d'avance pour vos réponses

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    oulaaa c'est beaucoup de chose.

    Je sais meme pas par ou commencer On va tenter
    Alors en premier lieu utilise onmousedown, onmousemove et onmouseup sur la window(global) en y associant une fonction (regarde addEventListener (firefox) et attachEvent(ie)).
    Puis sur la fonction down tu recuperes l'objet fraichement selectionné (avec les evenements et target).
    Puis apres c'est un travail assez complexe. Tout d'abord recuperer la position de la sourie puis de l'objet en cour (avec offset en javascript tu recuperes tout) et la tu fais tes calculs. Puis lors du onmousemove tu sets les valeurs de la sourie sur le div associé au coin voulu. Lors du on mouseup tu effaces toutes les valeurs globals eventuels
    Pour que ton objet en cour soi accessible partout met le en global. J'espere que tu as deja fais du js car ca va te demander pas mal de fil a retordre mais si tu le fais c'est la classe
    Voila tiens moi au courant si tu as d'autre question

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2006
    Messages : 188
    Par défaut
    n'y a t'il pas quelque choses du coté de scriptaculous ??

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    Moi je suis un peu foufou je le recode moi meme Apres script aculous c'est un truc genial ! mais bon On est sur developpez.com

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Par défaut
    Je viens de regarder du coté de scriptaculous, mais il n'y a que des scripts de deplacement et pas de redimensionnement...

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    Franchement essait de le coder et puis je peux tenter de t'aider. Le desavantage de le coder soi meme c'est que c'est plutot long, la compatibilité entre navigateurs fait chier mais tu vas en sortir avec une excellente connaissance

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    818
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2005
    Messages : 818
    Par défaut
    J'ai trouvé ceci, mais je n'arrive pas à comprendre tout car je n'ai jamais utilisé les classes en javascript...
    Comment je peux utiliser ceci pour me permettre de resizer mon div (comment faire appel à la fonction?...)

    Code : 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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
     
    Effect.ResizeWindow = Class.create();
    Object.extend(Object.extend(Effect.ResizeWindow.prototype, Effect.Base.prototype), {
      initialize: function(win, top, left, width, height) {
        this.window = win;
        this.window.resizing = true;
     
        var size = win.getSize();
        this.initWidth    = parseFloat(size.width);
        this.initHeight   = parseFloat(size.height);
     
        var location = win.getLocation();
        this.initTop    = parseFloat(location.top);
        this.initLeft   = parseFloat(location.left);
     
        this.width    = width != null  ? parseFloat(width)  : this.initWidth;
        this.height   = height != null ? parseFloat(height) : this.initHeight;
        this.top      = top != null    ? parseFloat(top)    : this.initTop;
        this.left     = left != null   ? parseFloat(left)   : this.initLeft;
     
        this.dx     = this.left   - this.initLeft;
        this.dy     = this.top    - this.initTop;
        this.dw     = this.width  - this.initWidth;
        this.dh     = this.height - this.initHeight;
     
        this.r2      = $(this.window.getId() + "_row2");
        this.content = $(this.window.getId() + "_content");
     
        this.contentOverflow = this.content.getStyle("overflow") || "auto";
        this.content.setStyle({overflow: "hidden"});
     
        // Wired mode
        if (this.window.options.wiredDrag) {
          this.window.currentDrag = win._createWiredElement();
          this.window.currentDrag.show();
          this.window.element.hide();
        }
     
        this.start(arguments[5]);
      },
     
      update: function(position) {
        var width  = Math.floor(this.initWidth  + this.dw * position);
        var height = Math.floor(this.initHeight + this.dh * position);
        var top    = Math.floor(this.initTop    + this.dy * position);
        var left   = Math.floor(this.initLeft   + this.dx * position);
     
        if (window.ie) {
          if (Math.floor(height) == 0)  
            this.r2.hide();
          else if (Math.floor(height) >1)  
            this.r2.show();
        }      
        this.r2.setStyle({height: height});
        this.window.setSize(width, height);
        this.window.setLocation(top, left);
      },
     
      finish: function(position) {
        // Wired mode
        if (this.window.options.wiredDrag) {
          this.window._hideWiredElement();
          this.window.element.show();
        }
     
        this.window.setSize(this.width, this.height);
        this.window.setLocation(this.top, this.left);
        this.r2.setStyle({height: null});
     
        this.content.setStyle({overflow: this.contentOverflow});
     
        this.window.resizing = false;
      }
    });
     
    Effect.ModalSlideDown = function(element) {
      var windowScroll = WindowUtilities.getWindowScroll();    
      var height = element.getStyle("height");  
      element.setStyle({top: - (parseFloat(height) - windowScroll.top) + "px"});
     
      element.show();
      return new Effect.Move(element, Object.extend({ x: 0, y: parseFloat(height) }, arguments[1] || {}));
    };
     
     
    Effect.ModalSlideUp = function(element) {
      var height = element.getStyle("height");
      return new Effect.Move(element, Object.extend({ x: 0, y: -parseFloat(height) }, arguments[1] || {}));
    };

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Prototype] [Ajax] Création dynamique div en utilisant le DOM
    Par nkordiko dans le forum Bibliothèques & Frameworks
    Réponses: 4
    Dernier message: 07/12/2009, 14h33
  2. Redimensionnement "dynamique" de div
    Par Pr0j3ktil dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/11/2009, 09h37
  3. Redimensionner dynamiquement une div
    Par LeCogiteur dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 31/03/2009, 08h03
  4. Réponses: 1
    Dernier message: 03/10/2007, 00h12
  5. Redimensionner dynamiquement div
    Par HaTnuX dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/08/2007, 16h51

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