1. 程式人生 > >CSS之元素居中

CSS之元素居中

一、水平居中

水平居中分為了行級元素、塊級元素(定寬塊級元素、不定寬塊級元素)。

(1)行級元素

行級元素居中只需在父元素中新增text-align:center屬性即可。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        #container{
            width:500px;
            height:300px;
            border:2px solid #00FFFF;
            text-align: center;
        }
        #img{
            height:200px;
            width:300px;
        }
    </style>
<body>
    <div id="container">
        <img id="img" src="img/1.jpg">
    </div>
</body>
</html>

(2)定寬塊級元素

定寬塊級元素使用margin:0 auto;進行居中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        #container{
            width:500px;
            height:300px;
            border:2px solid #00FFFF;
        }
        #img{
            display: block;
            height:200px;
            margin: 0 auto;
        }
    </style>
<body>
    <div id="container">
        <img id="img" src="img/1.jpg">
    </div>
</body>
</html>

(3)不定寬塊級元素

不定寬元素使用display:inline;text-align:center。

二、垂直居中

(1)父元素高度確定的單行文字

設定height與line-height高度一致。

(2)塊級元素垂直居中

1.已知子元素高度和父元素高度,直接使用margin-top屬性,其值為父元素高度的一半減去子元素高度的一半;或者使用position子元素對於父元素絕對定位,top:50%,margin-top減去自身高度一半。

2.子元素相對父元素絕對定位,設定top、right、bottom、left四個方向均為0,並使用margin:auto進行垂直水平居中。

3.父元素中使用display:table-cell,vertical-align:middle實現對子元素的垂直居中。

4.使用transform進行垂直居中(存在相容性問題):子元素對於父元素進行絕對定位,top、left設定為50%,使用transform:translate(-50%,-50%),使用這種方式無需知道子元素高度。

5.使用flex實現

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        #container{
            width:500px;
            height:300px;
            border:2px solid #00FFFF;
            display: flex;
            justify-content: center;
            align-items: center;
        }
        #img{
            height:200px;
            width:300px;
        }
    </style>
<body>
    <div id="container">
        <img id="img" src="img/1.jpg">
    </div>
</body>
</html>