Процентная высота HTML 5/CSS

Я пытаюсь установить <div> на определенную процентную высоту в CSS, но он просто остается того же размера, что и содержимое внутри него. Однако, когда я удаляю HTML 5 <!DOCTYTPE html>, он работает, <div> занимает всю страницу по желанию. Я хочу, чтобы страница проверялась, так что мне делать?

У меня этот CSS на <div>, который имеет идентификатор page:

#page {
    padding: 10px;
    background-color: white;
    height: 90% !important;
}

Ответ 1

Я пытаюсь установить div на определенный процентный рост в CSS

Процент того, что?

Чтобы установить процентную высоту, его родительский элемент (*) должен иметь явную высоту. Это довольно очевидно, поскольку если вы оставите высоту как auto, блок займет высоту своего содержимого... но если сам контент имеет высоту, выраженную в процентах от родителя, который вы сделали вы немного поймаете 22. Браузер отбрасывает и просто использует высоту содержимого.

Итак, родительский элемент div должен иметь явное свойство height. Хотя эта высота также может составлять процент, если вы хотите, это просто переводит проблему на следующий уровень.

Если вы хотите сделать высоту div в процентах от высоты видового экрана, каждый предок div, включая <html> и <body>, должен иметь height: 100%, поэтому существует цепочка явных процентных высот вниз к div.

(*: или, если div расположен, "содержащий блок, который является ближайшим предком, который также должен быть расположен.)

В качестве альтернативы, все современные браузеры и IE >= 9 поддерживают новые единицы CSS относительно высоты окна просмотра (vh) и ширины окна просмотра (vw):

div {
    height:100vh; 
}

Смотрите здесь подробнее.

Ответ 2

Вам нужно установить высоту на элементах <html> и <body>; в противном случае они будут достаточно большими, чтобы соответствовать содержимому. Например:

<!DOCTYPE html>
<title>Example of 100% width and height</title>
<style>
html, body { height: 100%; margin: 0; }
div { height: 100%; width: 100%; background: red; }
</style>
<div></div>

Ответ 3

Ответ bobince даст вам знать, в каких случаях "высота: XX%"; будет или не будет работать.

Если вы хотите создать элемент с установленным отношением (высота:% от его собственной ширины), лучший способ сделать это - эффективно установить высоту с помощью padding-bottom. Пример для квадрата:

<div class="square-container">
  <div class="square-content">
    <!-- put your content in here -->
  </div>
</div>

.square-container {  /* any display: block; element */
  position: relative;
  height: 0;
  padding-bottom: 100%; /* of parent width */
}
.square-content {
  position: absolute;
  left: 0;
  top: 0;
  height: 100%;
  width: 100%;
}

Квадратный контейнер будет просто выполнен из прокладки, и содержимое будет расширяться, чтобы заполнить контейнер. Длинная статья с 2009 года на эту тему: http://alistapart.com/article/creating-intrinsic-ratios-for-video

Ответ 4

Вы можете использовать 100vw / 100vh. CSS3 дает нам относительные единицы. 100vw означает 100% ширины окна просмотра. 100vh; 100% от высоты.

    <div style="display:flex; justify-content: space-between;background-color: lightyellow; width:100%; height:85vh">
        <div style="width:70%; height: 100%; border: 2px dashed red"></div>
        <div style="width:30%; height: 100%; border: 2px dashed red"></div>
    </div>

Ответ 5

Иногда может потребоваться условно установить высоту элемента div, например, когда весь контент меньше высоты экрана. Установка всех родительских элементов на 100% обрезает контент, когда он длиннее размера экрана.

Итак, способ обойти это - установить минимальную высоту:

Продолжайте позволять родительским элементам автоматически регулировать их высоту. Затем в основном элементе div вычтите размеры пикселов верхнего и нижнего колонтитулов div из 100vh (единиц просмотра). В css что-то вроде:

минимальная высота: calc (100vh - 246px);

100vh - полная длина экрана, за вычетом окружающих элементов. Если установить минимальную высоту, а не высоту, содержимое будет длиннее экрана, а не будет обрезано.

Ответ 6

Привет! Чтобы использовать процент (%), вы должны определить% его родительского элемента. Если вы используете body {height: 100%}, он не будет работать, потому что у его родителя нет процента в высоте. В этом случае, чтобы работать с этим ростом, вы должны добавить это в html {height: 100%}

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

Тело {высота: 100vh}

vh обозначает высоту окна просмотра

Я думаю это поможет