Подтвердить что ты не робот

Абсолютное центрирование CSS

Недавно я наткнулся на этот метод, используемый для позиционирования элемента как по горизонтали, так и по вертикали в центр. Однако я не мог понять, что делает каждое из свойств. Кто-нибудь сможет объяснить мне, что влияет на установку top:0, bottom:0, left:0, right:0?

(Было бы здорово, если вы сможете объяснить это, используя термин непрофессионала или представить иллюстрацию.)

Кроме того, каково использование установки отображения в таблицу?

.absolute-center {
  position: absolute;
  display: table;
  height: auto;
  width: 500px;
  margin: auto;
  top: 0;
  bottom: 0;
  right: 0;
  left: 0;
  border: solid 1px red;
}
<p class="absolute-center">What is this sorcery?</p>
4b9b3361

Ответ 1

Вы можете уменьшить значение css:

.absolute-center {
    position:absolute;
    width: 500px;
    height: 100px;
    margin: auto;
    top: 0;
    bottom: 0;
    right: 0;
    left: 0;
    border: solid 1px red;
}
<p class="absolute-center">What is this sorcery?</p>

Ответ 2

Пусть немного сломается:

Если у вас есть следующий CSS (я применяю его к вашей текущей разметке):

.absolute-center {
    position:absolute;
    height: auto;
    margin: auto;
    background: red;
    top: 0;
    bottom: 0;
    right: 0;
    left: 0;
}

Вы можете видеть, что div.absolute-center заполняет весь родительский элемент (в данном случае body), просто установив все свойства top, bottom, right и left.

Демо: http://jsfiddle.net/0osLv27k/

Поэтому, когда мы добавляем width (дополнительно height) к предыдущему CSS, этот элемент ограничен этим размером.

Демо: http://jsfiddle.net/0osLv27k/1/

И, наконец, магический margin: auto, который делает элемент центрированным.

Демо: http://jsfiddle.net/0osLv27k/2/

Ответ 3

Вам нужно только добавить верхнюю и левую позиции и добавить преобразование. Если вам не нужна фиксированная ширина, нет проблем с удалением width из css, а также если вы хотите, чтобы текст с центром внутри p добавлял дополнение, удалял его. Попробуйте следующее:

.absolute-center {
    position:absolute;
    width: 500px;
    padding:50px 0;
    top: 50%;
    left: 50%;
    border: solid 1px red;
    text-align:center;
    transform: translate(-50%, -50%);
	-moz-transform: translate(-50%, -50%);
	-o-transform: translate(-50%, -50%);
	-ms-transform: translate(-50%, -50%);
	-webkit-transform: translate(-50%, -50%);
  display:inline-block;
  vertical-align:middle;
}
<p class="absolute-center">asdsdada</p>

Ответ 4

Проверьте это... HTML

<p class="absolute-center"></p>

CSS

.absolute-center {
    margin: auto;
    background: red; 
    width: 100px;
    height: 100px;
    position:absolute;
    top: 0;
    bottom: 0;
    right: 0;
    left: 0;
}