zoukankan      html  css  js  c++  java
  • css grid布局

    css-grid

    foo

    1
    2
    3
    4
    5
    6
    7
    8
    9

    bar

    flex是轴线布局,称为一维布局;grid则是将容器划分为行和列,产生单元格,然后指定项目所在的单元格,可以看做是二维布局。
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta http-equiv="X-UA-Compatible" content="IE=edge">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <title>css-grid</title>
      <style>
        *{
          margin: 0;
          padding: 0;
        }
        #container{
          display: grid;
          /* 
            grid-template-columns属性定义每一列的列宽 
            grid-template-rows属性定义每一行的行高
            grid-template-columns: 100px 100px 100px;
            grid-template-rows: 100px 100px 100px;
          */
          /* 
            除了使用绝对单位,也可以使用百分比。 
            grid-template-columns: 33.33% 33.33% 33.33%;
            grid-template-rows: 33.33% 33.33% 33.33%;
          */
          /* 
            重复写同样的值可以使用repeat()函数 
            repeat()接受两个参数,第一个参数是重复的次数(上例是3),第二个参数是所要重复的值。
            grid-template-columns: repeat(3,33.33%);
          */
          /* 
            auto-fill 关键字
            grid-template-columns: repeat(auto-fill, 100px);
            每列宽度100px,然后自动填充,直到容器不能放置更多的列。
          */
          /* 
            fr 关键字(fraction 的缩写,意为"片段")
            表示比例关系
            grid-template-columns: 1fr 1fr;表示两个相同宽度的列。
            grid-template-columns: 150px 1fr 2fr;第一列的宽度为150像素,第二列的宽度是第三列的一半。
          */
          /* 
            minmax()函数产生一个长度范围,表示长度就在这个范围之内。他接受两个参数,分别是最大值和最小值。
            grid-template-columns: 1fr 1fr minmax(100px,1fr); minmax(100px, 1fr)表示列宽不小于100px,不大于1fr。
           */
          /* 
            auto关键字
            auto关键字表示游浏览器自己决定长度。
            grid-template-columns: 100px auto 100px;
           */
          /* grid-template-columns: 70% 30%;左边栏设为70%,右边栏设为30%。 */
          /* grid-template-columns: 66.66% 33.33%; */
          /* 
            grid-row-gap 行间距
            grid-column-gap 列间距
            grid-gap属性是grid-column-gap和grid-row-gap的合并简写形式,语法如下。
            grid-gap: <grid-row-gap> <grid-column-gap>;
           */
          /* 
              grid-auto-flow 属性
              划分网格以后,容器的子元素会按照顺序,自动放置在每一个网格。默认的放置顺序是"先行后列",即先填满第一行,再开始放入第二行,即下图数字的顺序。
              这个顺序由grid-auto-flow属性决定,默认值是row,即"先行后列"。也可以将它设成column,变成"先列后行"。
           */
          grid-template-columns: 100px 100px 100px;
          grid-template-rows: 100px 100px 100px;
          /* grid-auto-flow: row dense; */
          /* 
              justify-items: start | end | center | stretch;设置单元格内容的水平位置
              align-items: start | end | center | stretch; 设置单元格内容的垂直位置
              place-items <align-items> <justify-items>;align-items属性和justify-items属性的合并简写形式。
              justify-content 整个内容区域在容器里面的水平位置(左中右)
              align-content属性是整个内容区域的垂直位置(上中下)
              place-content属性是align-content属性和justify-content属性的合并简写形式。
              共有属性
              start 对齐单元格的起始边缘
              end 对齐单元格的结束边缘
              center 单元格内布局中
              stretch 拉伸,占满单元格的整个宽度(默认值)
              justify-content align-content属性
              space-around - 每个项目两侧的间隔相等。所以,项目之间的间隔比项目与容器边框的间隔大一倍。
              space-between - 项目与项目的间隔相等,项目与容器边框之间没有间隔。
              space-evenly - 项目与项目的间隔相等,项目与容器边框之间也是同样长度的间隔。
           */
          /* justify-items: start; */
          /* 
                grid-auto-columns
                grid-auto-rows
           */
           grid-auto-rows: 50px; 
        }
        .item{
          text-align: center;
          border: 1px solid #e5e4e9;
        }
        .item-1 {
          background-color: #ef342a;
          /* 
            项目属性
            grid-column-start属性:左边框所在的垂直网格线
            grid-column-end属性:右边框所在的垂直网格线
            grid-row-start属性:上边框所在的水平网格线
            grid-row-end属性:下边框所在的水平网格线
          */
          /* 
            左边框是第二根垂直网格线,右边框是第四根垂直网格线。 
            grid-column-start: 2;
            grid-column-end: 4;
          */
          /* grid-column-start: 1;
          grid-column-end: 3;
          grid-row-start: 2;
          grid-row-end: 4; */
    
          /* 
            grid-column属性是grid-column-start和grid-column-end的合并简写形式,
            grid-row属性是grid-row-start属性和grid-row-end的合并简写形式。
           */
          grid-column: 1 / 3;
          grid-row: 1 / 3;
    
          /* 
            grid-area 属性
            1号项目位于e区域
            grid-area属性还可用作grid-row-start、grid-column-start、grid-row-end、grid-column-end的合并简写形式,直接指定项目的位置。
           */
          /* grid-area: e; */
          grid-area: 1 / 1 / 2 / 3;
    
          /* 
            justify-self属性设置单元格内容的水平位置(左中右),跟justify-items属性的用法完全一致,但只作用于单个项目。
            align-self属性设置单元格内容的垂直位置(上中下),跟align-items属性的用法完全一致,也是只作用于单个项目。
            place-self属性是align-self属性和justify-self属性的合并简写形式。
           */
          justify-self:start;
          align-self: start;
        }
    
        /* .item-1 {
          grid-column: 1 / 3;
          grid-row: 1 / 2;
        } */
        /* 等同于 */
        /* .item-1 {
          grid-column-start: 1;
          grid-column-end: 3;
          grid-row-start: 1;
          grid-row-end: 2;
        } */
    
        .item-2 {
          background-color: #f68f26;
        }
    
        .item-3 {
          background-color: #4ba946;
        }
    
        .item-4 {
          background-color: #0376c2;
        }
    
        .item-5 {
          background-color: #c077af;
        }
    
        .item-6 {
          background-color: #f8d29d;
        }
    
        .item-7 {
          background-color: #b5a87f;
        }
    
        .item-8 {
          background-color: #d0e4a9;
        }
    
        .item-9 {
          background-color: #4dc7ec;
        }
      </style>
    </head>
    <body>
      <span>foo</span>
      <div id="container">
        <div class="item item-1">1</div>
        <div class="item item-2">2</div>
        <div class="item item-3">3</div>
        <div class="item item-4">4</div>
        <div class="item item-5">5</div>
        <div class="item item-6">6</div>
        <div class="item item-7">7</div>
        <div class="item item-8">8</div>
        <div class="item item-9">9</div>
      </div>
      <span>bar</span>
      <div>
        flex是轴线布局,称为一维布局;grid则是将容器划分为行和列,产生单元格,然后指定项目所在的单元格,可以看做是二维布局。
      </div>
    </body>
    </html>
  • 相关阅读:
    Windows 上 Redis 的安装
    SpringBoot项目application.yml 问题
    Gradle项目使用zxing在windows下报错:android:jar must specify an absolute path but is /${env.ANDROID_HOME}/…
    day23<AJAX>
    day22<文件上传>
    day21<过滤器>
    day20<监听器&国际化>
    day19<Service>
    day18<事务&连接池&DBUtils>
    day17<JDBC>
  • 原文地址:https://www.cnblogs.com/wenshaochang123/p/14832021.html
Copyright © 2011-2022 走看看