Back to questions
Middle
1
Есть два вложенных блока A и B с заданными размерами. Как расположить блок B ровно по центру блока A? Предложите несколько вариантов, включая решения для старых браузеров без поддержки flexbox.
Companies where asked
Электронные офисные системы
Answer from AI
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 — самый простой и универсальный способ для современных браузеров.