2016-07-19 3 views
1

どのように私は次のコードで水平に整列するラベルを取得することができますラベルのアライメント

div { 
 
    display: table; 
 
    width: 200px; 
 
} 
 
div input, 
 
div label { 
 
    display: table-cell; 
 
}
<div> 
 
    <input type="checkbox"> 
 
    <label>This is a label.</label> 
 
</div> 
 
<div> 
 
    <input type="checkbox"> 
 
    <label>This is a label with a longer text.</label> 
 
</div>

参照:https://jsfiddle.net/a7t3qnbg/1/

編集:より明確にすると:私は固定幅を変更することはできませんし、ラベルをチェックボックスと同じ行で開始し、横線(改行後も)に並べるようにします。

答えて

1

div labelwidth: 100%を追加します。

div { 
 
    display: table; 
 
    width: 200px; 
 
} 
 
div input, 
 
div label { 
 
    display: table-cell; 
 
} 
 
div label { 
 
    width: 100%; 
 
}
<div> 
 
    <input type="checkbox"> 
 
    <label>This is a label.</label> 
 
</div> 
 
<div> 
 
    <input type="checkbox"> 
 
    <label>This is a label with a longer text.</label> 
 
</div>

+0

ありがとう、簡単な解決策。あなたはなぜそれが幅を設定せずに動作しない私に説明することはできますか? – DrRumpus

+1

'width'を設定しないと、ブラウザは行内のすべてのテーブルセルの間に 'スペア'スペースを割り当てます。最初の行にはスペアスペースがあり、ブラウザは入力を含むテーブルセルにビットを割り当てました。 注:あなたの場合、それぞれの 'div'は独自の' table'を作成します。**は**テーブル行ではありません。実際にテーブルレイアウトを取得しようとしている場合は、 'table'レイアウトのラッパーコンテナが必要です。代わりに' div'sを 'display:table-row'に変更してください。 'width:100%'ルール。 – searlea

1

あなたは、ディスプレイを使用することができますインライン

div { 
    display: table; 
    width: 200px; 
} 
div input, div label { 
    display: inline; 
} 
+0

それは改行の後に同じアライメント上の第2のラベルを持つことは可能ですか?インラインのチェックボックスの下にあります。 – DrRumpus

+0

これは役立ちます(https:// jsfiddle。net/a7t3qnbg/3 /) div入力{ 表示:インラインブロック; vertical-align:top; } divラベル{ 幅:200px; display:インラインブロック; } – Imphusius

+0

ラベルの幅を設定していただきありがとうございます。インラインブロックプロパティは必要ないように見えます。 – DrRumpus

2

は、これは簡単にインラインブロックを使用して達成することができます。

https://jsfiddle.net/a7t3qnbg/2/

div { 
    width: auto; 
} 
div input, div label { 
    display: inline-block; 
} 

を使用すると、表示を続ける「する必要がある」場合はお知らせ:あなたのレイアウトとしてのテーブル。

+0

この場合、200pxの固定値が必要です。また、両方のラベルをチェックボックスと同じ行から開始して、改行後も水平に整列させる必要があります。 – DrRumpus

+0

ラベルのテキストが大きすぎると、固定幅200pxでオーバーフローの問題が発生します。 – Lowkase

1

div { 
 
width: auto; 
 
} 
 
div input, div label { 
 
display: inline-block; 
 
}
<div> 
 
    <input type="checkbox"> 
 
    <label>This is a label.</label> 
 
</div> 
 
<div> 
 
    <input type="checkbox"> 
 
    <label>This is a label with a longer text.</label> 
 
</div>

+0

この場合、固定幅200pxが必要です。あなたのソリューションでは、2番目のラベルはチェックボックスと同じ行にありません。 – DrRumpus

0

このような何か?

div { 
 
    display: table; 
 
    width: 300px; 
 
} 
 
div input, 
 
div label { 
 
    display: inline; 
 
}
<div> 
 
    <input type="checkbox"> 
 
    <label>This is a label.</label> 
 
</div> 
 
<div> 
 
    <input type="checkbox"> 
 
    <label>This is a label with a longer text.</label> 
 
</div>

+0

この場合、固定幅200pxが必要です。あなたのソリューションでは、ラベルは最初の行に揃えられますが、改行後はチェックボックスの下に続きます。 – DrRumpus

0

あなたはCSSにラベルを追加し、あなたが

たい幅を調整することができます

div { 
 
    display: table; 
 
} 
 
div input, 
 
div label { 
 
    display: table-cell; 
 
} 
 

 
label { 
 
    display: inline-block; 
 
    width: 300px; 
 
    text-align: left; 
 
}
<div> 
 
    <input type="checkbox"> 
 
    <label>This is a label.</label> 
 
</div> 
 
<div> 
 
    <input type="checkbox"> 
 
    <label>This is a label with a longer text.</label> 
 
</div>

1

あなたはこれらのラベルを整列するために、テーブルのプロパティを使用する必要はありません。あなたがテーブルとして表示を使用している場合でも、それぞれの内側のdivがあなただけにも(入力のデフォルトの表示を)labelためinline-blockを使用vertical-alignを追加することができ、テーブルの行

+0

これをチェックしてください[link](https://jsfiddle.net/7g7je3hc/) – user2427829

+0

ありがとう、これも動作します。 – DrRumpus

1

することができます。 Inputと表示されず、table-cellと表示されず、特定のプロパティを継承しません。

white-spaceを使用して、両方の要素を同じ行に保つことができます。

div { 
 
    width: 200px; 
 
    white-space:nowrap; 
 
} 
 
div input, 
 
div label { 
 
    vertical-align:middle;/* or top or any other value that suits your needs */ 
 
    display:inline-block;/* usefull to label */ 
 
    white-space:normal;/* reset usefull to label */ 
 
}
<div> 
 
    <input type="checkbox"> 
 
    <label>This is a label.</label> 
 
</div> 
 
<div> 
 
    <input type="checkbox"> 
 
    <label>This is a label with a longer text.</label> 
 
</div>

+1

ありがとう、これは非常にうまくいきます。私の具体的なケースでは、入力の上に垂直方向の整列を設定する必要がありました。 searleaのソリューションはもう少しシンプルだと思われます。 – DrRumpus

関連する問題