有没有更好的方法来实现这种布局?
Is there a better way to achieve this layout?
我一直在绞尽脑汁试图实现一开始看起来非常简单的布局,但我仍然离得很远。基本上是水平居中 header 和下面的表格。我遇到问题的部分是将输入与 header.
垂直对齐
下面是我的解决方案和代码的图像
.main {
display: grid;
grid-gap: 1.5rem;
align-items: center;
border-top: 9px solid #0993B8;
grid-template-columns: repeat(3, 1fr);
grid-template-areas:
"title title title"
"labelCid inputCid ."
"labelPasswd inputPasswd ."
". inputSubmit ."
}
.main h3 {
text-align: center;
grid-area: title;
}
label[for="cid"] {
justify-self: end;
grid-area: labelCid;
}
label[for="password"] {
justify-self: end;
grid-area: labelPasswd;
}
input[id="cid"] {
grid-area: inputCid;
}
input[id="password"] {
grid-area: inputPasswd;
}
input[type="submit"] {
justify-self: center;
grid-area: inputSubmit;
}
<div class="main">
<h3>Customer Portal Login</h3>
<label for="cid">Customer ID</label>
<label for="password">Password</label>
<form id="loginForm"></form>
<input form="loginForm" id="cid" name="cid" type="text" required>
<input form="loginForm" id="password" name="password" type="password" required>
<input type="submit" value="LOG IN">
</div>
这个问题是我在网格中包含了 header,我无法单独设置表单样式以添加填充和 background-color。有更好的方法吗?
为什么不将所有必需的元素都放在表单中,然后将 display:grid
应用到 that 进行布局?
.main {
width: 90%;
margin: auto;
}
form {
display: grid;
background: grey;
grid-gap: 1.5rem;
padding-bottom: 1.5rem;
;
align-items: center;
border-top: 9px solid #0993B8;
grid-template-columns: repeat(3, 1fr);
grid-template-areas: "title title title" "labelCid inputCid ." "labelPasswd inputPasswd ." ". inputSubmit ."
}
.main h3 {
text-align: center;
grid-area: title;
}
label[for="cid"] {
justify-self: end;
grid-area: labelCid;
}
label[for="password"] {
justify-self: end;
grid-area: labelPasswd;
}
input[id="cid"] {
grid-area: inputCid;
}
input[id="password"] {
grid-area: inputPasswd;
}
input[type="submit"] {
justify-self: center;
grid-area: inputSubmit;
}
<div class="main">
<h3>Customer Portal Login</h3>
<form id="loginForm">
<label for="cid">Customer ID</label>
<label for="password">Password</label>
<input form="loginForm" id="cid" name="cid" type="text" required>
<input form="loginForm" id="password" name="password" type="password" required>
<input type="submit" value="LOG IN">
</form>
</div>
我一直在绞尽脑汁试图实现一开始看起来非常简单的布局,但我仍然离得很远。基本上是水平居中 header 和下面的表格。我遇到问题的部分是将输入与 header.
垂直对齐下面是我的解决方案和代码的图像
.main {
display: grid;
grid-gap: 1.5rem;
align-items: center;
border-top: 9px solid #0993B8;
grid-template-columns: repeat(3, 1fr);
grid-template-areas:
"title title title"
"labelCid inputCid ."
"labelPasswd inputPasswd ."
". inputSubmit ."
}
.main h3 {
text-align: center;
grid-area: title;
}
label[for="cid"] {
justify-self: end;
grid-area: labelCid;
}
label[for="password"] {
justify-self: end;
grid-area: labelPasswd;
}
input[id="cid"] {
grid-area: inputCid;
}
input[id="password"] {
grid-area: inputPasswd;
}
input[type="submit"] {
justify-self: center;
grid-area: inputSubmit;
}
<div class="main">
<h3>Customer Portal Login</h3>
<label for="cid">Customer ID</label>
<label for="password">Password</label>
<form id="loginForm"></form>
<input form="loginForm" id="cid" name="cid" type="text" required>
<input form="loginForm" id="password" name="password" type="password" required>
<input type="submit" value="LOG IN">
</div>
这个问题是我在网格中包含了 header,我无法单独设置表单样式以添加填充和 background-color。有更好的方法吗?
为什么不将所有必需的元素都放在表单中,然后将 display:grid
应用到 that 进行布局?
.main {
width: 90%;
margin: auto;
}
form {
display: grid;
background: grey;
grid-gap: 1.5rem;
padding-bottom: 1.5rem;
;
align-items: center;
border-top: 9px solid #0993B8;
grid-template-columns: repeat(3, 1fr);
grid-template-areas: "title title title" "labelCid inputCid ." "labelPasswd inputPasswd ." ". inputSubmit ."
}
.main h3 {
text-align: center;
grid-area: title;
}
label[for="cid"] {
justify-self: end;
grid-area: labelCid;
}
label[for="password"] {
justify-self: end;
grid-area: labelPasswd;
}
input[id="cid"] {
grid-area: inputCid;
}
input[id="password"] {
grid-area: inputPasswd;
}
input[type="submit"] {
justify-self: center;
grid-area: inputSubmit;
}
<div class="main">
<h3>Customer Portal Login</h3>
<form id="loginForm">
<label for="cid">Customer ID</label>
<label for="password">Password</label>
<input form="loginForm" id="cid" name="cid" type="text" required>
<input form="loginForm" id="password" name="password" type="password" required>
<input type="submit" value="LOG IN">
</form>
</div>