ラベルとテキストエリアを揃えるにはどうすればよいですか?


83

私のコードは次のようになります:

             XXXXX
             XXXXX
Description: XXXXX

が欲しいです:

             XXXXX
Description: XXXXX
             XXXXX

「説明」は複数行にまたがることがあります。

コード:

<p class="DataForm">
    <label>Blah blah blah Description:</label>
    <asp:TextBox ID="txtBlahblahblahDescription"
                 runat="server"
                 TextMode="MultiLine"
                 Rows="8"
                 Columns="50"></asp:TextBox><br/>
</p>

CSS:

.DataForm {
}
.DataForm label {
    display: inline-block;
    font-size: small;
    margin-left: 5px;
    width: 5%;
    min-width: 60px;
}
.DataForm input {
    margin-right: 9px;
    display: inline-block;
    width: 21%;
    min-width: 30px;
}

説明ラベルを中央に配置しますか?
Peter Stuifzand 2009

3
テーブルを使用していますか、それともインラインですか、ラベルを左にフローティングしていますか?HTMLとCSSを投稿して、コードがどのように見えるかを確認できますか?コードに適合しない可能性のあるスタイルやレイアウトを推奨するのは難しいです。
Andy E

はい、可能であれば、説明ラベルを垂直方向の中央に配置する必要があります。。。。コードを添付します
NibblyPig 2009

回答:


110

両方をいくつかのコンテナ要素に配置してから、その要素に配置を適用する必要があります。

例えば:

.formfield * {
  vertical-align: middle;
}
<p class="formfield">
  <label for="textarea">Label for textarea</label>
  <textarea id="textarea" rows="5">Textarea</textarea>
</p>


うーん、それをインラインスタイルとしてpタグに付けてみましたが、
うまくいきませんでした

1
受け継がれませんか?とにかく試してみましたが、うまく
いき

1
私の悪い点は、データフォーム*で機能しますが、中央揃えの方法は奇妙ですが、機能するので、感謝します
NibblyPig 2009

10
より良い解決策はvertical-align: middle;、上記の各ルール.DataForm labelを入力すること.DataForm textareaです。*セレクターを使用すると、副作用が発生する場合があります。
DisgruntledGoat

2
あなたは正しいかもしれませんが、vertical-align: middle何かをするなら、通常はそれを完全なブロックに適用するでしょう。
BalusC 2009

19

textareaをラベルでラップし、textareaスタイルをに設定するだけです。

vertical-align: middle;

これがページ上のすべてのテキストエリアの魔法です:)

<style>
    label textarea{
        vertical-align: middle;
    }
</style>

<label>Blah blah blah Description: <textarea>dura bura</textarea></label>

2
これは完璧に機能しました。選択された答えはしませんでした。ありがとう!
eaglei22 2015

4
  1. heightラベルのをheight複数行のテキストボックスと同じに設定します。
  2. .alignTop{vertical-align: middle;}ラベルコントロールのcssClassを追加します。

    <p>
        <asp:Label ID="DescriptionLabel" runat="server" Text="Description: " Width="70px" Height="200px" CssClass="alignTop"></asp:Label>
        <asp:Textbox id="DescriptionTextbox" runat="server" Width="400px" Height="200px" TextMode="MultiLine"></asp:Textbox>
        <asp:RequiredFieldValidator id="DescriptionRequiredFieldValidator" runat="server" ForeColor="Red"
        ControlToValidate="DescriptionTextbox" ErrorMessage="Description is a required field.">    
    </asp:RequiredFieldValidator>
    


3

vertical-align:middleCSSで使用します。

<table>
    <tr>
       <td style="vertical-align:middle">Description:</td>
       <td><textarea></textarea></td>
    </tr>
</table>

可能であれば、テーブルのないエレガントなソリューションを探しています。
nibblyPig 2009

4
あなたはあなたの質問にそのようなものを書くべきです。
Peter Stuifzand 2009

11
最近、フォームにテーブルを使用しているのは誰ですか?
BalusC 2009

6
申し訳ありませんが、それは明らかだと思いました:(
NibblyPig 2009

4
テーブルはフォームに対して完全に有効です。これは、ある一つのデータ行(または列)とはいえ、表データ。
DisgruntledGoat

3

ラベルをテキスト領域に合わせるのではなく、テキスト領域ボックスをラベルに合わせます。

label {
    width: 180px;
    display: inline-block;
}

textarea{
    vertical-align: middle;
}

<label for="myfield">Label text</label><textarea id="myfield" rows="5" cols="30"></textarea>


0

td要素に高さを設定してみてください。

vertical-align: middle; 

スタイルが適用される要素が親要素内に配置されることを意味します。tdの高さは、内部のテキストと同じくらい高くすることができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.