Попытка сделать высоту div в процентах от высоты тела. Я использую загрузочную версию 5.3. Я могу сделать элемент body 100% видимым. Однако все остальные элементы div имеют одинаковый размер — 24 пикселя. Я пытаюсь охватить всю высоту страницы. Следующее не работает. Я просмотрел несколько других постов, посвященных этому вопросу, но пока ни один из них мне не помог. Что мне не хватает? Выдуйте если полный код.
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "UTF-8" />
<meta name = "viewport" content = "width=device-width, initial-scale=1.0" />
<title>Document</title>
<link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" />
</head>
<style>
html {
height: 100%;
}
body {
min-height: 100%;
margin: 0;
padding: 0;
}
</style>
<body>
<div class = "container-fluid">
<div class = "row">
<div class = "col-12" style = "height: 5%; background-color: blueviolet">
header
</div>
</div>
<div class = "row" style = "height: 86.5%; background-color: aliceblue">
<div class = "col-12">main</div>
</div>
<div class = "row" style = "height: 1.9%; background-color: green">
<div class = "col-12">thin banner</div>
</div>
<div class = "row" style = "height: 6.56%; background-color: darkslategray">
<div class = "col-12">footer</div>
</div>
</div>
</body>
<script src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
</html>
Насколько я понимаю, вам нужны div, чтобы заполнить всю страницу. Если да, то с flexbox это довольно просто.
Я изменил высоты, чтобы они были округлены равномерно, чтобы сделать их визуально более привлекательными и лучше видеть, что происходит. Кроме того, я удалил встроенные стили, потому что их легче поддерживать. И, как видите, я добавил к каждому уникальный класс .row
для упрощения адресации.
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "UTF-8" />
<meta name = "viewport" content = "width=device-width, initial-scale=1.0" />
<title>Document</title>
<link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" />
</head>
<style>
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
.container-fluid {
display: flex;
flex-flow: column;
height: 100%;
}
.header {
height: 10%;
background-color: blueviolet
}
.main {
height: 70%;
background-color: aliceblue
}
.banner {
height: 10%;
background-color: green
}
.footer {
height: 10%;
background-color: darkslategray
}
</style>
<body>
<div class = "container-fluid">
<div class = "row header">
<div class = "col-12" style = "">
header
</div>
</div>
<div class = "row main" style = "">
<div class = "col-12">main</div>
</div>
<div class = "row banner" style = "">
<div class = "col-12">thin banner</div>
</div>
<div class = "row footer" style = "">
<div class = "col-12">footer</div>
</div>
</div>
</body>
<script src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
</html>
Оба эти объявления необходимы:
html,
body {
height: 100%;
margin: 0;
padding: 0;
}
.container-fluid {
display: flex;
flex-flow: column;
height: 100%;
}
И обратите внимание: я изменил проценты, чтобы в сумме получить 100%.
Использование единиц vh
для установки высоты относительно высоты области просмотра. Это гарантирует, что элементы займут желаемые пропорции высоты области просмотра без необходимости явно устанавливать высоту родительских элементов.
<link rel = "stylesheet" href = "https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" />
<body>
<div class = "container-fluid">
<div class = "row" style = "height: 8vh; background-color: blueviolet">
<div class = "col-12">header</div>
</div>
<div class = "row" style = "height: 80vh; background-color: aliceblue">
<div class = "col-12">main</div>
</div>
<div class = "row" style = "height: 4vh; background-color: green">
<div class = "col-12">thin banner</div>
</div>
<div class = "row" style = "height: 8vh; background-color: darkslategray">
<div class = "col-12">footer</div>
</div>
</div>
<script src = "https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js"></script>
</body>
Вместо
vh
следует использовать единицы%
. тогда нет необходимости устанавливать высоту тела или HTML равным100%