Элементы центрированы по горизонтали и вертикали
- Настройте два поля, отношение родитель-потомок: родительский элемент
<body>
<div class="parent">
<div class="child">
child
</div>
</div>
</body>
Способ 1: одинаковая ширина и высота + отступы
- Установите ширину и высоту родительского элемента на тот же размер, что и дочерний элемент, а затем установите отступ родительского элемента. В этот момент заполнение вдавит дочерний элемент в середину родительского элемента;
- В это время позиционирование родительских и дочерних элементов может быть включено или нет;
*{
margin: 0;
padding: 0;
}
.parent{
width: 100px;
height: 100px;
/*将padding设置,来挤出来居中的样子;但是要注意的是,此时的width和height要和子元素的大小一样,否则还是不居中*/
padding: 100px;
border: 1px solid;
margin: 100px auto;
}
.child{
width: 100px;
height: 100px;
background: pink;
line-height: 100px;
text-align: center;
}
Способ 2: абсолютный + маржа:авто
- Относительное позиционирование родительских элементов, абсолютное позиционирование дочерних элементов;
- Блочная модель с абсолютным позиционированием имеет функцию: лево+право+ширина+отступ+маржа=ширина содержащего блока; поэтому в настоящее время вы можете установить левое и правое (значение по умолчанию — авто, поэтому его необходимо сбросить). ) на 0, и отступ был определен (значение по умолчанию — 0 пикселей, если оно не установлено), поэтому остальное — это поле, но значение поля по умолчанию — 0 пикселей. Поэтому установите для магина значение auto, чтобы элемент автоматически центрировался;
- То есть: слева, справа, верх, снизу 0; маржа авто;
*{margin: 0;padding: 0;}
.parent{
position: relative;
width: 200px;
height: 200px;
/*padding: 100px;*/
border: 1px solid;
margin: 100px auto;
}
.child{
position: absolute;
/*left+right+width+padding+margin=包含块的宽度*/
/*0 0 100 0 auto =300*/
left: 0;
right: 0;
top: 0;
bottom: 0;
margin: auto;
width: 100px;
height: 100px;
background: pink;
line-height: 100px;
text-align: center;
}
Способ 3: абсолютный + отрицательный край (или преобразование)
- Отношение отца к сыну абсолютно относительно, и до 50%, маржа будет отрицательной
- Мощный абсолют, конечно, очень прост для таких маленьких задач;
- Абсолютное позиционирование находится вне потока документа и не повлияет на расположение последующих элементов. Но если абсолютно позиционированный элемент является единственным элементом, родительский элемент также теряет высоту.
- Относительное позиционирование родительских элементов, абсолютное позиционирование дочерних элементов;
- Установите левую и правую часть дочернего элемента непосредственно до 50%, относительно родительского элемента;
- Затем используйте margin-left и margin-top, чтобы установить отрицательную половину дочернего элемента. Это перетаскивание назад той части, которая отклоняется от центра родительского элемента;
.parent{
position: relative;
width: 200px;
height: 200px;
border: 1px solid;
}
.child{
position: absolute;
left: 50%;
top: 50%;
margin-left: -50px;
margin-top: -50px;
width: 100px;
height: 100px;
background: pink;
line-height: 100px;
text-align: center;
}
- Если вы не знаете ширину и высоту дочернего элемента, используйте transfrom:translate3d(-50% -50% );
- transform — это свойство CSS3, имеющее проблемы с совместимостью;
transfrom:translate3d(-50% -50% );
/* width: 100px;
height: 100px; */
- Однако, когда этот метод нельзя использовать для элементов, которые необходимо преобразовать в 3D, это повлияет на переднюю и заднюю часть;
Способ 4: встроенный блок+ячейка таблицы
- хорошая совместимость
<style>
.parent {
display: table-cell;
text-align: center;
vertical-align: middle;
}
.child {
display: inline-block;
}
</style>
Метод 5: гибкий макет
- Просто установите родительское свойство, не устанавливая подэлементы
- Проблемы совместимости
// 父元素设置
display: flex;
justify-content:center;
align-items:Center;
Вертикальное и горизонтальное центрирование текстовых элементов
- Установите высоту строки и выравнивание текста:
line-height: 50px;
text-align:center;
- гибкий макет
display: flex;
justify-content:center;
align-items:Center;
Одностороннее горизонтальное центрирование или вертикальное центрирование может быть достигнуто в соответствии с вышеуказанным методом.