我们直接进入代码,如下所示,先写些标签,源码在这个链接里面:https://codepen.io/Shadid/pen/zYqNvgv
在上面,我们创建了一个header
、两个aside
和一个footer
元素,并将它们包装在一个container
元素中。我们为容器元素中的所有元素添加背景色和字体大小。
.container > * {
background: aquamarine;
font-size: 30px;
}
运行的网页如下:
现在我们添加一些网格属性:
.container {
display: grid;
grid-gap: 5px;
grid-template-areas:
“header”
“aside-1”
“aside-2”
“section”
“footer”
}
/* Assign grid areas to elements */
header {
grid-area: header;
}
aside:nth-of-type(1) {
grid-area: aside-1;
}
aside:nth-of-type(2) {
grid-area: aside-2;
}
section {
grid-area: section;
}
footer {
grid-area: footer;
}
首先,我们定义了display:grid
,它将启用网格布局,然后我们使用grid-gap
在网格元素中增加间隙。
接下来,我们为每个html元素分配了一个网格区域名称。在container 类中,我们可以使用
grid-template-areas`属性定 义html 模板的外观,注意网格模板区域是如何排列的。
grid-template-areas:
“header”
“aside-1”
“aside-2”
“section”
“footer”
元素的顺序与 dom 结构不同。但是,最终按我们网络区域的顺序来展示。
下一步是使我们的页面具有响应性。我们希望在更大的屏幕上使用不同的布局。CSS网格使得处理媒体查询和创建响应式布局变得非常容易。看下面代码:
@media (min-width: 670px) {
.container {
grid-template-areas:
“header header header”
“aside-1 section aside-2”
“footer footer footer”
}
}
我们所要做的就是在媒体查询中重新排序网格模板区域。
如何使用 CSS 网格来组织列和? 先从下面的代码开始:
添加一些基本的 css
.container {
display: grid;
height: 100vh;
grid-gap: 10px;
}
.item {
background: lightcoral;
}
我们为上面的 dom 结构使用了网格布局,并使用grid-gap
增加了风格之间的间距。 现在,我们使用grid-template-columns
属性来添加一些列。
.container {
display: grid;
height: 100vh;
grid-gap: 10px;
grid-template-columns: 100px 200px auto auto;
}
就像这样,我们使用了列。 我们指定第一列为100px
,第二列为200px
。 由于我们在第3
列和第4
列中应用了auto
,因此剩余的屏幕长度将在其中分成两半。
可以看到现在页面中有一个空白。 如果我想将第六列
移至第三列
和第四列
怎么办? 为此,我们可以使用grid-column-start
和grid-column-end
属性。
.item:nth-of-type(6) {
grid-column-start: 3;
grid-column-end: 5;
}
注意,我们使用grid-column-end: 5
,值5
指向列线。 第四列在网格的第五行结束。 grid-column-start
和grid-column-end
值是指网格线。
如果你觉得网格线的值让人困惑,你也可以使用span
,下面的效果与上面一样:
.item:nth-of-type(6) {
grid-column-start: 3;
grid-column-end: span 2;
}
对于span 2
,指定div
占用网格中的两个插槽。 现在,假设要扩展第二列
填充下面的空白区域。 我们也可以通过grid-column-start
属性轻松地做到这一点。
.item:nth-of-type(2) {
grid-row-start: span 2;
}
我们使用span
和grid-row-start
来指定我们想要占据两个插槽。
如上所见,我们已经能够使用少量的CSS网格属性来构建非常复杂的布局。
现在来看看grid-templates
,在本节中,我们将讨论如何为不同的屏幕大小创建不同的布局。
首先,还是先来一段 dom 结构:
接着,添加一些样式:
``
.container {
display: grid;
height: 100vh;
grid-gap: 10px;
}
.container > * {
background: coral;
display: flex;
justify-content: center;
align-items: center;
}`
``
我们给元素添加了背景色。从上面的代码中可以看到,我们也使用了flex
属性。我们可以将flex
和grid
结合在一起。在这个特殊的例子中,我们使用flex
属性中心对齐内容。
对于移动端,我们希望section
在header
下面,right
在 section
下面,我们可以使用网格区域来完成。首先,我们定义网格区域:
.container {
display: grid;
height: 100vh;
grid-gap: 10px;
grid-template-areas:
“header”
“section”
“right”
“left”
“footer”
}
aside:nth-of-type(1) {
grid-area: left;
}
aside:nth-of-type(2) {
grid-area: right;
}
section {
grid-area: section;
}
footer {
grid-area: footer;
}
header {
grid-area: header;
}
在 grid-template-areas
中可以看到,我们先有header
,然后是section
,然后是right
,最后是left
。此外,我们希望我们的section
比 left
和 right
都大点。为了实现这一点,我们可以使用rid-template-rows
属性 😋
.container {
display: grid;
height: 100vh;
grid-gap: 10px;
grid-template-areas:
“header”
“section”
“right”
“left”
“footer”;
grid-template-rows: 1fr 6fr 2fr 2fr 1fr;
}
我们可以根据需要设置移动端的视图,接下我们使用媒体查询来适配一下大屏幕:
@media (min-width: 500px) {
.container {
grid-template-areas:
“header header header”
“left section right”
“footer footer right”;
grid-template-rows: 1fr 6fr 1fr;
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-T7zBvP3s-1715083789877)]
[外链图片转存中…(img-KfZk3O1l-1715083789878)]
[外链图片转存中…(img-E8eVtIRZ-1715083789878)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!