CSS Grid 是一种新的布局方式,可以方便地实现复杂的布局效果。但在学习 CSS Grid 之前,我们需要了解一些前置知识,包括浏览器支持情况和常用属性。
浏览器支持情况
CSS Grid 是一种比较新的技术,因此浏览器的支持情况并不完善。以下是一些常见浏览器对 CSS Grid 的支持情况:
- Chrome:支持 CSS Grid,但需要在 Chrome 57 及以上版本中才能使用。
- Firefox:支持 CSS Grid,但需要在 Firefox 52 及以上版本中才能使用。
- Safari:从 Safari 10.1 开始支持 CSS Grid。
- Edge:从 Edge 16 开始支持 CSS Grid。
- IE:不支持 CSS Grid。
因此,在使用 CSS Grid 时,我们需要考虑浏览器的兼容性问题,尤其是在需要支持 IE 的情况下。
常用属性
CSS Grid 提供了许多属性,用于定义网格布局。以下是一些常用的属性:
grid-template-rows 和 grid-template-columns
用于定义网格的行和列的大小和数量。可以使用长度值、百分比、fr(用于分配剩余空间)等单位来定义大小,使用 repeat() 函数来定义数量。
.grid-container {
display: grid;
grid-template-rows: 100px 1fr 100px; /* 定义三行,第一行高度为 100px,第二行占据剩余空间,第三行高度为 100px */
grid-template-columns: repeat(3, 1fr); /* 定义三列,每列占据剩余空间 */
}grid-gap
用于定义网格之间的间距,可以使用长度值或百分比来定义。
.grid-container {
display: grid;
grid-gap: 20px; /* 定义网格之间的间距为 20px */
}grid-auto-rows 和 grid-auto-columns
用于定义未在 grid-template-rows 和 grid-template-columns 中定义的网格的行和列的大小。
.grid-container {
display: grid;
grid-auto-rows: 100px; /* 定义未在 grid-template-rows 中定义的行的高度为 100px */
grid-auto-columns: 1fr; /* 定义未在 grid-template-columns 中定义的列占据剩余空间 */
}grid-template-areas
用于定义网格的区域,可以使用字符串来定义每个区域的名称。可以使用 . 表示空白区域。
.grid-container {
display: grid;
grid-template-areas:
"header header header"
"main main sidebar"
"footer footer footer";
}grid-area
用于定义一个网格项占据的区域,可以使用 grid-template-areas 中定义的字符串来定义区域的名称。
.grid-item {
grid-area: main;
}示例代码
以下是一个简单的网格布局示例代码:
<div class="grid-container"> <div class="grid-item header">Header</div> <div class="grid-item main">Main</div> <div class="grid-item sidebar">Sidebar</div> <div class="grid-item footer">Footer</div> </div>
// www.javascriptcn.com code example
.grid-container {
display: grid;
grid-template-rows: 100px 1fr 100px;
grid-template-columns: repeat(3, 1fr);
grid-gap: 20px;
grid-template-areas:
"header header header"
"main main sidebar"
"footer footer footer";
}
.grid-item {
padding: 20px;
background-color: #eee;
}
.header {
grid-area: header;
}
.main {
grid-area: main;
}
.sidebar {
grid-area: sidebar;
}
.footer {
grid-area: footer;
}以上代码定义了一个包含头部、主体、侧边栏和底部的网格布局。头部和底部的高度为 100px,主体占据剩余空间,侧边栏占据 1/3 的剩余空间,网格之间的间距为 20px。每个网格项的背景颜色为 #eee。头部占据第一行的三个网格,主体占据第二行的两个网格,侧边栏占据第二行的第三个网格,底部占据第三行的三个网格。
通过这个示例,我们可以更好地理解 CSS Grid 的使用方法,并掌握其常用属性和浏览器支持情况。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d2a28ca941bf71345106c2