Comment faire pour basculer (Cacher / Montrer) sidebar div en utilisant jQuery
j'en ai 2 <div>
id A
et B
. div A
a une largeur fixe, qui est considéré comme une barre latérale.
la mise en page ressemble au diagramme ci-dessous;
Le style est comme ci-dessous;
html, body {
margin: 0;
padding: 0;
border: 0;
}
#A, #B {
position: absolute;
}
#A {
top: 0px;
width: 200px;
bottom: 0px;
}
#B {
top: 0px;
left: 200px;
right: 0;
bottom: 0px;
}
j'ai <a id="toggle">toggle</a>
qui agit comme un bouton à bascule. Sur le clic de bouton à bascule, la barre latérale peut se cacher à gauche et div B
devrait s'étirer pour remplir l'espace vide. Sur le deuxième clic, la barre latérale peut réapparaître à l' position antérieure et div B
devrait reculer à la largeur précédente.
Comment faire avec jQuery?
8 réponses
$('button').toggle(
function() {
$('#B').css('left', '0')
}, function() {
$('#B').css('left', '200px')
})
vérifier l'exemple de travail à http://jsfiddle.net/hThGb/1/
vous pouvez aussi voir n'importe quelle version animée à http://jsfiddle.net/hThGb/2/
Voir ce violon pour avoir un aperçu et vérifier la documentation de jquerys bascule et animer méthodes.
$('#toggle').toggle(function(){
$('#A').animate({width:0});
$('#B').animate({left:0});
},function(){
$('#A').animate({width:200});
$('#B').animate({left:200});
});
fondamentalement vous animez sur les propriétés qui déterminent la mise en page.
Une version plus avancée:
$('#toggle').toggle(function(){
$('#A').stop(true).animate({width:0});
$('#B').stop(true).animate({left:0});
},function(){
$('#A').stop(true).animate({width:200});
$('#B').stop(true).animate({left:200});
})
ceci arrête l'animation précédente, efface la file d'attente de l'animation et commence la nouvelle animation.
Vous pouvez visiter w3school pour la solution sur ce le lien est iciPrendre un coup d'oeil
ce qui suit fonctionnera avec les nouvelles versions de jQuery.
$(window).on('load', function(){
var toggle = false;
$('button').click(function() {
toggle = !toggle;
if(toggle){
$('#B').animate({left: 0});
}
else{
$('#B').animate({left: 200});
}
});
});
Utilisant Javascript
var side = document.querySelector("#side");
var main = document.querySelector("#main");
var togg = document.querySelector("#toogle");
var width = window.innerWidth;
window.document.addEventListener("click", function() {
if (side.clientWidth == 0) {
// alert(side.clientWidth);
side.style.width = "200px";
main.style.marginLeft = "200px";
main.style.width = (width - 200) + "px";
togg.innerHTML = "Min";
} else {
// alert(side.clientWidth);
side.style.width = "0";
main.style.marginLeft = "0";
main.style.width = width + "px";
togg.innerHTML = "Max";
}
}, false);
button {
width: 100px;
position: relative;
display: block;
}
div {
position: absolute;
left: 0;
border: 3px solid #73AD21;
display: inline-block;
transition: 0.5s;
}
#side {
left: 0;
width: 0px;
background-color: red;
}
#main {
width: 100%;
background-color: white;
}
<button id="toogle">Max</button>
<div id="side">Sidebar</div>
<div id="main">Main</div>
$('#toggle').click(function() {
$('#B').toggleClass('extended-panel');
$('#A').toggle(/** specify a time here for an animation */);
});
.extended-panel {
left: 0px !important;
}
$(document).ready(function () {
$(".trigger").click(function () {
$("#sidebar").toggle("fast");
$("#sidebar").toggleClass("active");
return false;
});
});
<div>
<a class="trigger" href="#">
<img id="icon-menu" alt='menu' height='50' src="Images/Push Pin.png" width='50' />
</a>
</div>
<div id="sidebar">
</div>
à la place #sidebar donner l'id d'ur div.
cela aide à cacher et montrer la barre latérale, et le contenu prend place de l'espace vide laissé par la barre latérale.
<div id="A">Sidebar</div>
<div id="B"><button>toggle</button>
Content here: Bla, bla, bla
</div>
//Toggle Hide/Show sidebar slowy
$(document).ready(function(){
$('#B').click(function(e) {
e.preventDefault();
$('#A').toggle('slow');
$('#B').toggleClass('extended-panel');
});
});
html, body {
margin: 0;
padding: 0;
border: 0;
}
#A, #B {
position: absolute;
}
#A {
top: 0px;
width: 200px;
bottom: 0px;
background:orange;
}
#B {
top: 0px;
left: 200px;
right: 0;
bottom: 0px;
background:green;
}
/* makes the content take place of the SIDEBAR
which is empty when is hided */
.extended-panel {
left: 0px !important;
}