Ярослав
Искусственный Интеллект
(107837)
3 года назад
В блочной модели, размер не включает маржины - это ВНЕШНИЕ отступы. Если по какой-то причине требуется их учесть, то надо суммировать с размерами.
Чтобы корректно посчитать отступы, с учетом их возможного схлопывания - вычисляй их из координат смежных элементов. Например, разность абсолютных b.bcr().top - a.bcr().bottom даст значение фактического вертикального отступа между a и b. Еще раз акцентирую, что относительные координаты должны быть переведены в абсолютные - иначе, вместо результата херня получится.
let itemStyle = getComputedStyle(item);
let h = item.getBoundingClientRect().height + parseInt(itemStyle.marginTop) + parseInt(itemStyle.marginBottom);
не работает, вся проблема что parseInt(itemStyle.marginTop) возвращает почему-то НаН...