Использование vh вместо% работало для меня без необходимости использовать какие-либо дополнительные приемы.
Вот что у меня есть:
html, body, .wrapper {
min-height: 100vh;
}
Где .wrapper - это класс, который вы применяете к своему контейнеру / оболочке или основному объему контента, который вы хотите растянуть на всю длину экрана.
Это будет работать так, как вы ожидаете, когда содержимое в оболочке меньше или больше, чем позволяет высота экрана.
Это должно работать в большинстве браузеров .