Як задати висоту блоку за вмістом?
Якщо висота батьківського блоку не визначена, і ви хочете, щоб зображення зберігало пропорції та не деформувалося, то задайте значення height: auto . Тоді висота дорівнюватиме висоті вмісту елемента. Якщо значення не вказати, використовується значення атрибута height з розмітки.
Як зробити, щоб блок займав всю доступну йому висоту?
Задайте просто необхідному вам блоку min-height: 100vh; де vh – одиниці висоти екрану. Body тоді буде за замовчуванням height: auto; і body просто підлаштовуватиметься під вміст.