Вы должны учитывать заполнение в расчете. Когда вы добавите отступы, вы уменьшите ширину изображения внутри обоих контейнеров на 25px
, что также приведет к уменьшению высоты, но, поскольку соотношение не одинаково, высота не будет уменьшаться одинаково. Для первого это будет 25px * 2/3 (16.67px)
, а для второго будет 25px * 3/2 (37.5px)
. Вот почему первый стал выше второго.
Чтобы исправить это, нам нужно либо использовать разные отступы для обоих контейнеров, либо изменить расчет ширины. Для второго решения нам нужно рассмотреть уменьшение ширины первого и увеличение ширины второго. давайте рассмотрим разницу в высоте между обоими элементами, которая равна 37.5px - 16.67px = 5/6 * 25px
. Разобьем эту разницу: первый div нужно уменьшить на 5/12 * 25px
, а второй увеличить на 5/12 * 25px
, чтобы оба div стали равными по высоте.
Затем мы используем соотношение, чтобы рассчитать ширину, которую нам нужно добавить / уменьшить. Это 5/12 * 3/2 * 25px = 5/8 * 25px
для первого и 5/12 * 2/3 * 25px = 5/18 * 25px
для второго.
Первое решение проще, но оно не будет хорошим, как другое, поскольку у нас не будет такого же отступа, поэтому оно не будет выглядеть однородным. Идея состоит в том, чтобы определить отступы для одного div, вычислить убывающую высоту, а затем использовать эту высоту, чтобы найти отступы для другого div.
Давайте оставим 25px
отступа во втором div, это уменьшит высоту изображения на 25px * 3/2
(как ранее). Давайте определим P
как отступ первого, и у нас будет уменьшение на P * 2/3
. Нам нужно, чтобы оба значения были равны, что сделает P
равным 25px * 9/4
, которое мы можем разделить на обе стороны:
Как мы видим, отступы для первого div должны быть больше, чтобы иметь одинаковую разницу в высоте.
UPDATE
Понятно, что первое решение решает проблему выравнивания, но у нас общая ширина отличается от 100%
просто потому, что мы удалили значение и добавили другое значение, и оба не равны, поэтому у нас общая ширина равна 100% - ((25px * 5/8) - (25px * 5/18)
. Затем нам не хватает (25px * 25/72)
.
Если нам нужно получить общую ширину 100%, нам нужно рассмотреть возможность добавления этого значения, соблюдая соотношение, чтобы сохранить одинаковую высоту увеличения 1 . Предположим, мы хотим добавить X
к первому и Y
ко второму, тогда у нас будут следующие уравнения:
X + Y = 25px * (25/72)
X * 2/3 = Y * 3/2
После решения этой проблемы мы получим: Y = 25px * 25/234
и X = 25px * 25/104
1: Первоначально я пропустил эту часть, потому что думал, что она сделает весь комплекс отсчетов, и тогда у нас будет всего несколько пикселей разницы (8px
)