ラベルと対応するフィールド (入力要素またはより複雑な要素) を持つ一連のフォームを作成しています。
ラベルは左側に、フィールドは右側に表示されます。特定のフォームのラベルはすべて、フィールドがすべて垂直に並ぶように特定の幅にする必要があります。
これを達成するには2つの方法があります(おそらくそれ以上?):
Rows : 各ラベルと各フィールドを左にフロートします。各ラベルとフィールドをフィールド行の div/コンテナーに入れます。ラベルの幅を特定の数値に設定します。このアプローチでは、異なるフォームのラベルは、最も長いラベルのテキストの幅に依存するため、異なる幅になります。
列: すべてのラベルを 1 つの div/コンテナーに配置して左にフローティングし、すべてのフィールドを別の左にフローティング コンテナーに配置し、左パディングを設定します。この方法では、列レイアウトと左パディングがすべてのフィールドの垂直方向の整列を均一に処理するため、ラベルとラベル コンテナーでさえ幅を設定する必要はありません。
したがって、アプローチ #2 は実装が簡単に思えますが (幅を常に設定する必要がないため)、ラベルとそのラベルに関連付けられたフィールドがグループ化されていないため、オブジェクト指向性も低いと思います。 、アプローチ#1にあるように。また、フォームを動的に構築する場合、アプローチ #2 は のような関数ではうまく機能しませんaddRow(label, field)
。これは、1 つのフィールド行要素を作成/追加するだけでなく、ラベルとフィールド コンテナーについて知る必要があるためです。
どちらのアプローチが良いと思いますか? これら2つよりも優れた別のアプローチはありますか?