Почему transform translate работает :
В добавление к ответу Фахима Хана, использование transform: translate(-50%,-50%);
помогает, потому что когда вы используете left: 50%
и top: 50%
, вы в некотором смысленачиная горизонтально с 50% слева и 50% сверху, но без учета ширины и высоты самого треугольника.
Вы можете думать об этом так, чтобы понять это: давайте предположим, что ширина контейнера равна 100px, а ширина треугольника - 40px.Браузер начинает рисовать треугольник с 50-го пикселя, а затем он расширяется до 90-го пикселя.То же самое происходит вертикально.
Здесь мы не учитываем ширину и высоту самого треугольника.Чтобы исправить это, нам нужно начать с 30-го пикселя, это будет означать, что треугольник закончится на 70-м пикселе, поместив его прямо в центре.Для этого мы используем transformX (-50%) =>, что означает «переместить мое тело на 50% вверх», и translateX (-50%) =>, что означает «переместить мое тело на 50% влево».
В заключение, вот что необходимо расположить его в центре для дочернего элемента:
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%,-50%);
А для родительского элемента не забудьте добавить: position: relative;