J'ai fait ce script, qui ouvre une div avec la bonne classe et ferme les autres.
function showhide(id) {
if (document.getElementById) {
var divid = document.getElementById(id);
var divs = document.getElementsByClassName("hideable");
for (var i = 0; i < divs.length; i = i + 1) {
divs[i].style.display = "none";
}
divid.style.display = "block";
}
return false;
}
Est-il possible de créer une animation, comme un fadout, un relâchement au lieu de simplement l'afficher à l'aide d'options d'affichage?
Tu pourrais essayer ça
function showhide(id) {
if (document.getElementById) {
var divid = document.getElementById(id);
var divs = document.getElementsByClassName("hideable");
for (var i = 0; i < divs.length; i = i + 1) {
$(divs[i]).fadeOut("slow");
}
$(divid).fadeIn("slow");
}
return false;
}
Regardez ce violon " http://jsfiddle.net/9jtd3/ "
La bibliothèque Jquery propose de nombreuses autres techniques. Vous devriez également y jeter un coup d'œil.
Si vous utilisez Jquery, une autre façon de le faire est
function showhide(id) {
$(".hideable".fadeOut("slow");
$("#" + id).fadeIn("slow");
}
En supposant que "cachable" soit className dans votre groupe de div
Bonne chance.
Ceci va sûrement résoudre votre problème.
Vous pouvez utiliser directement .fadeOut () si vous avez inclus la bibliothèque jQuery dans votre script.
Vous pouvez utiliser slideDown() and slidUp()
de jQuery
$( document.body ).click(function () {
if ( $( "div:first" ).is( ":hidden" ) ) {
$( "div" ).slideDown( "slow" );
} else {
$( "div" ).slideUp("slow");
}
});
C'est beaucoup plus facile avec seulement CSS.
Vous faites un cours
div {
display:block;
transition: all .2s ease-out;
}
.hidden {
display:none;
}
Et avec javascript, vous appliquez ou supprimez la classe masquée lorsque vous le souhaitez. jQuery animation lib est loin d’être utile. C'est maladroit, et ressource mangeant pour votre utilisateur. CSS utilise plutôt votre GPU, ce qui permet une animation plus fluide.