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? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in 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: