css 网格布局_CSS网格布局模块简介

它曾经是表格 ,然后是边距和浮点数 ,然后是flexbox ,现在是网格 :CSS始终致力于寻求新的更好的方法来减轻对Web布局进行编码的古老工作。 CSS网格布局模型可以沿着两个轴 (水平和垂直)创建和更新布局, 从而影响元素的宽度和高度

网格布局不取决于标记中元素的位置,因此,可以在不更改布局的情况下改组标记中元素的位置 。 在网格模型中,网格容器元素通过网格线 分为网格列和行 (统称为网格轨迹 )。 现在,让我们看看如何创建示例网格

浏览器支持

在撰写本文时, 最新的IE浏览器和Edge仅支持CSS网格模块。 在其他主要浏览器中,CSS Grid 处于试验阶段 ,您必须在其中手动启用支持

  • Firefox:Shift + F2 ,在浏览器底部显示的GCLI输入栏中输入以下命令: pre pref set layout.css.grid.enabled true
  • Chrome:浏览chrome://flags URL并启用Experimental Web Platform features

所有主要的浏览器支持都可能在2017年初/中期推出

样本网格

要将元素转换为网格容器 ,可以使用以下三个display属性之一

  1. display: grid; –将元素转换为块网格容器
  2. display: inline-grid; –将元素转换为嵌入式网格容器
  3. display: subgrid; –如果元素是网格项目,则将其转换为忽略网格模板和网格间隙属性的子网

就像一个表由多个表单元格组成一样 ,一个网格也由多个网格单元格组成 。 网格项被分配给一组网格单元 ,这些网格单元统称为网格区域

我们将创建一个包含五个部分(网格区域)的网格 :顶部,底部,左侧,右侧和中央。 HTML 在容器div中五个div组成。

<div class="grid-container">
  <div class="grid-top">Top</div>
  <div class="grid-left">Left</div>
  <div class="grid-centre">centre</div>
  <div class="grid-right">Right</div>
  <div class="grid-bottom">Bottom</div>
</div>

在CSS中, grid-template-areas属性定义具有不同网格面积的网格字符串的表示网格行字符串中的每个有效名称均表示一列 。 若要创建一个空的网格单元格,您需要在行字符串中使用点( . )字符

.grid-container {
  width: 500px;
  height: 500px;
  display: grid;
  grid-template-areas:  "top    top    top"
                        "left   centre right"
                        "bottom bottom bottom";
}
.grid-top {
  grid-area: top;
}
.grid-bottom {
  grid-area: bottom;
}
.grid-left {
  grid-area: left;
}
.grid-right {
  grid-area: right;
}
.grid-centre{
  grid-area: centre;
}

因此,此代码创建了一个具有三行和三列的网格top项目占第一行中三列的面积,而bottom项目占最后一行中三列的面积。 leftcentreright每个项在中间行占据一列

现在我们需要为这些行和列分配尺寸grid-template-columnsgrid-template-rows属性定义网格轨迹 (行或列)的大小。

.grid-container {
  width: 500px;
  height: 500px;
  display: grid;
  grid-template-areas: "top    top    top"
                       "left   centre right"
                       "bottom bottom bottom";
  grid-template-columns: 100px auto 100px;
  grid-template-rows: 50px  auto 150px;
}

这就是我们CSS网格现在的外观(带有一些其他样式):

CSS网格
图像:网格
网格项目之间的空间

您可以使用grid-column-gapgrid-row-gap或它们的长期属性grid-gap 在列和行之间添加空格

.grid-container {
  width: 500px;
  height: 500px;
  display: grid;
  grid-template-areas: "top    top    top"
                       "left   centre right"
                       "bottom bottom bottom";
  grid-template-columns: 100px auto 100px;
  grid-template-rows: 50px  auto 150px;
  grid-gap: 5px 5px;
}

在下面,您可以看到grid-gap属性确实在网格项之间添加了间隙。

空间网格
图片:网格,轨道之间有间隔
对齐网格内容和项目

网格容器( .grid-container )的justify-content属性沿内联轴(水平轴)对齐网格的内容,而 align-content属性则沿块轴(垂直轴)对齐网格的内容。 这两个属性都可以具有以下值之一startendcenterspace-betweenspace-aroundspace-evenly

如果适用,对齐时轨道(行或列)的大小将缩小以适合内容 。 看看下面与不同值对齐的网格内容的屏幕快照。

justify-content: start;
具有辩解内容的网格:开始
justify-content: end;
包含正当内容的网格:结束
justify-content: center;
具有正当内容的网格:中心
justify-content: space-between;
具有正当内容的网格:间隔
justify-content: space-around;
具有正当内容的网格:环绕空间
justify-content: space-evenly;
具有合理内容的网格:空间均匀
align-content: start;
具有对齐内容的网格:开始
align-content: end;
网格与对齐内容:结束
align-content: center;
具有对齐内容的网格:居中
align-content: space-between;
网格具有对齐内容:间距
align-content: space-around;
带有align-content的网格:空格
align-content: space-evenly;
具有对齐内容的网格:空间均匀

在其网格区域内对齐单个项目 ,请使用另一对对齐属性justify-itemsalign-items 。 两者都可以具有以下值之一: startendcenterbaseline (沿着区域的基本网格线对齐项目)和stretch (项目填充整个区域)。


翻译自: https://www.hongkiat.com/blog/css-grid-layout-module/

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值