Sobes.tech
Назад к вопросам
Middle
2

Есть два вложенных блока A и B с заданными размерами. Как расположить блок B ровно по центру блока A? Предложите несколько вариантов, включая решения для старых браузеров без поддержки flexbox.

Компании, где спрашивали
Электронные офисные системы

Ответ от нейросети

sobes.tech AI

Чтобы расположить вложенный блок B ровно по центру блока A, можно использовать несколько подходов:

1. Flexbox (современный способ)

.parent {
  display: flex;
  justify-content: center; /* по горизонтали */
  align-items: center;    /* по вертикали */
  width: 300px;  /* пример */
  height: 200px; /* пример */
}
.child {
  width: 100px;
  height: 50px;
}

2. Абсолютное позиционирование с трансформацией

.parent {
  position: relative;
  width: 300px;
  height: 200px;
}
.child {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100px;
  height: 50px;
}

3. Табличное выравнивание (для старых браузеров)

.parent {
  display: table;
  width: 300px;
  height: 200px;
  text-align: center;
}
.child {
  display: table-cell;
  vertical-align: middle;
  width: 100px;
  height: 50px;
  margin: 0 auto;
}

4. Использование line-height (если высота блока фиксирована и текстовый контент)

.parent {
  width: 300px;
  height: 200px;
  line-height: 200px; /* равна высоте родителя */
  text-align: center;
}
.child {
  display: inline-block;
  vertical-align: middle;
  line-height: normal;
  width: 100px;
  height: 50px;
}

5. Использование margin auto (только по горизонтали)

.child {
  width: 100px;
  height: 50px;
  margin: auto;
  position: relative;
  top: 50%;
  transform: translateY(-50%);
}

Для поддержки старых браузеров без flexbox лучше использовать абсолютное позиционирование с transform или табличное выравнивание. Flexbox — самый простой и универсальный способ для современных браузеров.