Вы не хотите min-height
, потому что вы не знаете высоту на каждом уровне реагирования (на мобильных устройствах она может быть ниже).Вам нужно, чтобы вкладка .active
установила высоту вкладок.Для этого вам необходимо включить его в поток документов, установив для его position
значение static
.
#exTab1 .tab-content .tab-pane.active {
position: static;
}
Для этого также необходимо добавить top: 0
к другим.Без него вкладки после активных в данный момент будут располагаться не в верхней части контейнера вкладок, а в нижней части активной.
Обновленная скрипта: https://jsfiddle.net/websiter/grkn493p/
Примечание: если вы также хотите, чтобы изменение высоты контейнера было плавным, вы должны использовать height
для контейнера и перемещать его при каждом изменении вкладки, считывая его с высотытекущая вкладка.
Установите переход:
#exTab1 .tab-content {
transition: height .3s cubic-bezier(.4,0,.2,1);
}
Получите высоту активной вкладки при изменении вкладки и установите ее в контейнере:
$(function() {
// on document ready...
$('.nav').on('shown.bs.tab', function(e){
// on every `shown.bs.tab` triggered on a `.nav`, run this code:
const $target = $($(e.target).attr('href'));
//find target from `href` tab attribute
$target.is('div') && $target.closest('.tab-content').css({
// if target is div, set it's css to
height: $target.height()
// the height of target (defined above)
})
});
});
Обновленная скрипка:https://jsfiddle.net/websiter/uz0fkrj2/
Обратите внимание, что обновленная скрипка была сделана еще дальше.Я заметил, что установленная высота контейнера не обновляется при изменении размера страницы.Это ставит две разные проблемы:
- a) функция обновления высоты должна измениться на целевую независимость (потому что мы не знаем цель в событии
resize
).Но это легко исправить, поскольку целью является текущая .active
панель вкладок. - b)
window.resize
срабатывает слишком часто, и установка высоты каждого вкладки-контейнера на странице так часто приводит к проблемам с производительностью (анимация страницы будет колебаться).Чтобы избежать этого, я throttle
включил функцию обновления (не позволяя запускать ее чаще, чем x
миллисекунды).Я импортировал lodash и использовал его _.throttle
метод - есть эквивалент jQuery, но я не уверен в его синтаксисе - никогда не использовал его.