默认展开/折叠?
我正在使用Twitter Bootstrap和jQuery。
根据bootstrap文档,如果您希望将可折叠元素作为默认打开,请将其添加为“in”。 如果您希望可折叠元素折叠为默认值,则将高度设置为0px。
这一切都很好,很好。
我想使用媒体查询将元素在大屏幕上设置为默认,并在小屏幕上将其折叠为默认值(然后单击以在两者上切换)...
我的HTML:
<div class="accordion" id="accordion1">
<div class="accordion-group">
<div class="accordion-heading">
Heading text.
<a class="accordion-toggle" data-toggle="collapse" href="#collapseOne">
(Click to show/hide)
</a>
</div>
<div id="collapseOne" class="accordion-body collapse">
<div class="accordion-inner">
Lorem ipsum.
</div>
</div>
</div>
</div>
我的CSS:
@media (min-width: 768px) {
.collapse {
height: auto;
}
}
@media (max-width: 767px) {
.collapse {
height: 0px;
}
}
这工作正常,直到你开始点击它...
默认情况下,元素在767px以下折叠,元素上方默认打开。 正确。
在767px以下,你可以点击打开元素,并打开罚款。 再次点击并隐藏。 冲洗并重复。 正确。
当您点击折叠元素时,超过767px,会关闭,但会重新打开。 再次点击它,并关闭并保持关闭。 再次点击,它打开罚款。 再次点击并关闭。
因此,出于某种原因767px以上(当元素默认打开时),它需要两次点击才能使其保持折叠状态,而不会重新打开,然后工作正常。
思考?
您无法仅通过媒体查询来实现此类行为,因为Twitter Bootstrap的Accordion会查找.in
类以展开/折叠相应的.accordion-body
。
一个选项是检测页面加载时的窗口宽度,然后添加使用Bootstrap的.collapse()
方法来显示/隐藏.collapse()
.accordion-body
。
$(function(){
$(window).resize(function() { // Optional: if you want to detect when the window is resized;
processBodies($(window).width());
});
function processBodies(width) {
if(width > 768) {
$('.accordion-body').collapse('show');
}
else {
$('.accordion-body').collapse('hide');
}
}
processBodies($(window).width());
});
DEMO:http://jsfiddle.net/grim/z2tNg/
链接地址: http://www.djcxy.com/p/74289.html下一篇: A good way to structure AngularJS client code with Play 2.1 as backend