你怎么能调整一个jQuery UI手风琴的高度?
在我的用户界面,我有一个手风琴设置像这样:
<div id="object_list"> <h3>Section 1</h3> <div>...content...</div> // More sections </div>
手风琴刚成形时就能正常工作,而且每一部分的内容似乎都能很好地调整。 但是,如果我在.accordion()调用之后(通过ajax)将更多内容添加到手风琴中,则该部分的内部结束溢出。
由于手风琴几乎没有形成内容,所有的内部divs都非常小,因此内容溢出,你可以在里面拿到滚动条的手风琴,几乎没有可视区域。
我试图添加最小高度的样式到object_list div,而内容div无济于事。 将最小高度添加到内部div的工作方式,但它搅乱了手风琴的animation,并将其添加到object_list div没有任何作用。
即使没有足够的内容填充这些部分,我如何才能从内容部分中获得合理的大小?
当您声明手风琴控制div时,可以在div的style标签中join一个高度。 然后,您可以设置fillSpace:true属性来强制手风琴控制无论如何填充该div空间。 这意味着您可以将高度设置为最适合您的页面。 您可以在添加代码时更改div的高度
如果您希望手风琴根据需要dynamic调整其包含的内容,您可以在jQuery UI网站上发布以下技巧。
//getter var autoHeight = $( ".selector" ).accordion( "option", "autoHeight" ); //setter $( ".selector" ).accordion( "option", "autoHeight", false );
这意味着当你select一个文字很多的区域时,手风琴会重新计算它。
autoHeight在1.9中被弃用,在1.10中被删除。
使用:
$('#id').accordion({heightStyle: 'content'});
自动调整你的内部分区。
更新:
我看到这个post还是相当活跃的,所以我决定确保我的回答仍然有效。 看起来这可能不再适用于jQuery UI 1.11 。 它注意到[content]属性已被弃用,并使用[panel]来代替。 现在编写代码片段看起来更像这样:
$('#id').accordion({heightStyle: 'panel'});
我还没有testing过这个,只是发现了,当我有时间testing的时候,会返回并删除这个评论
从文档听起来像你需要设置
clearStyle: true
…并且
autoHeight: false
我相信,使用clearStyle允许您dynamic地添加内容,而无需使用Accordion。
所以试试这个…
$( ".selector" ).accordion({ clearStyle: true, autoHeight: false });
它看起来像所有的答案现在使用不推荐使用的选项。
使用最新版本的jQuery UI(1.10.x),您应该使用heightStyle: "fill"
初始化手风琴heightStyle: "fill"
以获得预期的效果。
$(".selector").accordion({ heightStyle: "fill" });
你可以阅读更多在这里的jQuery UI API文档: http : //api.jqueryui.com/accordion/#option-heightStyle
如果页面尺寸dynamic变化,并且需要重新计算手风琴尺寸,则应使用refresh
方法刷新手风琴:
$(".selector").accordion("refresh");
这是首选,因为resize
方法现在已被弃用。
设置DIV的高度将有所斩获。
$(document).ready(function() { $("#accordion").show().accordion({ autoHeight: false }); $("#accordion div").css({ 'height': 'auto' }); });
在你的jquery-ui.js中search以下部分,并改变heightstyle: "auto"
到heightstyle: "content"
所以更新后的文件将如下所示。
var accordion = $.widget( "ui.accordion", { version: "1.11.4", options: { active: 0, animate: {}, collapsible: false, event: "click", header: "> li > :first-child,> :not(li):even", heightStyle: "content", icons: { activeHeader: "ui-icon-triangle-1-s", header: "ui-icon-triangle-1-e" }, // callbacks activate: null, beforeActivate: null },
只要调用手风琴的.resize()
方法,这将重新计算其大小。 http://docs.jquery.com/UI/Accordion#method-resize
我最近设置了一个手风琴,通过ajax检索内容,当一个标签被激活并遇到同样的问题。 我尝试使用这里发布的一些build议,但是直到我将heightStyle设置为content时,才正确地增大了面板的大小。
$("#myaccordion").accordion({ heightStyle: "content", activate: function(event ui) { //use ajax to retrieve content here. } });
我使用jQuery-UI版本1.10.4。
对我来说做下面的准确工作。
$( "#accordion" ).accordion({ autoHeight: false,
});