出去打工和儿子租房
  • grid網格布局

    2021-12-28 16:10發布

    1、CSS Grid(網格) 布局

    CSS Grid 網格布局可以將網格元素放置在與這些行和列相關的位置上,進而快速、便捷的對頁面結構進行布局,提高工作效率。

    “flexbox” 是一維的布局,是因為一個 “flexbox container” 一次只能處理一個維度上的元素布局,一行或者一列。

    相比較 “Grid網格布局”,則是二維布局可以同時處理行和列上的布局,用于布局頁面主要的區域布局或小型組件。


    1.1、兼容

    ie10、ie11支持帶前綴-ms-

    1.2、基本概念

    1.2.1、容器與項目

    采用網格布局的區域,稱為"容器"(container)。 容器內部采用網格定位的子元素,稱為"項目"(item)。

    1.2.2、行和列

    容器里面的水平區域稱為"行"(row),垂直區域稱為"列"(column)。

    1.2.3、單元格

    行和列的交叉區域,稱為"單元格"(cell)

    正常情況下,n行和m列會產生n x m個單元格。比如,3行3列會產生9個單元格。

    1.2.4、網格線

    劃分網格的線,稱為"網格線"(grid line)。 水平網格線劃分出行,垂直網格線劃分出列。

    正常情況下,n行有n + 1根水平網格線,m列有m + 1根垂直網格線,比如三行就有四根水平網格線。


    1.3、網格屬性

    Grid 布局的屬性分成兩類。一類定義在容器上面,稱為容器屬性;另一類定義在項目上面,稱為項目屬性。

    1.3.1、容器屬性

    1.3.1.1、設置為網格布局

    • 設置為塊級網格

     div {
       display: grid;
     }
    • 設置為行級網格

     div {
       display: inline-grid;
     }

    注意:

    • 不是網格的直接子元素,不參與網格布局

    • 設為網格布局以后,容器子元素(項目)的float、display: inline-block、display: table-cell、vertical-align和column-*等設置都將失效。

    1.3.1.2、列寬與行高

    grid-template-columns網格布局中列的數量(和寬度)

    grid-template-rows網格布局中行的數量(和高度)

    語法:

    • 空格隔開的一組值列表

    • 其中每個值指定相應列的寬度/行的高度。

    取值:

    • 默認值none

    • 絕對單位px

       grid-template-columns: 100px 100px 100px;
       grid-template-rows: 100px 100px 100px;
    • 百分比

       .container {
         display: grid;
         grid-template-columns: 33.33% 33.33% 33.33%;
         grid-template-rows: 33.33% 33.33% 33.33%;
       }
    • fr 關鍵字

      fraction 的縮寫,意為部分

      • 彈性系數,按比例分配剩余空間(如果兩列的寬度分別為1fr和2fr,就表示后者是前者的兩倍)

    • 可以與絕對長度的單位結合使用

    • auto 關鍵字

      關鍵字表示由瀏覽器自己決定長度

       grid-template-columns: 100px auto 100px;
    • minmax()

      • 函數產生一個長度范圍,表示長度就在這個范圍之中。它接受兩個參數,分別為最小值和最大值.

        即空間不足時以最小以min顯示,空間有剩余時最大按max顯示

         grid-template-columns: 1fr 1fr minmax(100px, 1fr);
         minmax(100px, 1fr)表示列寬不小于100px,不大于1fr。
    • repeat()函數

       grid-template-columns: repeat(2, 100px 20px 80px);
       定義了6列,第一列和第四列的寬度為100px,第二列和第五列為20px,第三列和第六列為80px。
      • 簡化重復的值:接受兩個參數,第一個參數是重復的次數(上例是3),第二個參數是所要重復的值。

      • 重復某種模式:

    • auto-fill 關鍵字

       單元格的大小是固定的,但是容器的大小不確定。如果希望每一行(或每一列)容納盡可能多的單元格時使用。

       grid-template-columns:repeat(auto-fill,100px);
       表示每列寬度100px,然后自動填充,直到容器不能放置更多的列。

    1.3.1.3、設置行與行的間隔(行間距)

    column-gap屬性設置列與列的間隔(列間距);row-gap屬性設置行與行的間隔(行間距)。

    取值:

    • 默認值 0  

    • px

    • 百分比(相對于容器)

    簡寫grid-gap:

    • gap: 行間距 列間距; 【空格】隔開

    • 省略了第二個值,瀏覽器認為第二個值等于第一個值

    1.3.1.4、總網格區域在容器垂直位置,水平位置

    justify-content水平位置  總網格區域相對于容器左右對齊方式(網格內容大小小于容器寬時) align-content 位置  總網格區域相對于容器上下對齊方式(網格內容大小小于容器高時)  


    取值:

    • start - 對齊容器的起始邊框。

    • end - 對齊容器的結束邊框。

    • center - 容器內部居中。

    • stretch - 項目大小沒有指定時,拉伸占據整個網格容器。

    • space-around - 每個項目兩側的間隔相等。所以,項目之間的間隔比項目與容器邊框的間隔大一倍。

    • space-between - 項目與項目的間隔相等,項目與容器邊框之間沒有間隔。

    • space-evenly - 項目與項目的間隔相等,項目與容器邊框之間也是同樣長度的間隔。

    簡寫:

    place-content屬性是align-content屬性和justify-content屬性的合并簡寫形式。

    • place-content:垂直 水平 【空格】隔開

    • 如果省略第二個值,瀏覽器就會假定第二個值等于第一個值。

    1.3.1.5、設置單元格內容的垂直、水平位置

    justify-items 水平位置:內容相對于單元格左右對齊方式(通常項目內容大小小于單元格寬度時)

    align-items 垂直位置:內容相對于單元格上下對齊方式(通常項目內容大小小于單元格高度時)


    取值:

    • start:對齊單元格的起始邊緣。

    • end:對齊單元格的結束邊緣。

    • center:單元格內部居中。

    • stretch:拉伸,占滿單元格的整個寬度(默認值)


    簡寫:

    place-items屬性是align-items屬性和justify-items屬性的合并簡寫形式。

    • place-items: 垂直 水平; 【空格隔開】


    出去打工和儿子租房