Стили футера в зависимости от высоты блока

204
31 марта 2018, 14:35

Можно ли сделать так, чтобы если блок меньше высоты окна страницы(короткое объявление), то футер был бы прижат к нижней части окна браузера, а если блок больше и появляется скролл, то футер бы был сразу под этим блоком?

Answer 1

Это просто реализовать с помощью flexbox в роли контейнера:

let cntnt = document.getElementById('content');  
cntnt.addEventListener('click', function () { 
  this.innerHTML += '<p>параграф</p>';  
}); 
html, 
body { 
  margin: 0; 
  padding: 0; 
} 
 
#page { 
  height: 100vh;  
  display: flex; 
  flex-direction: column;  
  font: 16px sans-serif;  
  color: #fff;  
} 
 
#page > div,  
#content > p { 
  padding: 10px;  
  text-align: center;  
} 
 
#page > div { flex 0 0 auto; } 
 
#content { background-color: #44a; } 
 
#footer { 
  margin-top: auto;  
  background-color: #4a4; 
}
<div id="page"> 
  <div id="content">кликайте по этому блоку<br>для увеличения его высоты</div> 
  <div id="footer">футер</div> 
</div>

Принцип здесь очень прост:
Вертикальное направление дочерних элементов контейнера задается стилем flex-direction: column.
Стиль flex 0 0 auto у дочерних блоков "отключает" заполнение ими свободного пространства, и сжатие при увеличении размера "соседей" - но позволяя при этом автоматически подстраиваться под размеры содержимого.
При малой высоте блока контента, футер "прилипает" к нижнему краю за счет margin-top: auto.

Что можно почитать о flexbox:
Используем CSS Flexible Boxes (MDN)
A Complete Guide to Flexbox (CSS-Tricks)

READ ALSO
выбрать один checkbox из двух

выбрать один checkbox из двух

Есть несколько checkbox-ов,нужно чтобы выбирался 1 или 2 checkbox, а остальные выбирались независимо от нихid, name не меняются так как используются в программе

230
дочерний элемент при клике меняет стили второго родительского блока

дочерний элемент при клике меняет стили второго родительского блока

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

172
Увеличить отступ пунктов списка

Увеличить отступ пунктов списка

Как увеличить отступ текста от номера пункта списка?

177
Как правильно подключать свои стили и скрипты в Electron?

Как правильно подключать свои стили и скрипты в Electron?

Начал изучать electron и столкнулся с проблемой - никак не получалось подключить своиcss и

196