【问题标题】:jQuery UI accordion and box-sizing: border-boxjQuery UI 手风琴和盒子大小:border-box
【发布时间】:2013-05-01 03:38:45
【问题描述】:

我只是第一次使用 jQueryUI,我对我能用它做些什么感到非常兴奋。然而,我似乎很快就遇到了问题,因为我在我的页面上使用了 box-sizing:border-box。

例如,如果我在页面上有这个基本的 HTML(手风琴标签内的文本在我的真实页面中更丰富,这只是为了演示目的):

<div id='accordion'>
<h3>Header 1</h3>
<div>This is <a href="#">paragraph one</a>.</div>
<h3>Header 2</h3>
<div>This is <a href="#">paragraph two</a>.</div>            
<h3>Header 3</h3>
<div>This is paragraph three.</div>
</div>

我可以用 jQuery 把它变成手风琴:$('#accordion').accordion()

但是,如果 box-sizing 设置为 border-box :

* {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;

}

然后,每当我打开手风琴部分时(在最后),手风琴部分就会有一个非常不愉快的“啪”声。如果我删除 box-sizing 设置(不是一个可能的永久解决方案),那么“快照”就会消失。

真的不能仅仅因为我将 box-sizing 设置为 border-box 而不能使用 jQueryUI 手风琴吗?我想我可以修改他们的代码以使用 box-sizing...但显然我更愿意避免这种情况(部分原因是我没有足够的能力正确地做到这一点)。

我惊讶地发现以前没有人问过这个问题......所以我猜这是一个我不知道的非常明显的解决方案。

谢谢!

【问题讨论】:

  • 请参阅下面我对 dfsq 的回复。问题似乎与 heightStyle 中的 'auto' 选项有关: (1) box-sizing:border-box 不适用于 'auto'; (2) 设置父 div 的宽度也不适用于 'auto'!
  • 错误是在 jqueryui.com 上创建的:bugs.jqueryui.com/ticket/9264

标签: css jquery-ui jquery-ui-accordion


【解决方案1】:

尝试使用heightStyle选项:

$('#accordion').accordion({
    heightStyle: 'content'
});

http://jsfiddle.net/HNp5r/

我不确定为什么它可以解决问题。

【讨论】:

  • 嗯,这很有趣。将进一步调查...此外,jsfiddle.net 是一项很棒的服务,感谢您提供链接。
  • FWIW,我在摆弄 heightStyle 并注意到“自动”在我的页面上并没有像在 jsfiddle 上那样做。我发现如果设置了包含面板的宽度,那么“自动”就会中断:jsfiddle.net/HNp5r/3。所以看起来这个手风琴小部件除了盒子大小的东西之外还有一些不稳定的高度计算代码:(
  • 暂定结论:heightStyle 的 'auto' 选项在以下情况下中断:(a) 在父面板上设置了宽度,并且 (b) 设置了 box-sizing:border-box。但是,“内容”选项在这两种情况下都有效。我猜这只是一个错误。非常令人失望,但感谢您的帮助!
猜你喜欢
  • 2016-06-13
  • 1970-01-01
  • 1970-01-01
  • 2015-02-17
  • 2011-08-05
  • 2011-01-31
  • 2010-12-26
  • 2012-01-30
  • 1970-01-01
相关资源
最近更新 更多