css 网格布局
在本教程中,我们将探讨如何使用CSS Grid构建几个不同的Web表单。 对于每个示例,我们将首先使用浮点数,然后查看如何使用CSS Grid进行相同的布局。
如果您以前对CSS网格没有任何了解,请阅读我们的初学者系列文章了解CSS网格布局模块 。 让我们开始!
1.基本注册表格
在此布局中,我们将表单分为两列,以便我们可以在左侧显示标签,在右侧显示输入字段。
使用“传统” CSS
这种布局的传统方法可能是使用浮点数为我们提供列。 注意,我们没有form元素的包装器。 我们将直接设置标签和输入的样式。
form {
overflow: hidden;
}
label {
float: left;
width: 200px;
padding-right: 24px;
}
input {
float: left;
width: calc(100% - 200px);
}
button {
float: right;
width: calc(100% - 200px);
}
您会注意到我们在这里使用calc()
,这使我们能够将左列固定为200px宽,而右列保持流畅。
这是结果,还有一些其他的美学样式:
使用CSS网格布局
使用“网格”时,我们的目标是定义两个列,然后将每个元素放在其所需的列中。
第一步是在父元素form
上定义网格:
form {
display: grid;
}
然后,我们需要使用grid-template-columns
划分该网grid-template-columns
:
form {
display: grid;
grid-template-columns: 200px 1fr;
}
根据上述CSS,第一列的固定宽度为200px
,第二列将占用剩余可用空间的1fr
(“一个分数”)。
现在,我们需要定义标签和输入的位置。 要做到这一点,我们将使用grid-column
与网格线具体数值:
基于这些网格线,我们将对标签,输入和按钮应用以下规则:
label {
grid-column: 1 / 2;
}
input,
button {
grid-column: 2 / 3;
}
标签将出现在从第1行开始到第2行结束的列中。输入和按钮将放置在从第2行开始到第3行结束的列中。
最后,我们使用grid-gap
在行和列之间添加16px的装订线:
form {
display: grid;
grid-template-columns: 200px 1fr;
grid-gap: 16px;
}
2.联络表格
在此布局中,我们要实现以下目标:
- 列的高度应相等,以便侧边栏和表单包装器的高度相同。
- 我们希望将表单(右侧)进一步分为两列,更改按钮以使其充满整个宽度。
完全可以使用浮点数来构建此布局。 但是,我们将需要为左列设置一个min-height
,否则它将不会假定完整高度。 还有其他“传统”方法可以解决此问题,但没有一个是特别漂亮的方法。
使用“传统” CSS
总结一下,对于浮点数,我们需要:
- 将
min-height
添加到左列。 - 漂浮触点并形成包装纸。
- 添加一个clearfix或
overflow: hidden;
保持包装纸的高度。 - 浮动表单元素并在它们之间添加边距。
- 重置
textarea
浮动并发送按钮,然后使其充满整个宽度。
那是很多工作,对吗?
更好的方法是使用Flexbox或Grid解决此问题。 在这种情况下,由于我们在水平和垂直方向上排列元素,因此我更喜欢使用Grid。
使用CSS网格布局
首先,在包装器上声明一个网格并将其分为两列。
.wrapper {
display: grid;
grid-template-columns: 1fr 2fr;
}
我们的表单元素也需要声明为网格:
form {
display: grid;
grid-template-columns: 1fr 1fr;
grid-gap: 20px;
}
应用上述规则后,我们将获得以下信息:
我们需要通过从网格线1到网格线3拉伸最后两个元素来填充整个宽度。
.full-width {
grid-column: 1 / 3;
}
3.个人资料表格
现在是时候进行最后一次表单布局了。 在此示例中,我们包含了供用户上传其个人资料照片的输入。 它应该放在右上角。
使用“传统” CSS
我们将使用以下标记进行构建:
简要介绍传统方法,我们可以通过以下步骤实现布局:
- 添加
position: relative;
到表单元素。 - 将文件输入绝对定位在右上角。
- 将填充添加到表单,其宽度与文件输入的宽度相同。
- 指定文件输入的固定宽度。
使用CSS网格布局
我们不要过多地谈论传统方法。 使用Grid,我们将表单分为两列,如下所示:
第一列将占用第二列水平空间的两倍,我们将使用fr
单位实现这一点:
form {
display: grid;
grid-template-columns: 2fr 1fr;
grid-gap: 20px;
}
建立网格后,我们需要在网格线1和网格线2之间放置表格元素:
form p {
grid-column: 1 / 2;
}
下一步是将输入文件放在第二列中。 为了做到这一点,我们将其放置在网格线2和网格线3之间。垂直移动,使它跨越从网格线1到网格线2的行。
.input-file-wrapper {
grid-column: 2 / 3;
grid-row: 1 / 2;
}
结论
做得好! 我们已经介绍了构建Web表单时使用CSS Grid的几个不同示例。 您会注意到,与使用传统的布局技术相比,通过编写几行代码,我们节省了很多时间和精力。 由于CSS @supports
可以帮助我们将特定功能用作增强功能,因此您可以从今天开始使用上述所有示例。
您对改善这些布局有什么建议吗? 在下面的评论中让我知道!
翻译自: https://webdesign.tutsplus.com/tutorials/how-to-build-web-form-layouts-with-css-grid--cms-28776
css 网格布局