Выпадение бутстрапа в коллапсе,

Я использую Bootstrap 2.0.3, с раскрывающимися меню внутри divs, которые являются разборными/расширяемыми. Когда раскрывающееся меню переполняет div, они обрезаются (но они не должны). Jsfiddle, чтобы проиллюстрировать: http://jsfiddle.net/t3wFK/1/

В Bootstrap 2.0.2 меню не обрезается: http://jsfiddle.net/u3wkK/

Я нашел половину обходного пути, используя правило css следующим образом:

#stuff.in {
  overflow: visible;
}

Класс "in" css добавляется загрузочной загрузкой всякий раз, когда div, помеченный "collapse", расширяется.

К сожалению, это обходное решение полностью ломается в Firefox.

Любые идеи? Я рассматриваю возможность понижения до Bootstrap 2.0.2, но это было бы больно.

Ответы

Ответ 1

Проблема здесь заключается в том, что в 2.0.3 Bootstrap применяет класс .collapse к элементу #stuff. В bootstrap css есть стиль:

.collapse {
    overflow: hidden;
}

Однако при развертывании цели .collapse свойство overflow остается hidden.

Не уверен, что это ошибка или нет (нужно было бы изучить ее глубже, чтобы увидеть, есть ли какие-либо недостатки для этого), но изменение правила для .collapse.in будет работать.

.collapse.in {
    height: auto;  /* this style already exists in bootstrap.css */
    overflow: visible;  /* this one doesn't. Add it! */
}

Если вы не хотите изменять Bootstrap CSS (который может иметь непреднамеренные побочные эффекты, как указано в комментариях), вы можете добавить обработчики событий shown и hide к вашему элементу #stuff, чтобы изменить overflow свойство:

$('#stuff').on({
    shown: function(){
        $(this).css('overflow','visible');
    },
    hide: function(){
        $(this).css('overflow','hidden');
    }
});

Ответ 2

Я пробовал обходное решение с помощью Bootstrap 2.1.1, и он ломается в Firefox 16, работая только в первый раз, а затем не открывается вообще.

В моем случае проблема была в первый раз, когда посетитель открыл сложенный элемент и была применена встроенная фиксированная высота. Вторая временная высота была установлена ​​на авто.

Итак, я обнаружил, что проблема связана с кодом html для элемента nav-collapse, у которого не указано состояние, объявленное сначала:

Здесь сначала код:

<div class="nav-collapse">

Затем, после расширения первого загрузочного бутстрапа, назначается фиксированная высота:

<div class="nav-collapse in collapse" style="height: 286px;">

И после закрытия первой высоты времени до 0:

<div class="nav-collapse collapse" style="height: 0px;">

Открытие второго раза, и он отлично работает с автоматической высотой:

<div class="nav-collapse collapse" style="height: auto;">

Поэтому для установки автоматической высоты javascript необходим класс .collapse:

<div class="nav-collapse collapse">

Мне понадобилось время, чтобы понять!

Ответ 3

Попробуйте использовать флаг !important, как кажется в Firefox, свойства читаются с разным приоритетом по какой-либо причине.

http://jsfiddle.net/t3wFK/2/

.in {
    overflow: visible !important;
}

Ответ 4

Я проводил много исследований по этому вопросу, нашел решение проблемы, добавив эту строку кода в css, я нашел это в https://github.com/twitter/bootstrap/pull/2423#issuecomment-13132202

.collapse.in[style="height: auto;"] {overflow: visible;}

Это помогло мне надеяться, что это сработает для вас.