2013-04-30 2 views
3

Я просто играю с jQueryUI в первый раз и очень волнуюсь за то, что я могу с ним сделать. Тем не менее, я, кажется, столкнулся с проблемами довольно быстро, так как я использую box-size: border-box на своих страницах.jQuery UI аккордеон и размер коробки: 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().

Однако, если коробка-калибрование установлен пограничный ящик с:

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

}

Тогда есть очень неприятный «хватка» в секции аккордеона всякий раз, когда я открываю один вверх (в в самом конце). Если я удалю настройку размера коробки (не возможное, постоянное решение), тогда «привязка» исчезнет.

Может ли это быть так, что я не могу использовать аккордеоны jQueryUI просто потому, что я установил размер окна в рамку? Полагаю, я мог бы изменить свой код для работы с размером окна ... но, очевидно, я бы предпочел избежать этого (отчасти потому, что я недостаточно компетентен, чтобы сделать это правильно).

Я был удивлен, увидев, что этого раньше не спрашивали ... поэтому я предполагаю, что это очень очевидное решение, о котором я просто не знаю.

Спасибо!

+0

См. Мои ответы на dfsq ниже. Проблемы, похоже, связаны с опцией «auto» в heightStyle: (1) размер окна: border-box не работает с «auto»; (2) установка ширины родительского div не работает также с «авто»! – EleventyOne

+0

Ошибка была создана на jqueryui.com: http://bugs.jqueryui.com/ticket/9264 – EleventyOne

ответ

1

Попробуйте использовать heightStyle вариант:

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

http://jsfiddle.net/HNp5r/

Я не знаю, почему он исправляет эту проблему, хотя.

+0

Хммм, это очень интересно. Будет исследовать далее ... Кроме того, jsfiddle.net - БОЛЬШОЕ обслуживание, спасибо за ссылку на него. – EleventyOne

+0

FWIW, я возился с heightStyle и заметил, что «auto» не делал на моей странице то, что он делал на jsfiddle. Я обнаружил, что если ширина панели, содержащей панель, установлена, то «auto» просто ломается: http://jsfiddle.net/HNp5r/3/. Таким образом, похоже, что у этого виджета аккордеона есть какой-то неуклюжий калькулятор высот, за исключением только размера окна :( – EleventyOne

+2

Предварительное заключение: опция «auto» для heightStyle прерывается, если: (a) ширина установлена ​​на родительской панели и (b) размер коробки: установлен флажок border. Однако опция «content» работает в обоих этих условиях. Я предполагаю, что это просто ошибка. Очень разочаровывает, но спасибо за вашу помощь! – EleventyOne