Как создать div, чтобы заполнить все пространство между header и footer див
Я работаю над переходом от использования таблиц для целей макета к использованию divs (да, да, большие дебаты). У меня есть 3 ДИВС, заголовок, содержание и нижний колонтитул. Верхний и Нижний колонтитулы 50px каждый. Как я могу получить div нижнего колонтитула, чтобы остаться в нижней части страницы, и содержимое div, чтобы заполнить пространство между ними? Я не хочу жестко кодировать высоту содержимого divs, потому что разрешение экрана может измениться.
6 ответов:
решение Flexbox
С помощью гибкого макета мы можем достичь этого, учитывая естественную высоту верхнего и нижнего колонтитула. Верхний и Нижний колонтитулы будут придерживаться верхней и нижней части окна просмотра соответственно (так же, как родное мобильное приложение), а основная область содержимого заполнит оставшееся пространство, в то время как любое вертикальное переполнение будет прокручиваться в этой области.
HTML
<body> <header> ... </header> <main> ... </main> <footer> ... </footer> </body>CSS
html, body { margin: 0; height: 100%; min-height: 100%; } body { display: flex; flex-direction: column; } header, footer { flex: none; } main { overflow-y: scroll; -webkit-overflow-scrolling: touch; flex: auto; }
подводя итог (и это пришло из CSS липкий нижний колонтитул ссылка предоставлена Traingamer), это то, что я использовал:
html, body { height: 100%; } #divHeader { height: 100px; } #divContent { min-height: 100%; height: auto !important; /*Cause footer to stick to bottom in IE 6*/ height: 100%; margin: 0 auto -100px; /*Allow for footer height*/ vertical-align:bottom; } #divFooter, #divPush { height: 100px; /*Push must be same height as Footer */ } <div id="divContent"> <div id="divHeader"> Header </div> Content Text <div id="divPush"></div> </div> <div id="divFooter"> Footer </div>
чтобы расширить ответ продавцов Mitchel, дайте свой контент div height: 100% и дайте ему автоматическую маржу.
для полного объяснения и пример см. В разделе CSS липкий нижний колонтитул.
поскольку вы знаете размер (высоту) вашего заголовка, поместите его в содержимое div (или используйте поля).
абсолютная позиция даст вам проблемы, если ваш контент больше (выше), чем окно.
способ сделать это с помощью CSS сетки:
.HTML-код
<html> <head> <meta name="viewport" content="width=device-width, initial-scale=1"> <link href="main.css" rel="stylesheet"> </head> <body> <main> <header>Header</header> <section>Content</section> <footer>Footer</footer> </main> </body> </html>главная.css
body { margin: 0; } main { height: 100%; display: grid; grid-template-rows: 100px auto 100px; } section { height: 100%; }
Comments