Для всех, кто интересуется, я обнаружил несколько вещей, копаясь в css.
Прежде всего, вы можете установить высоту 100% для div, чтобы занять свободное место, если другой элемент находится в , но если и только если вы установите родительский элемент display: flex;
! Имея это в виду, все становится проще.
После этого я решил погрузиться в JS, так как моя проблема, похоже, не решаема только с CSS. Я воспользовался «новым» свойством position: sticky;
, и мой JS может позаботиться о его положении top: 0;
или bottom: 0;
в зависимости от позиции прокрутки.
CSS Добавлено:
.stickyBottom{
position: sticky;
bottom: 0;
}
.stickyTop{
position: sticky;
top: 0;
}
JS Код добавлен:
var colLeft = document.getElementsByClassName("messagesInput")[0];
colLeft.onscroll = function(){myFunction()};
// Get the navbar
var between = document.getElementsByClassName("between")[0];
var desc = document.getElementsByClassName("description")[0];
// Get the offset position of the navbar
var sticky = between.offsetTop;
//between.classList.remove("stickyBottom")
function myFunction() {
if (colLeft.scrollTop >= sticky) {
between.classList.remove("stickyBottom")
between.classList.add("stickyTop")
} else {
between.classList.add("stickyBottom")
between.classList.remove("stickyTop");
}
}
В конечном итоге UX получился лучше, чем я хотел изначально! :) CodePen Link обновлено соответственно.