佈局總結-水平居中佈局的實現

yangdepp發表於2019-02-16

CSS佈局

一、左右佈局

1、float實現左右佈局

                    <!DOCTYPE html>
                    <html lang="en">
                    <head>
                        <meta charset="UTF-8">
                        <link rel="stylesheet" href="index01.css">
                        <title>居中佈局的幾個實現方案</title>
                    </head>
                    <body>
                        <div class="left"></div>
                        <div class="right">DEMO</div>
                    </body>
                    </html>

標籤結構很簡單,就是一個父元素裡面套了一個子元素

想要實現左右佈局,只需要把<div class="left"></div>設定成向左浮動,右邊向右浮動

.left{
    float: left;
}
.right{
    float: right;
}

或者把left和right設定成inline-block

.left{
    display: inline-block
}
.right{
    display: inline-block
}

二、居中佈局

1、html結構

                    <!DOCTYPE html>
                    <html lang="en">
                    <head>
                        <meta charset="UTF-8">
                        <link rel="stylesheet" href="index01.css">
                        <title>居中佈局的幾個實現方案</title>
                    </head>
                    <body>
                        <div class="parent">
                            <div class="child">DEMO</div>
                        </div>
                    </body>
                    </html>

標籤結構很簡單,就是一個父元素裡面套了一個子元素

2.用text-aligninline-block實現

  1. 首先text-align只針對inline元素有效,因此,可以在父元素設定text-align:center,然後改變子元素display:blockinline-block.
  2. index01.css的程式碼為:
                    .parent{
                        height: 200px;
                        background-color: gray;
                    
                        text-align: center;
                    }
                    .child{
                        background-color: yellowgreen;
                        height: 200px;
                        width: 200px;
                    
                        display: inline-block;
                    }

3.用display:tablemargin:0 auto實現

  1. 首先定寬的塊級元素可以設定margin:0 auto實現水平居中
  2. display:table這個元素的作用就像 <table> 元素. 它定義了一個塊級盒子.
  3. index02.css的程式碼為;

    .parent{
        height: 200px;
        background-color: gray;
    }
    
    /*display:table
    在表現形式上很像是block元素
    寬度跟著內容走。
    */
    .child{
        display: table;
        margin: 0 auto;
        background-color: greenyellow;
        height: 200px;
        width: 200px;
        text-align: center;
        line-height: 200px;
    }

4.用position:absoluteleft: 50%以及transform: translateX(-50%)實現

  1. 首先對父元素設定position: relative
  2. 對子元素設定絕對定位,相對於父元素定位
  3. left:50%則可以根據左邊進行定位
  4. 根據transform,則可以根據自身的寬度偏移
  5. index03.css的程式碼為:

        .parent{
            height: 200px;
            background-color: gray;
            position: relative;
        }
        .child{
            position: absolute;
            left: 50%;
            transform: translateX(-50%);
            height: 200px;
            background-color: greenyellow;
        }

5.用flex+justify-content實現

  1. 對父元素設定display:flex,則第一級子元素是flex-item
  2. 對子元素設定justify-content: center;就可以實現居中

/////////

  1. 也可以對子元素設定margin:0 auto實現居中
  2. index04.css的程式碼為:

        .parent{
            height: 200px;
            background-color: gray;
            display: flex;    
            justify-content: center;
        }
        .child{
            height: 200px;
            background-color: greenyellow;
            /*  margin: 0 auto;  */
        }

三、左中右佈局

左中右佈局參考一的左右佈局,可將三個元素都設定成float:left
或者將三個元素都設定成dispaly:inline-block

四、垂直居中

  1. heightline-height設定垂直居中
  2. display:flex和align-items: center`
  3. 行級元素設定vertial-align: middle

相關文章