<div class="wrapper">
    <div>Item One</div>
    <div>Item Two</div>
    <div>Item Three</div>
    <div>Item Four</div>
    <div>Item Five</div>
</div>
      
.wrapper {
    display: grid;
}
       
      .容器列的划分;单位可以是绝对的或相对的;可以混合使用
grid-template-columns: px | % | fr | auto | repeat() | minmax() | max-content | min-content;
grid-template-columns: 100px 200px 300px;
grid-template-columns: 10% 70% 20%;
grid-template-columns: 1fr 2rem 1fr;
grid-template-columns: 1fr 2fr 1fr;
grid-template-columns: auto 1fr auto;
grid-template-columns: 1fr auto 1fr;
grid-template-columns: 2rem auto 1fr;
grid-template-columns: repeat(3, 1fr);
grid-template-columns: repeat(12, 1fr);
grid-template-columns: repeat(3, 100px 200px);
.如果想 自适应 划分,可以使用:auto-fill、auto-fit;其中,minmax():格子最小和最大尺寸
.auto-fill:当容器有 剩余闲置空间,生成 空轨道;尽可能多地填充列,即使这些列是空的
grid-template-columns: repeat(auto-fill, minmax(50px, 1fr));
 
      auto-fill
.auto-fit:不会生成 轨道,剩余空间被分配到各个子项中;根据实际内容调整列的数量和宽度,收缩多余的列
grid-template-columns: repeat(auto-fit, minmax(50px, 1fr));
 
      auto-fit
.列宽由最大宽度子项绝对 - maximal content contribution will be defined by the size of the largest sentence
.让列尽可能宽以适应最长的内容,保证内容不会被截断
.列宽由子项中的某个最大单词宽度决定 - minimal content contribution will be defined by the size of the largest word
.让列尽可能窄,仅适应最窄的内容,可能导致较多剩余空间;紧凑的列布局
grid-template-rows: px | % | fr | auto | repeat() | minmax();
grid-auto-rows: <length> | <percentage> | min-content | max-content | auto;
grid-auto-columns: <length> | <percentage> | min-content | max-content | auto;
align-items: strench;
align-items: center;
grid-auto-flow: row | column | dense | row dense | column dense;
 
      默认 row 排列 - 划分列的行优先
 
      column 排列 - 划分行的列优先
 
      column 排列 - 未划分行的列优先
 
      默认拉伸填充
 
      水平居中
 
      垂直居中
 
      默认开始 normal/start/flex-start
 
      水平居中 center
 
      水平结束 end/flex-end
 
       
       
      
.box div:nth-child(1) {
    grid-column-start: 1;
    grid-column-end: 3;
}
      
.box div:nth-child(1) {
    grid-column: 1/3;
}
      
.box div:nth-child(1) {
    grid-column: span 2;
}
       
      
.box div:nth-child(2) {
    grid-row: 1/3;
}
       
      
.box div:nth-child(2) {
    grid-row: 1/3;
    grid-column: 3/4;
}
      
.box div:nth-child(2) {
    grid-row: span 2;
}
    grid-area: area-name;
grid-area: row-start / col-start / row-end / col-end;
.aside {
    display: grid;
    grid-template-columns: 8rem 1fr;
    gap: 1rem;
}
      
.aside {
    display: grid;
    grid-template-columns: minmax(150px, 25%) 1fr;
    gap: 1rem;
}
    
.cup {
    display: grid;
    grid-template-columns: 8rem 1fr 4rem;
    gap: 1rem;
}
    
.grid {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    gap: 1rem;
}
      
.grid {
    display: grid;
    grid-template-columns: 1fr 2fr 1fr;
    gap: 1rem;
}
     
      
.grid {
  width: 300px;
  height: 200px;
  display: grid;
  grid-template-rows: auto 1fr auto;
  gap: 1rem;
}
     
      
  .page {
      display: grid;
      grid-template-columns: auto 1fr auto;
      grid-template-rows: auto auto 1fr auto;
      grid-template-areas:
          'header header header'
          'nav nav nav'
          'aside article article'
          'footer footer footer';
      min-height: 100vh;
      gap: 1rem;
  }
  header {
      grid-area: header;
  }
  nav {
      grid-area: nav;
  }
  aside {
      grid-area: aside;
  }
  article {
      grid-area: article;
  }
  footer {
      grid-area: footer;
  }
     
      
.sudoku {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
}
     
      
.item:nth-child(1),
.item:nth-child(5) {
  grid-column: span 2
}
.item:nth-child(2),
.item:nth-child(3) {
  grid-row: span 2;
}      
      
.item:nth-child(1) {
  grid-column: 1/3;
}
.item:nth-child(2) {
  grid-column: 3/4;
  grid-row: 1/3;
}
.item:nth-child(3) {
  grid-row: 2/4;
}
.item:nth-child(5) {
  grid-column: 2/4;
}
    
<div class="wrap">
  <ul>
    <li>Lorem.</li>
    <li>Sapiente.</li>
    <li>Placeat.</li>
    <li>Rem.</li>
    <li>Magnam.</li>
  </ul>
</div>
      
.wrap {
  display: grid;
  grid-template-rows: 0fr;//MUST be 0fr, NOT 0
  transition: .5s;
}
.wrap.active {
  grid-template-rows: 1fr;
}
.wrap ul {
  overflow: hidden;
}
    
.ale {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(10rem, 1fr));
    gap: 1rem;
}
    
.case0 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
}
    
.case1 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    width: 100%;
    height: 320px;
}
    
.case2 {
    display: grid;
    grid-template-columns: repeat(3, 80px);
    grid-template-rows: repeat(3, 80px);
    gap: 10px;
    margin: 1rem auto;
    width: 100%;
    height: 320px;
    background-color: #eee;
}
    
.self {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    width: 320px;
    height: 320px;
    margin: 1rem auto;
    background-color: #eee;
}
.self div:nth-child(1) {
    justify-self: start;
    align-self: start;
}
.self div:nth-child(2) {
    justify-self: center;
    align-self: start;
}
.self div:nth-child(3) {
    justify-self: end;
    align-self: start;
}
.self div:nth-child(4) {
    justify-self: start;
    align-self: center;
}
.self div:nth-child(5) {
    justify-self: center;
    align-self: center;
}
.self div:nth-child(6) {
    justify-self: end;
    align-self: center;
}
.self div:nth-child(7) {
    justify-self: start;
    align-self: end;
}
.self div:nth-child(8) {
    justify-self: center;
    align-self: end;
}
.self div:nth-child(9) {
    justify-self: end;
    align-self: end;
}