我正在使用 Twitter bootstrap 开发应用程序。 2列布局。一个侧边栏和主要内容。以下是布局。
<div class="container-fluid">
<div class="row-fluid">
<div class="span3 target">
<!--Sidebar content-->
</div>
<div class="span9 ">
<i class="icon-chevron-left toggles"></i>
<!--Body content-->
</div>
</div>
</div>
单击内容中的链接时,我想隐藏侧边栏和占据整个页面的内容。目前我设法做到了这一点,
$(document).ready(function(){
$(window).resize(function () { plot(); });
$('.toggles').click(function() {
$('.target').toggle('fast', function() {
$('.contents').toggleClass('span12'),
$('.contents').toggleClass('span9'),
$('.toggles').toggleClass('icon-chevron-right'),
});
});
});
但是我在隐藏 span3 后在左侧看到了一个边距。这需要删除。同样在这种隐藏方法中,第一次单击 span3 隐藏并且 span9 更改为 span12。这在某种程度上工作正常。但是在第二次点击时,span3 首先显示,然后只有内容 span12 减少到 span9。由于这个内容跳下来,直到它减少到 span9。我想解决这个问题。第二次点击时,span12 首先显示 9,然后侧边栏显示..类似的东西。
我看过很多类似的帖子,其中使用类“content”和“sidebar”而不是“spanXX”。但它在我的情况下不起作用。我不知道为什么。 请帮助我..
最佳答案
由于 jQuery 添加的切换效果动画,您的 span9
div 正在跳下,它会同时设置宽度和高度的动画,因此被切换的 div 周围的内容会随着动画去。您可以通过将动画过程加速到 100
毫秒或绝对定位侧边栏来克服这个问题。至于由于 bootstrap.css
本身引起的边距问题,在第 222 行我们有以下内容:
.row-fluid > [class*="span"]:first-child {
margin-left: 0;
}
first-child
伪元素将 margin:0
属性赋予第一个元素,在本例中是正在切换的侧边栏,因此一旦侧边栏被隐藏第二个 span
标签(content div)不继承此属性并保留应用于 span
标签的默认 margin
,例如
.row-fluid > [class*="span"] {
float: left;
margin-left: 2.127659574%;
}
您可以使用 jQuery 克服边距问题。
这是我制作的几个演示:
更新了 fiddle,修复了评论者发现我没有注意到的问题,现在它可以正常工作了。添加了一个 .no-sidebar
类,它是在切换时添加的,它删除了 Bootstrap 创建的 margin-left
,所以现在它可以很好地与响应式样式表一起工作。
关于jquery - Twitter Bootstrap 流体容器侧边栏切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9210878/