zoukankan      html  css  js  c++  java
  • 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等设置即可;

  • 相关阅读:
    boost lexical_cast 字符串数字间的字面转换(学习笔记)
    Smoke Testing
    深入浅出InfoPath——手工绑定托管代码
    深入浅出InfoPath——操作InfoPath元素
    深入浅出SharePoint2010——附录:常用术语对照
    CAML语法必备
    深入浅出SharePoint ——2010 新特性之搜索
    BVT测试
    Windows 7的71个运行命令列表
    深入浅出InfoPath——如何在项目中引用GAC中的dll文件
  • 原文地址:https://www.cnblogs.com/xiao-baobao/p/11448944.html
Copyright © 2011-2022 走看看