Ответ 1
Просто установите text-align: center;
на контейнер.
У меня есть элемент изначально неизвестной ширины, в частности, уравнение MathJax, предоставленное пользователем. У меня есть элемент, установленный как встроенный блок, чтобы гарантировать, что ширина элемента соответствует его содержимому и поэтому имеет определенную ширину. Однако это предотвращает традиционные методы центрирования. То есть следующее не работает:
.equationElement
{
display: inline-block;
margin-left: auto;
margin-right: auto;
}
И решение не может быть:
.equationElement
{
display: block;
width: 100px;
margin-left: auto;
margin-right: auto;
}
Потому что я понятия не имею, какая ширина должна быть на самом деле заранее, и если пользователь нажимает на уравнение, мне нужно, чтобы все уравнение было выделено, поэтому я не могу установить ширину в 0. Есть ли у кого-нибудь решение для центрирования этого уравнения?
Просто установите text-align: center;
на контейнер.
Другой способ сделать это (работает и с блочным элементом):
.center-horizontal {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
Объяснение: left: 50% позиционируют элемент начиная из центра содержащего родителя, поэтому вы хотите оттянуть его на половину своей ширины с помощью transform: translateX (-50% )
Note1: Обязательно установите положение, содержащее родителя, в положение: relative; если родительский элемент абсолютно позиционирован, установите 100% ширину и высоту, 0 заполняющих и полей div внутри и дайте ему положение: относительный
Примечание2: также можно изменить для вертикального центрирования с помощью
top:50%;
transform: translateY(-50%);
Немного поздно, но, как и ответ Ivek, вы можете избежать объявления position
, используя margin-left
, а не left
, поэтому:
margin-left: 50%;
transform: translateX(-50%);