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 :

Code à fluidifier (agrandissement div interactif)


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 182
    Par défaut Code à fluidifier (agrandissement div interactif)
    Bonjour,

    j'ai fait un code permettant de redimensionner vers le bas une div lors du clique sur un div se situant en bas de la div

    je souhaiterait faire en sorte que l'étirement soit plus fluide.
    Le pas d'étirement tous les 20 pixels est volontaire.

    lors de l'éxécution du script on sent qu'il est un peu lent et parfois l'étirement prend une seconde à rattraper les différents palier si on monte le curseur plusieurs fois.

    j'inclu plus tot dans ma page, prototype et scriptaculous.

    alors si vous avez une idée:

    Le JS:
    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
     
        <script type="text/javascript" charset="utf-8">
    	var texte;
     
    	Event.observe(document,'mousedown', stocker_pos);
    	var posY;
    	Event.observe(document,'mousemove', stocker_pos_move);
    	var posY_move;	
     
    	function stocker_pos(event){
    		posY=Event.pointerY(event);
    	//	$('test').innerHTML="Position y: "+ posY_mov;
     
    	}
    	function stocker_pos_move(event){
    		posY_move=Event.pointerY(event);
    	//	$('test').innerHTML="Position y: "+ posY_mov;
     
    	}
    	var posdep;
    	var tailledep;
    	function augmenter(){
    		var depy=posY_move-posdep;
    //		$('test').innerHTML="height: "+tailledep+" | depy: "+depy;
    		var test=tailledep+depy
    		if((test %20)==0){
    		newtaille=tailledep+depy;
    		var hg=newtaille+'px';
    		$('div_test_1').setStyle({
    				'height': hg
    			}
    		);
    		}
    	}
    	function start_agr(){
    		document.addEventListener('mousemove',augmenter,false);
    		posdep=posY;
    		tailledep=$('div_test_1').getHeight();
    	}
    	function stop_agr(){
    		document.removeEventListener('mousemove',augmenter,false);
    	}
     
    	function initEcouteurs() {
    		document.addEventListener('mousedown',start_agr,false);
    		document.addEventListener('mouseup',stop_agr,false);
     
    	}
    	window.addEventListener('load',initEcouteurs,false);
     
    	</script>
    le HTML (sommaire ^^ )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <div id="div_test_1"><div id="button_redim">here</div></div>

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    tu cherches a faire un panneau déroulant ??

    http://mbox.tuxfamily.org/toggle/ ??

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 182
    Par défaut
    non ^^

    Imagine une div avec une poignée en bas. Je veux qu'en fonction d'où se trouve la poignée une fois cliquée on étire le div le bas. En gros si on déplace la souris de 60 pixels vers le bas la hauteur de la div soit de h+60px.

    Voilà

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    ok , alors , gardons, l'effet ;-)
    ne tiens pas compte du click ...

    si oui il s'agit juste d'un algo calculant les pas .. ;-)

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 182
    Par défaut
    l'algo qui calcule les pas je l'ai déjà je pense avec un modulo. Et même si l'on ne clique pas sur le script http://mbox.tuxfamily.org/toggle/ l'agrandissement ne se fait pas en fonction de la position de la souris .

    C'est à mon avis l'algo qui écoute la position de la souris et déplace à chaque pixel qui est étrangement lent.
    C'est surtout ça que je souhaiterais comprendre.
    en effet je ne vois pas comment gérer autrement ma fonction. et je vois que certains codes sont plus fluides: google agenda par exemple. Et je ne comprends pas pourquoi il n'est pas fluide.

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    parce qu'il faut utiliser justement un algorythme , permettant , de calculer , non pas de 20 en 20 par exemple , mais de 10, 14,5, 19,3 25 .... jusqu'à arriver a la valeur finale , qui fait que l'effet d'ouverture sera fluide , d'où un véritable ALGORITHME et non pas comme toi de 20 en 20

  7. #7
    Membre Expert
    Avatar de gwyohm
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2007
    Messages
    925
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 925
    Par défaut
    Citation Envoyé par roduce Voir le message
    j'inclu plus tot dans ma page, prototype et scriptaculous.
    Tu les inclues mais tu ne les utilises pas... J'ai déjà fait quelque chose qui ressemble à ce que tu veux faire (en tout cas je crois)... l'idée étant de pouvoir redimensionné un div avec un autre (avec prototype et scriptaculous). si ca peut t'aider...
    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
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
      <meta http-equiv="content-type" content="text/html; charset=utf-8" />
      <title>Test resize</title>
      <link rel="stylesheet" type="text/css" href="style/css.css" />
     
      <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/prototype/1.6.0.3/prototype.js"></script>
      <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/scriptaculous/1.8.2/scriptaculous.js"></script>
     
    </head>
    <body>
     
          <div id="resizable" style="border:#000 1px solid;background:red;float:left;">
            <div id="sizer" style="float:right;width:20px;height:20px;background-color:green;"></div>
          </div>
     
        <script type="text/javascript">
        Event.observe(window, "load", function(e) {
            var initial;
            var pnode;
            var dim;
            new Draggable("sizer", {
              onStart:function(drag, e) {
                pnode = $(drag.element.parentNode)
                initial = pnode.viewportOffset();
                dim = $(drag.element).getDimensions();
              },
              onDrag:function(drag, e) {
                var pos = drag.element.viewportOffset();
                pnode.setStyle({
                  width: (pos.left - initial.left + dim.width) + "px",
                  height: (pos.top - initial.top + dim.height) + "px"
                });
              }
            });
        });
        </script>
     
    </body>
    </html>
    Quand on déplace la div verte, ca redimensionne la rouge (invisible au départ)

Discussions similaires

  1. Remplacement du texte(code) dans un div éditable
    Par surfeur2 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/02/2015, 10h39
  2. le code d'un Div en ASP.NET
    Par zooffy dans le forum ASP.NET
    Réponses: 2
    Dernier message: 05/10/2009, 11h21
  3. récupérer code textarea via div contenteditable
    Par ctrl+z dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 06/01/2009, 08h33
  4. [Problème code] Afficher/Masquer div
    Par glloq8 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 24/03/2006, 14h18
  5. Problème agrandissement d'un div
    Par krfa1 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 09/05/2005, 12h55

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