前端开发

css居中方式总结(亲测有效)

2019-08-13  本文已影响8人  陈大事_code

行内元素水平居中

text-align: center

<div class="container">hello world</div>

.container {
    text-align: center    
}

适用情况:

块级元素水平居中

margin: 0 auto;

<div class="container">
    <div class="son">hello world</div>
</div>

.son {
    width: 100px;
    margin: 0 auto;
}

适用情况:

display: table

<div class="container">
    <div class="son">hello world</div>
</div>

.son {
    display: table;
    margin: 0 auto;
}

原因:
利用table的长度自适应,即使不定义长度,会根据其内容的长度来定义宽度,而不是默认为100%的宽度。在某种意义上来说,也是一种定宽。

块级元素垂直居中

块级元素水平垂直居中

flex布局(推荐使用)

<div class="container">
    <div>hello world</div>
</div>

.container {
    display: flex;
    justify-content: center;
    align-items: center;
}

适用范围:

绝对定位 + transform属性

<div class="container">
    <div class="son">hello world</div>
</div>

.container {
    display: relative;
}
.son {
    display: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%)
}

绝对定位 + margin

<div class="container">
    <div class="son">hello world</div>
</div>

.container {
    height: 500px;
    width: 500px;
    display: relative;
}
.son {
    display: absolute;
    height: 100px;
    width: 100px;
    top: 50%;
    left: 50%;
    margin: -50px 0 0 -50px;
}

注意:

在margin 中不能使用-50%,因为在这里相对的父元素百分比,如果使用了 margin: -50% 0 0 -50%; 则子元素还是会回到左上角。

适用范围:

绝对定位

<div class="container">
    <div class="son">hello world</div>
</div>

.container{
    width: 500px;
    height: 500px;
    background: red;
    position: relative;
}   
.son{
    height: 100px;
    width: 100px;
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    margin: auto;
    background: yellow;
}

适用条件

上一篇 下一篇

猜你喜欢

热点阅读