We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
栅格化布局帮助你更容易构建复杂的网页设计。它会将HTML元素转换为网格的容器(有行有列)。你可以在网格里面添加你想要的子元素。
HTML
将一个HTML元素转换为网格的容器,只需要对其设置display: grid即可。display: grid告诉我们,可以使用CSS Grid的相关属性了。
display: grid
CSS Grid
<dl class="container"> <dd class="item1">item1</dd> <dd class="item2">item2</dd> <dd class="item3">item3</dd> <dd class="item4">item4</dd> <dd class="item5">item5</dd> <dd class="item6">item6</dd> </dl>
.container{ display: grid; }
⚠ 在CSS栅格布局中,父元素就是栅格容器(这里是class="container"的dl元素),其下的子元素为我们称为项目items
items
上面我们已设定容器container为珊格化了,那么我们还得为这块圈起来的元素设置模版列数,表明列的区域。
container
.container{ min-width: 200px; display: grid; grid-template-columns: 100px 100px auto; }
grid-template-columns的属性值100px 100px auto的意思是将区域划分为三列,第一列和第二列的宽度都为100px,第三列的宽度为自适应。
grid-template-columns
100px 100px auto
100px
上面我们设置了列数,那么对应的,就有行数,我们来设置下模版行数。
.container{ min-height: 200px; display: grid; grid-template-rows: 60px auto; }
grid-template-rows的属性值60px auto的意思是将区域分为两行,第一行的高度固定为60px,而第二行的高度自适应。
grid-template-rows
60px auto
60px
单位的设置可以有px, auto, %, fr。这里的fr是fraction的缩写,表示某物的部分。比如下面的例子:
px, auto, %, fr
fr
fraction
grid-template-rows: auto 10% 2fr 1fr,表示的意思是将栅格化的区域分为4行:第一行是根据内容自适应,第二行为区域的10%,最后剩余的区域分成三部分,2fr表示占其2/3,1fr表示占其1/3。
grid-template-rows: auto 10% 2fr 1fr
有必要对列与列之间设置间距,你可以理解为margin-left和margin-right的应用:
margin-left
margin-right
.container{ display: grid; grid-template-columns: 100px 100px auto; grid-column-gap: 10px; }
grid-column-gap表示列之间相隔10px,对左边界区域左间隔不影响,对右边界区域右间隔不影响。
grid-column-gap
10px
像上面设置列边距一样,有必要设置列与列的间距,对应的 - 你可以理解为margin-top和margin-bottom的应用:
margin-top
margin-bottom
.container{ display: grid; grid-template-rows: 60px auto; grid-row-gap: 10px; }
grid-row-gap表示行之间相隔10px,对上边界区域顶部间隔不影响,对下边界区域底部间隔不影响。
grid-row-gap
像margin一样,我们可以对margin-top, margin-right, margin-bottom, margin-left进行简写。grid-gap可以对grid-row-gap, grid-column-gap进行简写。
margin
margin-top, margin-right, margin-bottom, margin-left
grid-gap
grid-row-gap, grid-column-gap
但是,grid-gap的值又不像margin一样可以写四个,它只有两个:
.container{ display: grid; grid-template-columns: 100px 100px auto; grid-template-rows: 60px auto; grid-gap: 10px 20px; }
grid-gap: 10px 20px表示行间隔为10px,列间隔为20px。
grid-gap: 10px 20px
20px
到目前为止,我们讲的是栅格布局容器的拆分,下面我们来讲其子元素的布局。
grid-column表示列跨度,比如:
grid-column
.container{ display: grid; grid-template-columns: 100px 100px auto; .item5{ grid-column: 1 / 3 } }
grid-column上面的列跨度,表示类名为item5元素横跨第一列到第三列。
对应的,grid-row表示行跨度,比如:
grid-row
.container{ display: grid; grid-template-rows: 50px 50px auto; .item3{ grid-row: 2 / 4 } }
grid-row上面的行跨度,表示类名为item3元素横跨第二行到第四行。
justify-self更改元素宽度和排列的位置,有值如下:
justify-self
stretch: 默认值,拉伸内容的宽度为预设的宽度
start: 宽度为内容宽度,内容在左侧展示
center: 宽度为内容宽度,内容在居中展示
end: 宽度为内容宽度,内容在右侧展示
align-self更改元素高度和排列的位置,有值如下:
align-self
stretch: 默认值,拉伸内容的高度为预设的高度
start: 宽度为内容高度,内容在上侧展示
center: 宽度为内容高度,内容在居中展示
end: 宽度为内容高度,内容在下侧展示
我们想对所有子元素内容进行水平方向的排列,那么需要在设定的容器中使用justify-items属性,而不是一个个子元素进行设置justify-self属性。justify-items属性值同justify-self。
justify-items
.container{ display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 1fr 1fr 1fr; grid-gap: 10px; justify-items: center; }
同理的,我们想对所有子元素内容进行垂直方向的排列,那么需要在设定的容器中使用align-items属性,而不是一个个子元素进行设置align-self属性。align-items属性值同align-self。
align-items
.container{ display: grid; grid-template-columns: 1fr 1fr 1fr; grid-template-rows: 1fr 1fr 1fr; grid-gap: 10px; align-items: center; }
通过grid-template-areas为每个栅格单元命名。
grid-template-areas
.container{ display: grid; grid-template-columns: 100px 100px auto; grid-template-rows: 50px 50px auto; grid-template-areas: "header header header" ". content content" "footer footer footer"; }
注意: ⚠ .表示表格中的空单元格
grid-template-areas已经为元素划分好了单元格并命名了,接下来可以通过grid-area在其子元素中关联上。
grid-area
.container{ display: grid; grid-template-columns: 100px 100px auto; grid-template-rows: 50px 50px auto; grid-template-areas: "header header header" ". content content" "footer footer footer"; .item6{ grid-area: footer; } }
当然,我们可以仅仅使用grid-area实现上面需要grid-template-area和grid-area才能实现的效果。如下
grid-template-area
.container{ display: grid; grid-template-columns: 100px 100px auto; grid-template-rows: 50px 50px auto; .item6{ grid-area: 3 / 1 / 4 / 4; } }
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-template-columns和grid-template-rows定义栅格的行列结构。上面我们是一个个定义的。我们也可以使用repeat()函数简化操作。
repeat()
比如分为四列,第一列和第二列是100px,第三列为1fr,最后一列是2fr。
1fr
2fr
.container{ display: grid; grid-template-columns: repeat(2, 100px) 1fr 2fr; }
在我们布局空间有限的情况下,我们需要对布局的元素设置其最小值和最大值,通过minmax()函数可以轻松做到。
minmax()
.container{ display: grid; grid-template-columns: repeat(2, 100px) minmax(60px, 1fr) 2fr; }
上面的属性在实际的开发中已经够用。如果你还想了解其他的属性等,你可以点击下面的参考链接进行学习。grid的兼容性还是杠杆的,除了Opera Mini和Baidu Browser不支持外,其他的都支持~
Opera Mini
Baidu Browser
更多的内容可以前往JIMMY BLOG
http://cssgridgarden.com/
https://www.freecodecamp.org/learn/responsive-web-design/css-grid/
The text was updated successfully, but these errors were encountered:
No branches or pull requests
栅格化布局帮助你更容易构建复杂的网页设计。它会将
HTML
元素转换为网格的容器(有行有列)。你可以在网格里面添加你想要的子元素。grid 初始化元素为栅格化
将一个
HTML
元素转换为网格的容器,只需要对其设置display: grid
即可。display: grid
告诉我们,可以使用CSS Grid
的相关属性了。grid-template-columns 设置列数
上面我们已设定容器
container
为珊格化了,那么我们还得为这块圈起来的元素设置模版列数,表明列的区域。grid-template-columns
的属性值100px 100px auto
的意思是将区域划分为三列,第一列和第二列的宽度都为100px
,第三列的宽度为自适应。grid-template-rows 设置行数
上面我们设置了列数,那么对应的,就有行数,我们来设置下模版行数。
grid-template-rows
的属性值60px auto
的意思是将区域分为两行,第一行的高度固定为60px
,而第二行的高度自适应。grid-column-grap 设置列间距
有必要对列与列之间设置间距,你可以理解为
margin-left
和margin-right
的应用:grid-column-gap
表示列之间相隔10px
,对左边界区域左间隔不影响,对右边界区域右间隔不影响。grid-row-gap 设置行间距
像上面设置列边距一样,有必要设置列与列的间距,对应的 - 你可以理解为
margin-top
和margin-bottom
的应用:grid-row-gap
表示行之间相隔10px
,对上边界区域顶部间隔不影响,对下边界区域底部间隔不影响。grid-gap 简写
像
margin
一样,我们可以对margin-top, margin-right, margin-bottom, margin-left
进行简写。grid-gap
可以对grid-row-gap, grid-column-gap
进行简写。但是,
grid-gap
的值又不像margin
一样可以写四个,它只有两个:grid-gap: 10px 20px
表示行间隔为10px
,列间隔为20px
。到目前为止,我们讲的是栅格布局容器的拆分,下面我们来讲其子元素的布局。
子元素 grid-column
grid-column
表示列跨度,比如:grid-column
上面的列跨度,表示类名为item5元素横跨第一列到第三列。子元素 grid-row
对应的,
grid-row
表示行跨度,比如:grid-row
上面的行跨度,表示类名为item3元素横跨第二行到第四行。子元素 justify-self
justify-self
更改元素宽度和排列的位置,有值如下:stretch: 默认值,拉伸内容的宽度为预设的宽度
start: 宽度为内容宽度,内容在左侧展示
center: 宽度为内容宽度,内容在居中展示
end: 宽度为内容宽度,内容在右侧展示
子元素 align-self
align-self
更改元素高度和排列的位置,有值如下:stretch: 默认值,拉伸内容的高度为预设的高度
start: 宽度为内容高度,内容在上侧展示
center: 宽度为内容高度,内容在居中展示
end: 宽度为内容高度,内容在下侧展示
justify-items
我们想对所有子元素内容进行水平方向的排列,那么需要在设定的容器中使用
justify-items
属性,而不是一个个子元素进行设置justify-self
属性。justify-items
属性值同justify-self
。align-items
同理的,我们想对所有子元素内容进行垂直方向的排列,那么需要在设定的容器中使用
align-items
属性,而不是一个个子元素进行设置align-self
属性。align-items
属性值同align-self
。grid-template-areas
通过
grid-template-areas
为每个栅格单元命名。子元素 grid-area关联预设名称
grid-template-areas
已经为元素划分好了单元格并命名了,接下来可以通过grid-area
在其子元素中关联上。当然,我们可以仅仅使用
grid-area
实现上面需要grid-template-area
和grid-area
才能实现的效果。如下grid-area
简写的语法是:grid-area: horizontal line to start at / vertical line to start at / horizontal line to end at / vertical line to end at;
使用函数repeat简化
使用
grid-template-columns
和grid-template-rows
定义栅格的行列结构。上面我们是一个个定义的。我们也可以使用repeat()
函数简化操作。比如分为四列,第一列和第二列是
100px
,第三列为1fr
,最后一列是2fr
。函数minmax限定最小最大值
在我们布局空间有限的情况下,我们需要对布局的元素设置其最小值和最大值,通过
minmax()
函数可以轻松做到。上面的属性在实际的开发中已经够用。如果你还想了解其他的属性等,你可以点击下面的参考链接进行学习。grid的兼容性还是杠杆的,除了
Opera Mini
和Baidu Browser
不支持外,其他的都支持~更多的内容可以前往JIMMY BLOG
参考
http://cssgridgarden.com/
https://www.freecodecamp.org/learn/responsive-web-design/css-grid/
The text was updated successfully, but these errors were encountered: