EDIT: я упростил код (ниже и в скрипке) до основной проблемы, которую необходимо было решить, в надежде сделать его более читабельным.
Я реализовал решение Бадера для правильного использования значения getBoundingClientRect
и использования document.querySelector
для получения имени класса и тега html
, необходимых для функции. Теперь я хотел бы перейти к последним пяти строкам кода, начинающимся с var = style
.
Теперь я исправил математику для последних двух переменных.
→ Я пытаюсь создать функцию привязки для использования вместе с Plumber, Sass-плагин сетки.
По сути, у меня есть вертикально центрированный гибкий элемент, который должен - вместо идеального центрирования - привязываться вверх к ближайшей линии сетки. Это позволит мне иметь постоянный вертикальный ритм между слайдами в пользовательском мобильном интерфейсе.
Я использую getBoundingClientRect
для расчета расстояния между нижней частью объекта и верхней частью окна.
Затем я использую Math.floor
для округления до ближайшего кратного моего значения rem.
Затем я использую это новое значение, чтобы создать нижнее поле CSS для контейнера с гибким центром для исправления выравнивания.
(Затем, чтобы закончить, я бы хотел, чтобы эта функция загружалась на $(document).ready
и при изменении размера окна.)
function() {
var box = document.querySelector('.box-1');
var rect = box.getBoundingClientRect();
var bottomOrig = rect.bottom;
var htmlRoot = document.querySelector('html');
var style = getComputedStyle(htmlRoot);
var remValue = style.getPropertyValue('font-size');
var bottomNew = Math.floor(bottomOrig / remValue) * remValue;
var fix = bottomOrig - bottomNew;
$('.container-2').css("margin-bottom", "fix + 'px'");
}
У меня, скорее всего, проблема с синтаксисом, и я был бы очень признателен за помощь.
Спасибо!