ну тогда вам этот код не поможет, если вы его не правили под свои нужды. Так как там выбирются элементы input с определенным value(которых у вас на сайте видимо нет) и вешаются на них события.
Поэтому и выдает ошубку Uncaught TypeError: Cannot read property 'addEventListener' of null
"то он будет такого же размера как и родитель и будет там же, где и родитель."
Чуть поправлю - не просто родителя, а ближайшего позиционированного родителя.
Странный вопрос - вы пишите, что надо чтобы высота была как у элемнета по серединие и в тоже время пишите, что нельзя ограничевать высоту элементов, так как не знаете сколько будет контента внутри элементов. Можно сделать, чтобы высота элементов была равна самому высокому на css. Иначе на js можно сделать, чтобы высота была равна высоте элемента посередине, но тогда если в соседних элементах контента будет больше то он не поместиться.
ну так я написал, что это пример top: calc(100% - 70px);
вам надо узнать высоту вашего меню которое мы прижимаем к низу через devtools
и тут top: calc(100% - 70px); вместо 70px - подставить нужное значение(высоту высоту вашего меню которое мы прижимаем)
есть - но я сомневаюсь, что ты осилишь самостоятельно, не в обиду.
Раз уж у тебя работает привязка к верху, сделай так
position: sticky;
top: 100%;
transform: translateY(-100%);
Так и надо. Странно что у вас работает position: sticky; top: 0; - привязка к верху
но не работает position: sticky; bottom: 0; привязка к низу. На codepen скиньте, так проще будет разобраться.
Если помогло, то отметьте пожалуйста решением.
На вопрос как лучше создать попап, сложно дать ответ учитывая, что я не знаю ваших скилов.
Но суть такая, вы его заранее создаете. верска + css и скрываете. и потом показывете после того как закрыли модалку с формой.
После этой строчки document.getElementById("fancybox-close").click()
выполяняете код для показа попапа.