Toggle en position fermé par défaut
Résolu
jp.bond
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
-
jp.bond Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
jp.bond Messages postés 7 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'etais à la recherche d'un moyen de faire un toggle et j'ai trouvé une source qui me convenait parfaitement ici : http://mbox.tuxfamily.org/toggle/
tout fonctionne, c'est assez simple, il y a juste un point que je n'arrive pas à faire : faire en sorte qu'à l'ouverture de ma page le toggle soit en position fermé ou replié par défaut (et pas ouvert comme dans l'exemple) mais je ne suis pas assez calé en javascript pour comprendre ce code.
Pouvez vous m'aider ?
pour gagner du temps, je remets le code complet de la page exemple ci dessous :
merci de votre aide
j'etais à la recherche d'un moyen de faire un toggle et j'ai trouvé une source qui me convenait parfaitement ici : http://mbox.tuxfamily.org/toggle/
tout fonctionne, c'est assez simple, il y a juste un point que je n'arrive pas à faire : faire en sorte qu'à l'ouverture de ma page le toggle soit en position fermé ou replié par défaut (et pas ouvert comme dans l'exemple) mais je ne suis pas assez calé en javascript pour comprendre ce code.
Pouvez vous m'aider ?
pour gagner du temps, je remets le code complet de la page exemple ci dessous :
<!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>
merci de votre aide
A voir également:
- Toggle en position fermé par défaut
- Ma position - Guide
- Rouvrir onglet fermé chrome - Guide
- Ouvrir avec par défaut - Guide
- Suivi position google - Guide
- Dns par defaut - Guide
4 réponses
bonsoir jp.bond
<style>
#iddutrucatoggler{
display:none;
}
</style>
$('#l'iddutrucacliquer').click(function() {
$('#iddutrucatoggler').toggle();
)}
ceci en utilisant jquery
--
<style>
#iddutrucatoggler{
display:none;
}
</style>
$('#l'iddutrucacliquer').click(function() {
$('#iddutrucatoggler').toggle();
)}
ceci en utilisant jquery
--
jp.bond
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
euh là je t'avoue que j'ai rien compris...lol
jp.bond
Messages postés
7
Date d'inscription
Statut
Membre
Dernière intervention
ah ok, je vois...merci !
bonsoir
il est bien compliqué pour pas grand chose se code.
je t'en post un demain qui fait la même chose plus simplement
il est bien compliqué pour pas grand chose se code.
je t'en post un demain qui fait la même chose plus simplement
effectivement, vos remarques m'ont permis de trouver la voie...avec le jquery toggle() je me suis débrouillé avec un truc comme ca :
$("#click1").click(function () {
$("#niv1").toggle("slow");
});
et en mettant un display:none sur mon style toggle.
ca marche nickel et c'est bcp plus simple...
merci
$("#click1").click(function () {
$("#niv1").toggle("slow");
});
et en mettant un display:none sur mon style toggle.
ca marche nickel et c'est bcp plus simple...
merci
donc au final, voila un code global qui fonctionne.
A vous de récuperer les images et de les placer à la racine du dossier et de les adapter selon vos souhaits :
A vous de récuperer les images et de les placer à la racine du dossier et de les adapter selon vos souhaits :
<!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; background:url('background.png') 0px -36px no-repeat; } .toggleTitle:hover{ color: #66CC33; } .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:490px; padding:5px; background:url('content.png') repeat-y; } .toggle{ overflow:hidden; display:none; } </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> <script src="http://code.jquery.com/jquery-latest.js"></script> </head> <body> <div id="click1"><a id="a1" href="#" class="toggleTitle">Ouvre</a></div> <div id="niv1" 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"> $("#click1").click(function () { $("#niv1").toggle("slow"); $('#a1.toggleTitle').toggleClass('open'); }); </script> </body> </html>