我有2 <div>
个ids A
和B
。 div A
有一个固定的宽度,作为侧边栏。
布局如下图所示;
样式如下所示;
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;
}
我有<a id="toggle">toggle</a>
作为切换按钮。在切换按钮单击时,侧边栏可能会隐藏到左侧,div B
应该伸展以填充空白区域。在第二次单击时,侧边栏可能会重新出现在上一个位置,而div B
应缩小回前一个宽度。
如何使用jQuery完成此操作?
答案 0 :(得分:25)
$('button').toggle(
function() {
$('#B').css('left', '0')
}, function() {
$('#B').css('left', '200px')
})
答案 1 :(得分:12)
请参阅this fiddle进行预览,并查看jquerys toggle和animate方法的文档。
$('#toggle').toggle(function(){
$('#A').animate({width:0});
$('#B').animate({left:0});
},function(){
$('#A').animate({width:200});
$('#B').animate({left:200});
});
基本上,您可以设置设置布局的属性。
更高级的版本:
$('#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});
})
这会停止上一个动画,清除动画队列并开始新动画。
答案 2 :(得分:4)
您可以访问w3school以获得有关此链接的解决方案,链接为here,另外还有一个示例可能肯定会有所帮助, Take a look
答案 3 :(得分:1)
以下内容适用于新版本的jQuery。
$(window).on('load', function(){
var toggle = false;
$('button').click(function() {
toggle = !toggle;
if(toggle){
$('#B').animate({left: 0});
}
else{
$('#B').animate({left: 200});
}
});
});
答案 4 :(得分:1)
使用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);
&#13;
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;
}
&#13;
<button id="toogle">Max</button>
<div id="side">Sidebar</div>
<div id="main">Main</div>
&#13;
答案 5 :(得分:0)
$('#toggle').click(function() {
$('#B').toggleClass('extended-panel');
$('#A').toggle(/** specify a time here for an animation */);
});
并在CSS中:
.extended-panel {
left: 0px !important;
}
答案 6 :(得分:0)
$(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>
而是#sidebar给出你的div的id。
答案 7 :(得分:-1)
这有助于隐藏和显示侧边栏,内容取代侧边栏留下的空白区域。
<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;
}