У меня есть следующий макет (я использую Meteor):
<template name="headerFooter">
<div class="container-fluid fill-height">
{{> header}}
{{> UI.contentBlock}}
{{> footer}}
</div>
</template>
<template name="home">
{{#headerFooter}}
<div class="row body-film">
<div id="newsfeed" class="col-sm-offset-7 col-sm-5 block-film">
{{#each stories}}
<div class="story">...</div>
{{/each}}
</div>
</div>
{{/headerFooter}}
</template>
и это (релевантно) css поддерживает его:
html {
height: 100%;
}
body {
min-height: 100%
}
.fill-height {
height: 100%;
}
Элементы html и body ведут себя как ожидалось. Они заполняют свои области любым уровнем масштабирования или размером.
Однако container-fluid с добавленным классом fill-height не выполняет работу. Это только обертывание содержимого, а не заполнение донизу. Это проблема, потому что она несет ответственность за добавление body-film и block-film к странице, которые являются только полупрозрачными фонами, чтобы придать целому целу некоторое единство цвета.
Вот несколько скриншотов, все с увеличенной страницей, поэтому содержимое не заполняет высоту:

Теперь он выбран с помощью элемента body. Как вы можете видеть, он прекрасно заполняет родителя.

Но container-fluid не работает.

С fill-height я пробовал как height, так и min-height, и они выглядят точно так же.
Ваша помощь приветствуется!
Update
Я пытаюсь использовать все возможные комбинации min-height и height для этих трех элементов, и ничего не работает должным образом.
height во всех трех случаях, когда содержимое слишком мало для области просмотра, но когда содержимое слишком велико для области просмотра, блок содержимого полностью переполняется из body, что означает, что фильмы слишком короткие для него.
min-height на всех трех кажется мне самым логичным способом, но он ломается, когда контент слишком мал. В этом случае элемент body не растягивается, чтобы заполнить его родительский html.
Что происходит!!!!????? Это ошибка в новом Blaze templating engine Meteor использует?
Update
Я только что пробовал height: inherit в моем fill-height, и он тоже не работал. Я действительно в конце своей веревки. Кажется, это должно быть так просто.
Update
Хорошо, у меня есть небольшое изменение. С помощью этого less:
.fill-height {
min-height: 100%;
height:auto !important;
height: 100%;
}
.body-film {
.fill-height();
}
.block-film {
.fill-height();
}
контейнер-жидкость теперь имеет полную высоту, но не body-film и block-film, которые используют тот же самый mixin!!
Вот скриншот, показывающий row.body-film, который должен быть полным, так как container-fluid над ним (возьмите мое слово за это, container-fluid теперь растягивается до заполните тело).

Заметьте, что добавление объявления fill-height в html в строке html не изменило ничего, он ведет себя одинаково, как если бы он просто получал это через body-film mixin.
Почему некоторые элементы не отвечают на все эти требования min-height?
P.S., я использую Chrome, но он находится на машине ubuntu, поэтому я не могу быть уверен, есть ли какие-либо несоответствия.
Ответ
В результате работа:
html, body {
height: 100%;
}
.container-fluid {
height: 100%;
overflow-y: hidden; /* don't show content that exceeds my height */
}
.body-film {
height: 100%;
overflow-y: auto; // a value of 'scroll' will force scrollbars, even if they aren't necessary. This is cleaner.
background-color: fadeout(@studio-bar-color, @studio-body-film-trans-delta);
}
.block-film {
min-height: 100%;
overflow-y: hidden; /* don't show content that exceeds my height */
background-color: fadeout(@studio-bar-color, @studio-block-film-trans-delta);
}
Атрибут overflow был чрезвычайно ключевым, и о нем раньше ничего не было известно. Предоставление значения scroll всему телу (вещь, которая должна была быть способна перемещаться вверх и вниз), была ответом, а также дала самый внутренний элемент (block-film) min-height, чтобы обеспечить его растяжение и затем все родительские элементы.