Высота бутстрапа 100% с помощью navbar

Это в основном то, чего я хочу достичь:

Example

Я хочу, чтобы общая страница была на 100% высотой, но когда я добавляю боковую панель и тело на 100%, страница добавляет 40px из навигационной панели, поэтому я получаю полосу прокрутки, даже если ее не должно быть.

Я исправил это с помощью таблиц, но я уверен, что должен быть более простой способ

<body>
    <div class="container-fluid">
        <div class="navbar"></div>
        <div class="sidebar"></div>
        <div class="body"></div>
    </div>
</body>

и css, что у меня есть до сих пор:

body, html, .container-fluid, .sidebar, .body {
    height: 100%;
    min-height: 100%;
}
.navbar {
    height: 40px;
    position: relative;
}

Ответы

Ответ 1

Вам нужно будет выровнять высоту навигационной панели со 100%. Существует несколько решений, многие из которых будут включать JavaScript, но вам это не понадобится.

1: размер окна

Дайте навигатору абсолютное положение. Затем у вас возникает вопрос о содержании других элементов, исчезающих под ним. Затем добавляется следующий трюк, добавляется верхнее заполнение размера навигационной панели. И последний трюк, добавьте box-sizing: border-box; the .sidebar и .body. Для лучшей поддержки браузера вам также нужны -moz- и -webkit-префиксы: -moz-box-sizing:

Пример: Скрипт в размер окна

2: На самом деле вычесть.

использовать .body, .sidebar{ height: calc(100% - 40px); Поддержка браузера очень минимальна для этого из того, что я знаю меньше, чем для размерности окна, поэтому я бы порекомендовал первое решение. Calc объясняется css-трюками

3: Flexbox (добавлено anno 2015)

Теперь вы, вероятно, можете использовать calc, когда знаете высоту, но удивительная замена для использования таблиц - flexbox. Это действительно мой спаситель для сложных проектов на чутких веб-сайтах. Используя одну из лучших функций - flex-shrink: 0 - в заголовке вы можете заставить другие элементы настраиваться, чтобы заполнить остальную часть контейнера.

Старый ответ, вероятно, не самый лучший вариант для записи обширного руководства по flexbox, так что опять-таки отличная ссылка на css-tricks

Ответ 2

Возможно, потому, что он добавляет маркер по умолчанию из навигационной панели. Попробуйте следующее:

.navbar {
    height: 40px;
    position: relative;
    margin: 0;
    padding: 0;
}

Также попробуйте изменить минимальную высоту:

max-height: 100% !important;

Ответ 3

Я изменяю litle ваш код, добавляя контейнер вокруг вашей боковой панели и класса body:

Вот РЕЗУЛЬТАТ

Css:

body, html, .container-fluid, .sidebar, .body {
    height: 100%;
    min-height: 100%;
}

#container{
    width:100%;
    height:100%;
}


.sidebar{
    background-color: green;
    width:10%;
    float:left;
    height:100%;

}

.body{
    background-color: orange;
    float:left;
    width:90%;
    height:100%;

}

.navbar {
    height: 40px;
    position: relative;
    background-color: yellow;
    width:100%;
}

HTML

<div class="container-fluid">
    <div class="navbar">
        navbar
    </div>
    <div id="container">
        <div class="sidebar">
            sidebar
        </div>
        <div class="body">
            body
        </div>
      </div>
</div>

</body>