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

Contribuez Discussion :

[SRC] toggle ( paneau déroulant ) -de 5ko ( sans librairie ;) )


Sujet :

Contribuez

  1. #1
    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
    Points : 4 835
    Points
    4 835
    Par défaut [SRC] toggle ( paneau déroulant ) -de 5ko ( sans librairie ;) )
    Voici un paneau déroulant

    - s'ouvre ou se ferme en cliquant sur le lien de titre avec indication de l'état.
    - ouverture fluide , qu'elle que soit la hauteur du contenu.
    - moins de 5ko, script+css

    images en pièce jointe.

    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
     
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
    	<head>
    		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    		<title>Untitled Document</title>
    		<style type="text/css">
    			.toggleTitle{
    				width:450px;
    				height:36px;
    				line-height:36px;
    				padding-left:50px;
    				display:block;
    				color:#FFFFFF;
    				font-size:16px;
    				font-weight:bold;
    				font-family:Verdana;
    				text-decoration:none;
    			}
    			.open{
    				background:url('background.png') top no-repeat;
    			}
    			.close{
    				background:url('background.png') 0px -36px no-repeat;
    			}
    			.toggleTop{
    				width:500px;
    				height:4px;
    				line-height:4px;
    				display:block;
    				background:url('top.png');
    				margin-top:4px;
    			}
    			.toggleBottom{
    				width:500px;
    				height:5px;
    				line-height:5px;
    				display:block;
    				background:url('bottom.png');
    			}
    			.contentToggle{
    				width:590px;
    				padding:5px;
    				background:url('content.png') repeat-y;
    			}
    			.toggle{
    				overflow:hidden;
    			}
    		</style>
     
    		<script type="text/javascript">
    			function getElementsByClassName(className, tag, elm){
    				var testClass = new RegExp("(^|s)" + className + "(s|$)");
    				var tag = tag || "*";
    				var elm = elm || document;
    				var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
    				var returnElements = [];
    				var current;
    				var length = elements.length;
    				for(var i=0; i<length; i++){
    					current = elements[i ];
    					if(testClass.test(current.className)){
    						returnElements.push(current);
    					}
    				}
    				return returnElements;
    			};
     
    			var Toggle = {
    			    create: function(target) {
    			        return {
    			            id: "no name",
    			            orientation: "vertical",
    						myObject : target,
    			            min: 0,
    			            max: target.offsetHeight,
    			            speed: 350,
    						isOpen : true,
    			            move: function(titleChange) {
    							if(this.myObject.testTime == null){
    								start = (this.isOpen) ? this.max:this.min;
    								end = (this.isOpen) ? this.min:this.max;
    				                c = (350 / 50);
    				                d = Math.round(this.speed / c);
    				                w = new Array();
    								this.myObject.currentStepX = 0;
    								this.myObject.testTime = null;
    				                for (var i = 1; i <= d; i++) {
    				                    w.push(this.easeOutCubic(i * c, start, end - start, this.speed))
    				                }
    								titleChange.className = (this.isOpen) ? "toggleTitle close":"toggleTitle open"
    				                this.go(this,c,w);
    							}
    			            },
    			            go: function(b, c , w) {
    			                b.myObject.testTime = window.setInterval(function() {
    			                    var a = true;
    			                    if (w[b.myObject.currentStepX]) {
    			                        b.myObject.style['height'] = w[b.myObject.currentStepX] + 'px';
    			                        b.myObject.currentStepX++;
    			                        a = false
    			                    }
    			                    if (a) {
    			                        window.clearInterval(b.myObject.testTime);
    			                        b.myObject.testTime = null;
    									b.isOpen = (b.isOpen) ? false:true;
    			                        if (b.callBack) {
    			                            b.callBack()
    			                        }
    			                        return
    			                    }
    			                },
    			                c);
    			            },
    						easeOutCubic : function (t, b, c, d) {
    			 				return c*((t=t/d-1)*t*t + 1) + b;
    						}
    			        }
    			    }
    			};
    		</script>
    	</head>
    	<body>
     
    			<a href="#" class="toggleTitle open" onclick="Toggle1.move(this);return false;">Ouvre</a>
    			<div class="toggle">
    				<span class="toggleTop"></span>
    				<div class="contentToggle">
    					et la plein plein  de contenu <br />
    					et la plein plein  de contenu <br />
    					et la plein plein  de contenu <br />
    					et la plein plein  de contenu <br />
    					et la plein plein  de contenu <br />
    					et la plein plein  de contenu <br />
    					et la plein plein  de contenu <br />
    					et la plein plein  de contenu <br />
    					et la plein plein  de contenu <br />
    					et la plein plein  de contenu <br />
    					et la plein plein  de contenu <br />
    				</div>
    				<span class="toggleBottom"></span>
    			</div>
    		<script type="text/javascript">
    			var Toggle1 = Toggle.create(getElementsByClassName('toggle')[0]);
    		</script>
    	</body>
    </html>
    pour les feignants, démo en ligne : http://mbox.tuxfamily.org/toggle/
    Images attachées Images attachées     
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    tiens, l'Internet écolo revient en force: chouette;

    mais dis donc, j'étais pas moins gourmand encore là? http://www.developpez.net/forums/d64...e/#post3824814

  3. #3
    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
    Points : 4 835
    Points
    4 835
    Par défaut
    Bien tenté mais ce n'est pas tout a fait le même fonctionnement :

    de mon coté :

    - fermeture de la div contenante quelque soit la hauteur ;-)
    - Effet d'ouverture souple , prenant toujours le même temps quelque soit la taille du contenu
    - effet d'indication d'ouverture / fermeture sur le header ^^

    Mais a toi , lance toi ;-)
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Je le trouve pas mal (désolé, pas encore eu trop le temps de regarder le code ), seule petite remarque, la div contentToggle étant plus large que le cadre, ça déborde quand il y a plus de contenu.
    Mais sinon, fluide, élégant, j'aime bien

    EDIT :
    Tiens, ça me fait penser que j'avais aussi fait un truc similaire, moins graphique, mais qui s'adaptait à la taille du contenu en hauteur, faudrait que je te retrouve ça pour comparer
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    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
    Points : 4 835
    Points
    4 835
    Par défaut
    contentToggle étant plus large que le cadre, ça déborde quand il y a plus de contenu.
    ?? en largeur ? oui possible j'ai fixé une image d'arrière plan fixe, il suffit, de fixer la largeur

    sinon en hauteur normalement non
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Ah oui, pour la hauteur, c'est probablement parce que j'ai un peu triché
    En fait, j'ai ouvert la div, rajouté du texte via Firebug, puis fermé et réouvert ! Et là le contenu est tronqué, c'est parce que la hauteur est fixée en CSS
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    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
    Points : 4 835
    Points
    4 835
    Par défaut
    nop c'est parce que la hauteur calculé au moment ou l'on appel le script , mais par firebug , le contenu n'est pas géré via le dom ( bizare d'ailleur ) donc , pas de calcul du contenu mais bon a rajouter ça ... calcul dynamique de la taille , un pti offsetHeight / width ^^
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  8. #8
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    allez hop! vlà mon ptit système de panneaux Ikea (c'est du brut de décoration façon bricodépot, hein)

    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     
    <title>...</title>
     
    <style type="text/css">
     
     
    .boite {
    	position:relative;
    	width:100%;
    	overflow:hidden;
    	background-color:#ff0000;
    }
     
    .t{	text-align:center;
    	font-size:20px;
    	font-weight:bold;
    	background-color:#ffff00;
    	cursor:pointer;
    }
     
     
    .m{	position:absolute;
    	padding:10px;
     
    }
     
    </style>
     
     
    </head>
     
    <body>
     
     
    <div id="cadre" style="visibility:hidden">
     
    	<div id="boite0" class="boite" style="float:left">
    		<div id="t0" class="t">titre 1</div>
    		<div id="m0" class="m">
    Rien de spécial à dire<br />mais je tiens à le répéter.<br />Rien de spécial à dire<br />mais je tiens à le répéter.Rien de spécial à dire
    <br />mais je tiens à le répéter.Rien de spécial à dire
    <br />mais je tiens à le répéter. Rien de spécial à dire
    <br />mais je tiens à le répéter.Rien de spécial à dire
    <br />mais je tiens à le répéter.
    		</div>
    	</div>
     
     
    	<div id="boite1" class="boite" style="float:left;margin:50px">
    		<div id="t1" class="t">titre 2, un peu long mais bon</div>
    		<div id="m1" class="m">
    message numéro deux. <img src="http://javatwist.imingo.net/sm01.gif" alt="sm" />
    		</div>
    	</div>
     
     
    	<div>truc inutile</div>
     
     
    	<div id="boite2" class="boite" style="clear:left;margin:0px 0px 0px 400px">
    		<div id="t2" class="t">titre 3  (enfin je crois)</div>
    		<div id="m2" class="m">
    Test à outrance histoire de voir. TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    		</div>
    	</div>
     
     
    </div>
     
     
    <script type="text/javascript"> 
     
    var tab=[],b;
     
    document.getElementById("cadre").style.visibility="visible";
     
    for(i=0;i!=3;i++){ 	// j'avoue je n'ai pas pris le temps
    			//de sélectionner les conteneurs 
    			//de manière rationnelle. ^_^
     
    	document.getElementById("t"+i).ind=i;
    	document.getElementById("boite"+i).style.width=document.getElementById("m"+i).offsetWidth+20+"px";
     
    	tab[i]=new go(document.getElementById("m"+i),document.getElementById("t"+i));
     
    	document.getElementById("t"+i).onclick=function(e){
    		tab[this.ind].sens= !tab[this.ind].sens ? true : false;
    		clearInterval(tab[this.ind].timer);
    		tab[this.ind].timer=setInterval("tab["+this.ind+"].b()",tab[this.ind].delai)
    	}
    }
     
     
    function go(val,tit){
    	this.v=val.parentNode;
    	this.timer=false;
    	this.min=tit.offsetHeight;
    	this.col=tit.style;
    	this.min2=this.min;
    	this.sens=false;
    	this.max=val.offsetHeight+this.min;
    	this.delai=parseInt(Math.ceil(2000/this.max));
    }
     
    function bouge(){
    	with(this){
    		if(sens){		
    			if(min<max){
    				min+=10;
    				col.backgroundColor="lime";
    			}
    			else{
    				clearInterval(timer)
    			}
    		}
    		else{
    			if(min>min2){
    				min-=10;
    				col.backgroundColor="#ffff00";
    			}
    			else{
    				clearInterval(timer)
    			}
    		}
     
    		v.style.height=min+'px';	
    	}
     
    }
     
    go.prototype.b=bouge;
     
     
    document.onmousedown=function(){return false}
    document.onmouseup=function(){return false}
    if(typeof document.onselectstart!="undefined"){document.onselectstart=function(){return false}}
     
     
    </script> 
     
     
    </body>
    </html>
    http://javatwist.imingo.net/test.htm

    Je vous laisse découvrir les monstrueux avantages du système (je n'ai pas la fait la liste, c'était trop long)

  9. #9
    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
    Points : 4 835
    Points
    4 835
    Par défaut
    mouai je préfère ma méthode , ne serais ce qu'au niveau propreté du code
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  10. #10
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    bon, voilà du un peu plus rentable (mais c'est pas drôle, avec les commentaires, j'ai dû perdre 1 ou 2 ko) ^_^

    http://javatwist.imingo.net/panneau.htm

    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
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
     
    <title>...</title>
     
    <style type="text/css">
     
     
    .boite {
    	position:relative;
    	width:100%;
    	overflow:hidden;
    	background-color:#ff0000;
    }
     
    .t{	text-align:center;
    	font-size:20px;
    	font-weight:bold;
    	background-color:#ffff00;
    	cursor:pointer;
    }
     
     
    .m{	position:absolute;
    	padding:10px;
     
    }
     
    </style>
     
     
    </head>
     
    <body>
     
     
    <div id="cadre" style="visibility:hidden">
     
    	<div id="boite0" class="boite" style="float:left">
    		<div id="t0" class="t">titre 1</div>
    		<div id="m0" class="m">
    Rien de spécial à dire<br />mais je tiens à le répéter.<br />Rien de spécial à dire<br />mais je tiens à le répéter.Rien de spécial à dire
    <br />mais je tiens à le répéter.Rien de spécial à dire
    <br />mais je tiens à le répéter. Rien de spécial à dire
    <br />mais je tiens à le répéter.Rien de spécial à dire
    <br />mais je tiens à le répéter.
    		</div>
    	</div>
     
     
    	<div id="boite1" class="boite" style="float:left;margin:50px">
    		<div id="t1" class="t">titre 2, un peu long mais bon</div>
    		<div id="m1" class="m">
    message numéro deux. <img src="http://javatwist.imingo.net/sm01.gif" alt="sm" />
    		</div>
    	</div>
     
     
    	<div>truc inutile</div>
     
     
    	<div id="boite2" class="boite" style="clear:left;margin:0px 0px 0px 400px">
    		<div id="t2" class="t">titre 3  (enfin je crois)</div>
    		<div id="m2" class="m">
    Test à outrance histoire de voir. TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    		</div>
    	</div>
     
     
    	<div id="boite3" class="boite" style="margin:50px 0px 0px 400px">
    		<div id="t3" class="t">titre 4  (le même ou presque)</div>
    		<div id="m3" class="m">
    Test à outrance histoire de voir. <br />TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. <br />TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. <br />TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. <br />TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. <br />TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    Test à outrance histoire de voir. <br />TEST A OUTRANCE HISTOIRE DE VOIR.<br />
    <img src="http://javatwist.imingo.net/sm01.gif" alt="sm" />
    <img src="http://javatwist.imingo.net/sm01.gif" alt="sm" />
    <img src="http://javatwist.imingo.net/sm01.gif" alt="sm" />
    <img src="http://javatwist.imingo.net/sm01.gif" alt="sm" />
    <img src="http://javatwist.imingo.net/sm01.gif" alt="sm" />
    <img src="http://javatwist.imingo.net/sm01.gif" alt="sm" />
    		</div>
    	</div>
     
    </div>
     
     
    <script type="text/javascript"> 
     
     
    var tab=[], box, cl=[];
     
    function q(b){
    	return document.getElementById(b);
    }
     
    //******************************************************
    // collection de tous les titres cliquables (classe "t")
    //******************************************************
    box=q("cadre").getElementsByTagName("div");
    for (i in box){
    	if(box[i].className=="t"){
    		cl.push(box[i]);
    	}
    }
     
     
     
    for(i=0;i!=cl.length;i++){ 
    	cl[i].ind=i;
    	// largeur du panneau = largeur du texte
    	cl[i].parentNode.style.width=q("m"+i).offsetWidth+20+"px";
    	// création de l'objet panneau, archivé dans un tableau;
    	tab[i]=new go(q("m"+i),cl[i]);
    	// le clic sur le titre déclenche l'enroulement / déroulement
    	cl[i].onclick=function(){
    		tab[this.ind].s()
    	}
    }
     
    q("cadre").style.visibility="visible";
     
     
    //********************************
    // objet panneau et ses propriétés
    //********************************
    function go(val,tit){
    	this.v=val.parentNode;
    	this.timer=false;
    	this.min=tit.offsetHeight;
    	this.col=tit.style;
    	this.min2=this.min;
    	this.sens=false;
    	this.max=val.offsetHeight+this.min;
    	this.delai=parseInt(Math.ceil(2000/this.max));
    	this.timer=false;
    }
     
    //******************************************************************
    // choix automatique du sens et appel au défilement, par intervalles
    //******************************************************************
    function s(){
    	this.sens= ! this.sens ? true : false;
    	bis=this;
    	this.timer=setInterval(function(){bis.b()},this.delai);
    }
     
     
    //***************************************************
    // augmentation / diminution de la hauteur du contenu
    //***************************************************
    function b(){
    	with(this){
    		if(sens){		
    			if(min<max){
    				min+=10;
    				col.backgroundColor="lime";
    			}
    			else{
    				clearInterval(timer)
    			}
    		}
    		else{
    			if(min>min2){
    				min-=10;
    				col.backgroundColor="#ffff00";
    			}
    			else{
    				clearInterval(timer)
    			}
    		}
     
    		v.style.height=min+'px';	
    	}
     
    }
     
    //***************************************************
    // affectation des 2 méthodes à l'objet panneau
    //***************************************************
    go.prototype.b=b;
    go.prototype.s=s;
     
     
    //***************************************
    // texte non sélectionnable (à l'arrache)
    //***************************************
    document.onmousedown=function(){return false}
    document.onmouseup=function(){return false}
    if(typeof document.onselectstart!="undefined"){document.onselectstart=function(){return false}}
     
     
    </script> 
     
     
    </body>
    </html>

  11. #11
    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
    Points : 4 835
    Points
    4 835
    Par défaut
    Toujours pas ^^
    explication :

    tes méthodes , sont une suite d'instruction , sans réel schéma objet, ce qui fait que d'une il faut un certain temps pour comprendre le code ( aussi simple soit-il je te rassure) mais cela devient encore plus compliqué pour effectuer des modification etc ...

    le principe de base :
    - appel méthode (param,callback)

    le callback représentera un appel de méthode en fin d'instruction ( c'est un exemple )

    - programmation objet :
    -- nouvelle méthode () permet de se référer au méthode/propriété de l'objet courant

    hors dans ton cas , il faudrait passer en paramètre l'objet sur lequel on travaille

    ton code est malgrès tout "propre" par rapport a la majorité des gens , et bien pensé ( hormis qqs erreur due a une certaine feignantise lol ) je suis critique et ce n'est pas souvent, mais mon code n'est pas mieux je te rassure il y a aussi qqs erreurs ...

    Attaque un script orienter full object et la on pourra commencer a s'amuser ^^
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  12. #12
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    tes méthodes , sont une suite d'instruction , sans réel schéma objet, ce qui fait que d'une il faut un certain temps pour comprendre le code ( aussi simple soit-il je te rassure) mais cela devient encore plus compliqué pour effectuer des modification etc ...
    alors là, j'appelle mon avocat

    sans déc? t'as vu ton code? il me faut à peu près trois-quart d'heure pour décrypter une ligne

    et puis, sans blague, je voulais un système me permettait d'ajouter n'importe quel panneau dans la page sans prise de tête;

    pour le côté objet, même si je ne suis pas d'accord avec "il faudrait passer en paramètre l'objet sur lequel on travaille", j'avoue que ça ne me tente pas de me griller des neurones pour une banale histoire de volet roulant; en règle générale, je ne crée des objets que quand jai à gérer plusieurs timers asynchrones;

    soit dit en passant, je peux inverser le défilement en cours de timer


    [non mais quelle mauvaise foi ce mec ]

  13. #13
    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
    Points : 4 835
    Points
    4 835
    Par défaut
    mdrrrr t'es chié

    allez explications ?


    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
     
    /**
    			 * METHODE PERMETTANT DE RECUPERER DES OBJETS PAR RAPPORT A SA CLASSE ET/OU UN CONTENEUR ET TYPE DE TAG
    			 * @param {className} Nom de la classe recherchée
    			 * @param {tag} Permet de filtrer par exemple uniquement sur des div ou des li ou autre
    			 * @param {elm} Représente , le parent dans lequel effectuer la recherche ( par défaut le document ) 
    			 */
    			function getElementsByClassName(className, tag, elm){
    				var testClass = new RegExp("(^|s)" + className + "(s|$)");
    				var tag = tag || "*";
    				var elm = elm || document;
    				var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
    				var returnElements = [];
    				var current;
    				var length = elements.length;
    				for(var i=0; i<length; i++){
    					current = elements[i ];
    					if(testClass.test(current.className)){
    						returnElements.push(current);
    					}
    				}
    				return returnElements;
    			};
     
    			/**
    			 * L'obejet de type togle.
    			 * Cet objet comporte 2 méthodes principales :
    			 * - create, permet de créer , et retourner l'objet qui sera affecter par l'effet
    			 * - move, qui permet d'effectuer l'action sur l'objet, ce qui permet d'agir sur l'objet a partir de n'importe quel autre.
    			 * @param {target} définit sur quel objet , on va effectuer la méthode de replis et d'ouverture
    			 */
    			var Toggle = {
    			    create: function(target) {
    			        return {
    						//Déclaration et instantiation des propriétés
    			            id: "no name",
    			            orientation: "vertical",
    						myObject : target,
    			            min: 0,
    			            max: target.offsetHeight,
    			            speed: 350,
    						isOpen : true,
    						//Méthode move , effectuant les calculs
    			            move: function(titleChange) {
    							if(this.myObject.testTime == null){
    								start = (this.isOpen) ? this.max:this.min;
    								end = (this.isOpen) ? this.min:this.max;
    				                c = (350 / 50);
    				                d = Math.round(this.speed / c);
    				                w = new Array();
    								this.myObject.currentStepX = 0;
    								this.myObject.testTime = null;
    								//Etape permettant de calculer les pas pour avoir une animation fluide et dont la durée sera
    								//toujours la même, quelque soit la hauteur du conteneur
    				                for (var i = 1; i <= d; i++) {
    				                    w.push(this.easeOutCubic(i * c, start, end - start, this.speed))
    				                }
    								titleChange.className = (this.isOpen) ? "toggleTitle close":"toggleTitle open"
    				                this.go(this,c,w);
    							}
    			            },
    						//Méthode effectuant l'ouverture ou fermeture
    			            go: function(b, c , w) {
    			                b.myObject.testTime = window.setInterval(function() {
    			                    var a = true;
    			                    if (w[b.myObject.currentStepX]) {
    			                        b.myObject.style['height'] = w[b.myObject.currentStepX] + 'px';
    			                        b.myObject.currentStepX++;
    			                        a = false
    			                    }
    			                    if (a) {
    			                        window.clearInterval(b.myObject.testTime);
    			                        b.myObject.testTime = null;
    									b.isOpen = (b.isOpen) ? false:true;
    			                        if (b.callBack) {
    			                            b.callBack()
    			                        }
    			                        return
    			                    }
    			                },
    			                c);
    			            },
    						//Méthode d'algo calculant les pas ;)
    						easeOutCubic : function (t, b, c, d) {
    			 				return c*((t=t/d-1)*t*t + 1) + b;
    						}
    			        }
    			    }
    			};
    j'ai volontairement fais le choix de devoir attendre l'ouverture et la fermeture pour éviter des coûts de calcul pour pas grand chose ^^
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  14. #14
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    oui bon, pour conclure on fait pareil sauf que t'es beaucoup plus bavard

  15. #15
    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
    Points : 4 835
    Points
    4 835
    Par défaut
    On fait la même chose sauf que tu es beaucoup plus faignant

    adjugé lool
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  16. #16
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    oui mais c'est la Flemme qui fait économiser l'Energie et le Poids des lignes;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    E= !F ? P : Math.sqrt(P);
    tiens je vais me le mettre en devise

    En tout cas, je suis content d'avoir gagné, une fois de plus

  17. #17
    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
    Points : 4 835
    Points
    4 835
    Par défaut
    pas daccord , même si nos applis font la même chose , la mienne est plus jolie esthétiquement ;-) et l'effet d'ouverture , ne prendra pas 3 ans sur une page super grande :p
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  18. #18
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    Citation Envoyé par le_chomeur Voir le message
    et l'effet d'ouverture , ne prendra pas 3 ans sur une page super grande :p
    nan mais j'y crois pas... si c'est pas de la provoc ça

    Citation Envoyé par le_chomeur Voir le message
    même si nos applis font la même chose , la mienne est plus jolie esthétiquement
    certes: la tienne est seulement 3 fois plus lourde pour bouger un bête texte de haut en bas;
    et puis la mienne, au moins, même Spafy peut la comprendre, ce qui n'est pas rien

    restons simple: javascript n'est qu'un langage inventé pour faire rigoler le public - et c'est déjà énorme - , pas un succédané de java...


    ps: "jolie esthétiquement" est un pléonasme, non?


  19. #19
    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
    Points : 4 835
    Points
    4 835
    Par défaut
    hooo le salopiaud , il a osé !! ;-)
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  20. #20
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 648
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 648
    Points : 11 137
    Points
    11 137
    Par défaut
    Ils sont très bien vos scripts, pas la peine de vous disputer.
    Sinon ouvrez une section Défis


    tout ça pour des volets roulants

Discussions similaires

  1. [Graphique] Camembert en php sans librairie
    Par frogs dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 10/11/2008, 14h03
  2. Réponses: 9
    Dernier message: 04/05/2008, 12h18
  3. Lecture midi, portable et sans librairie
    Par otspot dans le forum C++
    Réponses: 4
    Dernier message: 20/01/2008, 20h40
  4. jsf ajaxisé sans librairie supplémentaire
    Par bashou dans le forum JSF
    Réponses: 2
    Dernier message: 01/10/2007, 23h20
  5. Lecture fichier wav sans librairie
    Par websurfeur dans le forum C
    Réponses: 3
    Dernier message: 12/09/2006, 10h51

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