9种经典CSS垂直居中方法

2018-08-20  本文已影响19人  阿尔卑斯的隆冬

1. 单行文本+line-height

HTML代码:

<div id="box">
    <div id="content">这是一行文字</div>
</div>

CSS代码:

#box {
    width: 300px;
    height: 200px;
}

#content {
    line-height: 200px;
}

2. table-cell + vertical-align

HTML代码:

<div id="box">
    <div id="content">content</div>
</div>

CSS代码:

#box {
    display: table-cell;
    width: 300px;
    height: 200px;
    vertical-align: middle;
}

3. absolute + margin负值

HTML代码:

<div id="box">
    <div id="content">content</div>
</div>

CSS代码:

#box {
    position: relative;
    width: 300px;
    height: 200px;
}

#content {
    position: absolute;
    width: 150px;
    height: 100px;
    top: 50%;
    margin-top: -50px;
}

4. absolute + transform

HTML代码:

<div id="box">
    <div id="content">content</div>
</div>

CSS代码:

#box {
    position: relative;
    width: 300px;
    height: 200px;
}

#content {
    position: absolute;
    width: 150px;
    height: 100px;
    top: 50%;
    transform: translate(0, -50%);
}

5. absolute + margin: auto

HTML代码:

<div id="box">
    <div id="content">content</div>
</div>

CSS代码:

#box {
    position: relative;
    width: 300px;
    height: 200px;
}

#content {
    position: absolute;
    width: 150px;
    height: 100px;
    top: 0;
    bottom: 0;
    margin: auto;
}

6. flex + align-items

HTML代码:

<div id="box">
    <div id="content">content</div>
</div>

CSS代码:

#box {
    display: flex;
    width: 300px;
    height: 200px;
    align-items: center;
}

7. flex + margin: auto

HTML代码:

<div id="box">
    <div id="content">content</div>
</div>

CSS代码:

#box {
    display: flex;
    width: 300px;
    height: 200px;
}

#content {
    margin: auto;
}

8. 伪元素 + height: 50% + margin负值

HTML代码:

<div id="box">
    <div id="content">content</div>
</div>

CSS代码:

#box {
    width: 300px;
    height: 200px;
}

#box:before {
    content: "";
    display: table;
    height: 50%;
}

#content {
    width: 150px;
    height: 100px;
    margin-top: -50px;
}

9. 伪元素 + height: 100% + inline-block + vertical-align

HTML代码:

<div id="box">
    <div id="content">content</div>
</div>

CSS代码:

#box {
    width: 300px;
    height: 200px;
}

#box:after {
    content: "";
    display: inline-block;
    height: 100%;
    vertical-align: middle;
}

#content {
    display: inline-block;
    width: 150px;
    height: 100px;
    vertical-align: middle;
}
上一篇 下一篇

猜你喜欢

热点阅读