时间:2021-07-01 10:21:17 帮助过:79人阅读
【行内元素】适用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;
}以上就是总结css居中问题的解决办法的详细内容,更多请关注Gxl网其它相关文章!