

【行内元素】适用inline,inline-block,inline-table,inline-flex元素
.center {
 text-align: center;
}【块级元素】适用于block level元素
①一个块级元素
 .center {
 margin: 0 auto;
 }②多个块级元素
方法一:将块级元素变为行内块级元素
html部分:
<main class="inline-block-center">
 <p>1</p>
 <p>2</p>
 <p>3</p>
</main>
css部分:
.inline-block-center {
 text-align: center;
}
.inline-block-center p {
 display: inline-block;
 text-align: left;
}
方法二:flex布局
html部分:
<main class="flex-center">
 <p>1</p>
 <p>2</p>
 <p>3</p>
</main>
css部分:
.flex-center{
 display:flex;
 justify-content:center;
}【行内元素】
①单个行内元素:
情况一:当link或文本有包裹元素时,设置相等的上下padding
.link {
 padding-top: 30px;
 padding-bottom: 30px;
}情况二:当link或文本没有包裹时,设置行高和高度相等
.center-text-trick {
 height: 100px;
 line-height: 100px
}②多个行内元素:
方法一:将多个行内元素分别置于table-cell中
html部分:
<table>
 <tr>
<td>
 1
</td>
 </tr>
</table>
css部分:
table td {
 background: black;
 color: white;
 padding: 20px;
 border: 10px solid white;
 /* default is vertical-align: middle; */
}
方法二:将父元素设置为display:table,将自身设置为display:table-cell
html部分:
<p class="center-table">
 <p>1</p>
</p>
css部分:
.center-table {
 display: table;
 height: 250px;
 width: 240px;
}
.center-table p {
 display: table-cell;
 vertical-align: middle;
}
方法三:使用felex
html部分:
<p class="flex-center">
 <p>1</p>
</p>
css部分:
.flex-center{
 display: flex;
 justify-content: center;
 flex-direction: column;
 height: 400px;/*父容器必须有固定高度*/
}
方法四:当以上代码均不可用时,可尝试此奇淫巧技
html部分:
<p class="ghost-center">
 <p>1</p>
</p>
css部分:
.ghost-center {
 position: relative;
}
.ghost-center::before {
 content: " ";
 display: inline-block;
 height: 100%;
 width: 1%;
 vertical-align: middle;
}
.ghost-center p {
 display: inline-block;
 vertical-align: middle;
}【块级元素】
①已知元素高度(绝对定位+负的margin)
.parent {
 position: relative;
}
.child {
 position: absolute;
 top: 50%;
 height: 100px;
 margin-top: -50px; /* 为元素高度的一半,没有box-sizing时,为height+padding+border的一半*/
}②不知元素高度(与上一方法,大同小异)
.parent {
 position: relative;
}
.child {
 position: absolute;
 top: 50%;
 transform: translateY(-50%);
}③flex布局
.parent {
 display: flex;
 flex-direction: column;
 justify-content: center;
}①有固定宽高的元素
.parent {
 position: relative;
}
.child {
 width: 300px;
 height: 100px;
 padding: 20px;
 position: absolute;
 top: 50%;
 left: 50%;
 margin: -70px 0 0 -170px;/* 注意此处为height+padding+的一半*/
}②没有固定宽高的元素(同之前没有固定宽高元素一样,用transform解决)
.parent {
 position: relative;
}
.child {
 position: absolute;
 top: 50%;
 left: 50%;
 transform: translate(-50%, -50%);
}③使用flexbox布局
.parent {
 display: flex;
 justify-content: center;
 align-items: center;
}