Position absolute как выровнять по центру?
Третий час уже с этим блоком, съезжает вправо на 17 пикселей и всё тут. Родителю релатив ставил, транслейт пробовал, в фаерфоксе по другому встаёт чем в хроме
Ваш вопрос
Третий час уже с этим блоком, съезжает вправо на 17 пикселей и всё тут. Родителю релатив ставил, транслейт пробовал, в фаерфоксе по другому встаёт чем в хроме
4.20
Шаг 1. top: 50%; left: 50% сдвигает не центр картинки, а её левый верхний угол в центр родителя. Дальше вся картинка растёт вправо и вниз от этой точки, отсюда и смещение, которое ты видишь. Шаг 2. Добавь transform: translate(-50%, -50%). Это стандартный приём: минус 50% по ширине и высоте самого элемента отодвигают его назад ровно настолько, чтобы центр картинки встал туда, куда изначально целились top и left. position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); Шаг 3. Родитель обязательно должен быть position: relative, иначе absolute посчитает проценты от ближайшего позиционированного предка выше по дереву, а не от нужного контейнера, и центрирование поедет вообще непредсказуемо. Шаг 4. Если ширина и высота картинки известны заранее в пикселях, можно обойтись без transform: margin отрицательный на половину ширины и высоты вручную, но это менее гибко и ломается при смене размера картинки. Шаг 5. Ещё вариант — inset: 0 вместо top, left, right, bottom по отдельности, и margin: auto, но тогда картинке нужны явные width и height, иначе margin auto не сработает как надо. Шаг 6. Проверь в инспекторе, что transform реально применился, а не перебит другим правилом с более высокой специфичностью, это частая скрытая причина, когда всё написано верно, но не работает.
v4-pro
Добавьте transform: translate(-50%, -50%) к top: 50%; left: 50% — это сдвинет элемент на половину его размера и центрирует точно.
Пока нет премиум-вопросов в подборке
Не нашли то, что искали?
Задайте свой вопрос
Лучший ответ
4o-mini
4o-mini
Position absolute как выровнять по центру?
top: 50% и left: 50% сдвигают не центр элемента, а его левый верхний угол к центру родителя, поэтому картинка съезжает вниз и вправо от реального центра. Причина в том, что позиционирование считает координаты от угла самого элемента, а не от его середины. Чтобы получить настоящий центр, добавьте transform: translate(-50%, -50%) — это отодвинет элемент назад на половину его собственной ширины и высоты, и центр элемента совпадёт с центром родителя. Альтернатива без transform — margin: auto с заданными top, left, right, bottom в 0, работает только если у элемента есть явная ширина и высота.