Вкладки jQuery: вкладки панели покрывают на высоте 100%
Я пытаюсь использовать виджеты вкладки jQuery-UI с содержимым панелей, чтобы распространиться на все свободное пространство.
Вот упрощенная версия того, что у меня есть до сих пор:
http://jsfiddle.net/MhEEH/3/
Вы увидите, что содержание зеленой панели в # tab-1 просто охватывает всю страницу, а не просто пространство панели, когда я использую следующий CSS:
#tab-1 {
background: green;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
Я мог бы использовать "top: 27px;" чтобы это исправить, но это столкнулось бы с двумя вещами:
- Если я изменил вкладку "тема", высота (27px) могла бы изменить
- Если у меня много вкладок, у меня будет вторая строка ниже первой строки. Таким образом, мое содержимое панели будет охватывать этот второй ряд...
Чистое и короткое решение будет в порядке.
JavaScript допустим, хотя предпочтительным будет только (чистое!) решение CSS...
- С уважением,
Стефан
Ответы
Ответ 1
Вместо использования собственного CSS используйте встроенную функцию jQuery UI.
var tabs = $("#tabs").tabs({heightStyle: "fill"});
В документации API:
heightStyle
Тип: Строка
По умолчанию: "content"
Управляет высотой виджета вкладки и каждой панели. Возможные значения:
- "auto": все панели будут установлены на высоту самой высокой панели.
- "fill": развернуть до доступной высоты, основанной на родительской высоте вкладки.
- "content": каждая панель будет только такой же высокой, как и ее содержимое.
Хотя вы правы, что простое решение для CSS было бы очень приятным, поскольку вы все равно используете JavaScript для создания функциональных возможностей вкладки, лучше всего использовать существующие возможности script, которые у вас уже есть.
UPDATE
Ответ 2
Я попытался поместить вкладки в контейнер табуляции и со следующими стилями
#tab-container {position:relative; min-height:100%;}
и он, казалось, работал:
http://jsfiddle.net/MhEEH/8/
Ответ 3
Это то, что вам нужно?
http://jsfiddle.net/MhEEH/5/
html, body {
height: 100%;
}
#tabs {
position: absolute;
top: 0;
bottom:0;
left: 0;
right: 0;
}
#tab-1 {
background: green;
height: 100%;
}
Ответ 4
Я просто попытался использовать это:
#tab-1 {
background: green;
position: relative;
height:100%;
}
и в jsfiddle он отлично работает. не уверен, как это будет на вашей странице
http://jsfiddle.net/MhEEH/7/
Ответ 5
О. П.,
Отметьте эту скрипту.
Родитель #tabs
имеет overflow: hidden;
.
В дополнение к детям: #tabs div[id*=tab]
с набором overflow:auto
. Это гарантирует, что родитель установит границы, а в случае переполнения содержимого на вкладке вид полосы прокрутки будет делегирован самой вкладкой.
Кроме того, для тех, кто не знаком с синтаксисом #tabs div[id*=tab]
, этот шаблон будет соответствовать любому дочернему элементу div
#tabs
, чей id
содержит вкладку. Это можно сделать несколькими способами, но я выбрал этот маршрут для быстрого прототипирования.
Надеюсь, это поможет.
Ответ 6
Ниже приведена ссылка на мое решение для CSS, которое работает для вас.
http://jsfiddle.net/MhEEH/17/
html, body {
margin: 0;
padding: 0;
overflow: hidden;
}
#tab-list {
position: absolute;
z-index: 10;
top: 0;
left: 0;
width: 100%;
}
#tabs {
position: absolute;
top: 0;
bottom:0;
left: 0;
right: 0;
}
#tab-1, #tab-2 {
background: green;
position: absolute;
top: 48px;
bottom: 0;
left: 0;
right: 0;
padding-top: 10px;
}
Кто-то упомянул слайдер Coda, который также является отличным решением, и в качестве альтернативы я мог бы предложить этот слайдер с эластичным контентом из codrops
http://tympanus.net/codrops/2013/02/26/elastic-content-slider/
Надеюсь, что это поможет,
Приветствия
Ответ 7
Простейшее решение,
два изменения в CSS и проблема решена, #tabs{height:100%;}
и #tab-1{top:45px;}
это будет делать:) обновлено fiddle
Ответ 8
Как насчет этого... При этом вы увидите, что полоса прокрутки полностью видима, если содержимое переполняется
http://jsfiddle.net/uHk5f/
<div id="tab-1" class="customPanel">This content shall: fill up the entire space (left to right) until the bottom of the page. But it shall -NOT- cover the tabs!</div>
и предоставить стиль для класса, с этим
html, body {
margin: 0;
padding: 0;
overflow: hidden;
}
#tabs {
position: absolute;
top: 0;
bottom:0;
left: 0;
right: 0;
overflow:auto;
}
#tabs .customPanel {
background: green;
}
Надеюсь, это поможет!!!
Ответ 9
Я не вижу необходимости использовать javascript здесь для основных изменений стиля. Недавно я преобразовал одностраничное приложение с полноэкранным стилем, используя все, начиная с javascript и заканчивая чистым CSS, используя позиционирование и прочее.
Теперь на решение - попробуйте это.
http://jsfiddle.net/MhEEH/16/
#tab-1 {
background: green;
height: 100%;
}
Я не вижу необходимости использовать абсолютное позиционирование в элементе зеленого окна, потому что родительский элемент заполняет пространство, все, что вам нужно сделать сейчас, это height: 100%
, и он должен заполнить остальную часть пространства.
Edit
Кажется, что проблема связана с отсутствием прокрутки контента в этой версии. Борясь, чтобы найти исправление для этого. Я чувствую, что пользовательский интерфейс jQuery добавляет кучу стилей и прочее в div #tab-1
, что может вызвать проблемы. Возможно, стоит попробовать reset стили для #tab-1
и посмотреть, что из этого вы получите.
Ответ 10
Я добавил значение верхней позиции в идентификатор # tab-1, чтобы нажать его ниже самой вкладки.
Смотрите: http://jsfiddle.net/MhEEH/40/
Вот соответствующий CSS:
#tab-1 {
background: green;
position: absolute;
top: 50px;
bottom: 0;
left: 0;
right: 0;
}
Надеюсь, что это поможет!