HTML/CSS常見的幾種垂直居中方式


2019-11-02    20:18:35

一丶什么是垂直居中

  指當前標簽在父級容器中垂直方向是居中顯示的

  實現垂直居中的幾種方式:

    1.table-cell+vertical-align 屬性配合使用

    2.absolute+transform 屬性配合使用

    3.display+align-items 屬性配個使用

    4.position+margin 屬性配合使用

二丶代碼

  1.第一種

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .parent{
            height: 600px;
            width: 200px;
            display: table-cell;
            vertical-align: middle;
            background: chocolate;
        }
        .child{
            width: 200px;
            height: 200px;
            background: darkblue;
        }
    </style>
</head>
<body>
    <div class="parent">
        <div class="child"></div>
    </div>
</body>
</html>

    效果:

  vertical-align:屬性時用來設置文本內容垂直方向的對齊方式

    這里常用屬性值:top  頂部對齊

            middle 居中對齊

            bottom 底部對齊

  這里為什么會對div有效果,就完全是因為display屬性的table-cell屬性值,這時父級標簽將會表示成為一個表格的單元格,在table中單元格是可以將內容垂直居中的,因為單元格有兩種對齊方式,一種是水平方向的,一種是垂直方向的。

  這種方式的優點與缺點

    優點:瀏覽器兼容性好,支持老版本的瀏覽器,這兩個屬性在CSS2中也是支持的而老版本的瀏覽器對CSS2的支持非常好

    缺點:vertical-align屬性具有繼承性,這將會導致父級標簽內的所有文本都是垂直居中的

  2.第二種方式

    代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .parent{
            background: cornflowerblue;
            height: 600px;
            width: 200px;
            position:relative;
        }
        .child{
            width: 200px;
            height: 200px;
            position:absolute;
            top:50%;
            transform:translateY(-50%);
            background: crimson;
        }
    </style>
</head>
<body>
    <div class="parent">
        <div class="child"></div>
    </div>
</body>
</html>

  效果:

    這里的定位並沒有多於,這里是讓子級標簽在父級標簽居中的,父級標簽不開啟定位將會以頁面進行定位,如果開啟了將會以父級標簽進行定位,所以這里需要開啟父級標簽的定位。

    這種方式的優缺點

      優點:父級標簽不管是否脫離文檔流,不會影響子級標簽垂直居中的效果

      缺點:transform屬性是CSS3中的新屬性,瀏覽器支持不好,在個別老版本的瀏覽器中不適用

  3.第三種

    代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .parent{
            background: darkcyan;
            height: 600px;
            width: 200px;
            display: flex;
            align-items: center;
        }
        .child{
            background: darkred;
            width: 200px;
            height: 200px;
        }
    </style>
</head>
<body>
    <div class="parent">
        <div class="child"></div>
    </div>
</body>
</html>

    效果:

      這里布局使用的flex布局(彈性布局)任何一個容器都可以指定為flex布局,在flex布局中它的子級標簽都將會成為flex item,這個好像有點老了

  4.第四種

    代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        .parent{
            background: cornflowerblue;
            width: 200px;
            height: 600px;
            position: relative;
        }
        .child{
            background: crimson;
            position: absolute;
            top: 0;
            bottom: 0;
            margin: auto;
            width: 200px;
            height: 200px;
        }
    </style>
</head>
<body>
    <div class="parent">
        <div class="child"></div>
    </div>
</body>
</html>

    效果:

垂直居中不只是只有這幾種方法,還有很多的,這里不全部寫了

下篇水平垂直居中


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM