1. 程式人生 > >CSS 之Grid 網格知識梳理2

CSS 之Grid 網格知識梳理2

繼上篇的CSS 之Grid下半部分

    14.將單元格劃分到一個區域,使用grid-template-areas屬性;

         ag: grid-template-areas:

                     "header  header  header"

                     "advert  content  content"

                     "footer  footer  footer";

          上段程式碼中,每個單詞代表一個單元格,每對引號代表一行(當想讓指定單元格為空時,使用“.”(點號)表示)

  15.引用給定的名稱將項放入到自定義區域中:grid-area屬性實現;

      ag:

 1 <div class="container">
 2   <div class="item1">1</div>
 3   <div class="item2">2</div>
 4   <div class="item3">3</div>
 5   <div class="item4">4</div>
 6   <div class="item5">5</div>
 7 </div>
 8 
 9 
10 <style>
11   .item1{background:LightSkyBlue;}
12   .item2{background:LightSalmon;}
13   .item3{background:PaleTurquoise;}
14   .item4{background:LightPink;}
15   
16   .item5 {
17     background: PaleGreen;
18     
19      grid-area:footer;  //將item5劃分到頁尾;
20 
21   }
22   
23   .container {
24     font-size: 40px;
25     min-height: 300px;
26     width: 100%;
27     background: LightGray;
28     display: grid;
29     grid-template-columns: 1fr 1fr 1fr;
30     grid-template-rows: 1fr 1fr 1fr;
31     grid-gap: 10px;
32     grid-template-areas: 
33       "header header header"
34       "advert content content"
35       "footer footer footer";
36   }
37 </style>

前面為未新增“grid-area”程式碼的效果圖,後圖為添加了“grid-area”值的效果如下:

           

 

 16.在15點的基礎上,知道了將指定單元格放入到指定區域中,先將未劃分的區域放入到指定的區域中,仍舊使用grid-area屬性,改變其值即可;

    該屬性的接收值為:grid-area: horizontal line to start at / vertical line to start at / horizontal line to end at / vertical line to end at;

                                 (grid-area:水平方向開始線/垂直方向開始線/水平方向結束線/垂直方向結束線);

    ag:

 1 <div class="container">
 2   <div class="item1">1</div>
 3   <div class="item2">2</div>
 4   <div class="item3">3</div>
 5   <div class="item4">4</div>
 6   <div class="item5">5</div>
 7 </div>
 8 
 9 
10 <style>
11   .item1{background:LightSkyBlue;}
12   .item2{background:LightSalmon;}
13   .item3{background:PaleTurquoise;}
14   .item4{background:LightPink;}
15   
16   .item5 {
17     background: PaleGreen;
18    grid-area:3/1/4/4;   //從水平第三條線即第三行,垂直方向第一條線到第四條線,即第三列效果
19   }
20   
21   .container {
22     font-size: 40px;
23     min-height: 300px;
24     width: 100%;
25     background: LightGray;
26     display: grid;
27     grid-template-columns: 1fr 1fr 1fr;
28     grid-template-rows: 1fr 1fr 1fr;
29     grid-gap: 10px;
30   }
31 </style>

  效果如下:

      

 

 實現了與14點一致的效果;

17.當需要寬度/高度一致且行數/列數較多時,使用repeat函式可達到目的而且可減少重複的程式碼數;

      A.列數;grid-template-columns:repeat(列數,列高度);

      B.行數:grid-template-rows:repeat(2,1fr 50px) 20px);   //作用與“grid-template-columns: 1fr 50px 1fr 50px 20px;”一致;

 

18.使用minmax函式限制單元格的尺寸;(在網格容器更改大小時限制,即為專案指定可接受的範圍)

    ag:

grid-template-columns:20px minmax(90px,200px);//指定了2列,一列200px.一列限制在90px-200px;

19.使用自動填充建立靈活的佈局:auto-fill屬性;

       repeat函式附帶一個名為自動填充的選項。這允許您根據容器的大小自動插入儘可能多的所需大小的行或列。您可以在組合au時建立靈活的佈局;

   ag:

 1 <div class="container">
 2   <div class="item1">1</div>
 3   <div class="item2">2</div>
 4   <div class="item3">3</div>
 5   <div class="item4">4</div>
 6   <div class="item5">5</div>
 7 </div>
 8 <div class="container2">
 9   <div class="item1">1</div>
10   <div class="item2">2</div>
11   <div class="item3">3</div>
12   <div class="item4">4</div>
13   <div class="item5">5</div>
14 </div>
15 
16 
17 <style>
18   .item1{background:LightSkyBlue;}
19   .item2{background:LightSalmon;}
20   .item3{background:PaleTurquoise;}
21   .item4{background:LightPink;}
22   .item5{background:PaleGreen;}
23   
24   .container {
25     font-size: 40px;
26     min-height: 100px;
27     width: 100%;
28     background: LightGray;
29     display: grid;
30 
31     
32     grid-template-columns: repeat(auto-fill, minmax(60px, 1fr));//實現當可視介面自動填充
33     
34    
35     grid-template-rows: 1fr 1fr 1fr;
36     grid-gap: 10px;
37   }
38   
39   .container2 {
40     font-size: 40px;
41     min-height: 100px;
42     width: 100%;
43     background: Silver;
44     display: grid;
45     grid-template-columns: repeat(3, minmax(60px, 1fr));
46     grid-template-rows: 1fr 1fr 1fr;
47     grid-gap: 10px;
48   }
49 </style>

 

20.使用自動適應建立靈活佈局:auto-fit屬性實現;(用法同auto-fill一致)

 

21.使用媒體查詢建立響應式佈局;

  

1 @media (min-width;400px){
2     .container{
3         grid-template-area:
4             "header  header"
5             "advert content "
6             "footer  footer ";
7     }
8 }   //當可視介面 >400px,header佔據頁首,footer佔據也尾,advert佔據左列

添加了如上程式碼前後效果對比圖如下:

         

 

 

 22.將直系後代轉化為網格,網格中就有了網格;

        在後代元素中,改變其display:grid之後,grid-template-columns等設定即可;

&n