1
* {
box-sizing: border-box;
}
.parent {
display: grid;
/* grid-template-areas:
"contact comments"
"... button";*/
grid-template-rows: 12em;
grid-template-columns: 12em;
grid-gap: .8em;
background: yellow; // for debugging
padding: 0;
}
.lp {
// label properties
padding: 0.4em; //1.1em
background-color: cyan;
}
.ip {
// input properties
padding: 0.4em; //1.1em
margin-bottom: 1.5em;
background-color: lightyellow;
}
// maps areas to markup elements
.lnam { grid-area: 1/1; } // label Name area -> label elem
.inam { grid-area: 2/1; } // input Name area -> input elem
.leml { grid-area: 3/1; } // ditto for Email
.ieml { grid-area: 4/1; }
.ltel { grid-area: 5/1; } // and Telephone
.itel { grid-area: 6/1; }
<form class="parent">
<div>
<label class="lp lnam" for="name">Name</label>
<input class="ip inam" type="text" id="name" required>
<label class="lp leml" for="email">Email</label>
<input class="ip ieml" type="text" id="email" required>
<label class="lp ltel" for="tph">Phone</label>
<input class="ip itel" type="text" id="tph" required>
</div>
</form>
をしかし側label
sが仕事を得ることができませんでした。 input
要素はラベルの下に配置されますが、同じ行のlabel
に従う必要があります。 以下のコードは、同じマークアップで上で動作しているコードとほぼ同じです。 相違:grid-area
仕様とgrid-template-columns
(側label
のための2つの列)
* {
box-sizing: border-box;
}
.parent {
display: grid;
/* grid-template-areas:
"contact comments"
"... button";*/
grid-template-rows: 4em;
grid-template-columns: 150px 200px;
grid-gap: .8em;
background: yellow;
padding: 0;
}
.lp {
padding: 0.4em; //1.1em
//border: 1px solid blue;
background-color: cyan;
}
.ip {
padding: 0.4em; //1.1em
//border: 1px solid blue;
margin-bottom: 1.5em;
background-color: lightgreen;
}
.lnam {
grid-area: 1/1 /2/2;
} // area -> element
.inam {
grid-area: 1/2 /2/3;
}
/* .leml { grid-area: 3/11; }
.ieml { grid-area: 4/1; }
.ltel { grid-area: 5/1; }
.itel { grid-area: 6/1; } */
<form class="parent">
<div>
<label class="lp lnam" for="name">Name</label>
<input class="ip inam" type="text" id="name" required>
<!--<label class="lp leml" for="email">Email</label>
<input class="ip ieml" type="text" id="email" required>
<label class="lp ltel" for="tph">Phone</label>
<input class="ip itel" type="text" id="tph" required>-->
</div>
</form>
Iは、FirefoxとChromeの両方を使用し、同一の結果を得ました。 私は何が間違っていますか?
はい、フォームの開始タグ下DIV要素は、トラブルです。セレクタの変更を提案すると、問題が解決します。 divタグを削除するか、class specをformタグからdivタグに移動することも、サイドラベルの問題を解決します。グリッド領域の設定を削除すると、ほとんど解決されません。ニース! 入力要素の上にトップラベルを設定するための短所もありますか?どのように知りたいですか? – resander
@resander最後の質問を正しく理解していれば、 'grid-template-columns'を' grid-template-columns:1fr'に変更できるように、ただ一つのカラムが必要です。 –
絶対に正しい。私はグリッドとCSSフレックスボックスに新しいです。私は昨日の自動フローについてのドキュメントを読んだが、それの妥当性を見なかった。今、私はそれが規則的な形を作るのに非常に便利だと分かります。 – resander