grid布局是一种二维布局方式,可以将元素按行和列进行布局
grid布局的语法:
display: grid; 启用网格布局
grid-template-columns: repeat(3, 100px); 定义3列,每列宽度100px
grid-template-rows: repeat(3, 100px); 定义3行,每行高度100px
gap: 10px; 设置网格间距为10px
grid-template-columns: 100px 100px 100px;
grid-template-columns: 1fr 1fr 1fr; fr fraction的缩写, 意为'片段'
grid-template-columns: 50% 50%;
grid-template-columns: 100px auto 100px; 由浏览器自己决定长度
grid-template-columns: 1fr 1fr minmax(100px, 1fr); 表示长度就在这个范围之中
grid-template-columns: repeat(3,100px); 3列, 列宽100px
grid-template-columns: repeat(3, 33.33%); 简单重复的值
grid-template-columns: repeat(3,1fr); fr fraction的缩写, 意为'片段'
grid-template-columns: repeat(auto-fill, 100px); auto-fill 表示自动填充
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
grid布局可以设置行间距、列间距、网格间距等
设置行间距
语法:
row-gap:
设置列间距
语法:
column-gap:
设置网格间距
语法:
gap: <length> 网格间距(grid-gap的简写形式,同时设置行间距和列间距)
说明:gap属性是grid-gap的简写形式,功能完全相同。CSS Grid布局最初使用grid-gap,后来为了与其他布局(如Flexbox)统一,推荐使用gap属性。两者在现代浏览器中均可使用。
grid布局可以合并单元格,实现合并行、合并列等效果
定义网格区域
多个单元格合并成一个区域的写法:
grid-template-areas:
'a a a'
'b b b'
'c c c';
说明:grid-template-areas属性用于定义网格区域,每个区域用一个名称表示。区域名称可以是任意字符串,但是建议使用有意义的名称,例如"header"、"main"、"footer"等。
示例:
grid-row属性用于指定网格项跨越的行范围
语法:grid-row: start-line / end-line;
语法:grid-column: start-line / end-line;
grid-row: 2 / 3; /* 表示从第2行线开始,到第3行线结束,即占据第2行 */
grid-row: 1 / 3; /* 表示从第1行线开始,到第3行线结束,即跨越第1行和第2行 */
grid-row: 2 / span 2; /* 表示从第2行线开始,跨越2行 */
grid-column: 2 / 3; /* 表示从第2列线开始,到第3列线结束,即占据第2列 */
grid-column: 1 / 4; /* 表示从第1列线开始,到第4列线结束,即跨越第1、2、3列 */
grid-column: 2 / span 2; /* 表示从第2列线开始,跨越2列 */