Почему отрицательный left + положительный margin в сумме ведут себя нелогично и неадекватно?

Доброго дня.
Ситуация 1: свойство left установлено в -50%, свойство margin-left - в 300px. Поведение нелогичное и неадекватное. Я ожидал, что блок inner будет спозиционирован четко по центру вне зависимости от размеров вьюпорта.

Ситуация 2: свойство left установлено в 50%, свойство margin-left - в -300px. Поведение именно то, какое я и ожидал - блок inner позиционируется четко по центру вне зависимости от размеров вьюпорта.

Для воспроизведения достаточно пару раз изменить размер фрейма с результатами рендера.

Почему такая огромная разница от простейшей смены знаков? С чем связано?
Заранее спасибо.
  • Вопрос задан
  • 210 просмотров
Решения вопроса 1
@esvlad
Веб-разработчик
Потому что элемент позиционируется относительно той стороны которую вы указываете.

Если left: 0; то элемент позиционируется слева, если left: -50%, то он позиционируется на 50% левее левой границы родительского блока, при этом margin-left отодвигает его на 300px правее, когда ставите left: 50%, то левая сторона элемента позиционируется по середине, а margin-left: -300px сдвигает его влево на 300px.
но вообще лучше использовать просто left: calc(50% - 300px); без margin-left.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час