网格布局一把梭

最后更新于

参考:https://web.dev/articles/css-subgrid

自从 subgrid广泛支持后,网格布局系统终于可以在前端被当成一把梭的存在 (和 flex 平起平坐了),下面就来看看。

来看这么一个例子 (取自 Subgrids Considered Essential):

<ul>
  <li><label>Name:</label> <input id="name"></li>
  <li><label>Email:</label> <input id="email"></li>
  <li><label>Password:</label> <input id="password"></li>
</ul>

你的设计师朋友:这几个 label 能不能加个纵向对齐?

除了强行给 <label> 加个估算的 width 外,其实用 subgrid 就可以实现:

ul {
  display: grid;
  grid-template-columns: [column-1] max-content [column-2] 1fr [end];
}
ul li {
  grid-column: span 2;
  display: grid;
  grid-template-columns: subgrid;
}

简单解释几点: