如何对齐标签和文本区域?


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

3
您正在使用表格还是内联表格,是否向左浮动标签等?您可以发布HTML和CSS以便我们知道您的代码是什么样吗?很难推荐可能不适合您的代码的样式和布局。
安迪E

是的,如果可能,说明标签需要垂直居中。。。。我将附上我的代码
NibblyPig,2009年

Answers:


110

您需要将它们都放在某个容器元素中,然后在其上应用对齐方式。

例如:

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


嗯,我尝试将其作为内联样式添加到我的p标签上,但没有成功
NibblyPig,2009年

1
它不会被继承吗?无论如何,我还是尝试了它,但是没有用:(
NibblyPig

1
我的坏事是,它确实适用于数据格式*,尽管它居中的方式有​​点奇怪,但它可以工作,所以谢谢
NibblyPig 2009年

10
更好的解决方案是将vertical-align: middle;您的每个规则放在.DataForm label和中.DataForm textarea。使用*选择器有时可能会有副作用。
DisgruntledGoat

2
您可能是对的,但是如果有人愿意vertical-align: middle,通常会宁愿将其应用于完整的代码块。
BalusC,

19

只需用标签包裹文本区域,然后将文本区域样式设置为

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:middle在CSS中使用。

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

如果可能,我正在寻找一种不带桌子的优雅解决方案。
NibblyPig,2009年

4
您应该在问题中写下类似的内容。
Peter Stuifzand,09年

11
如今,谁在使用表格作为表格?
BalusC,2009年

6
抱歉,认为这很明显:(
NibblyPig

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的高度只能和里面的文字一样高。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.