Как выровнять метку и текстовую область?


заканчивается

             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;
}
7 74

7 ответов:

вам нужно поместить их обоих в какой-то элемент контейнера, а затем применить выравнивание на нем.

например:

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

просто оберните textarea с меткой и установите стиль textarea в

vertical-align: middle;

вот некоторые магии для всех текстовых областей на странице:)

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

<label>Blah blah blah Description: <textarea>dura bura</textarea></label>
  1. установить height вашей метки к тому же height как многострочное текстовое поле.
  2. добавить cssClass .alignTop{vertical-align: middle;} для элемента управления label.

    <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>
    

использовать vertical-align:middle в вашем CSS.

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

попробуйте это:

textarea { vertical-align: top; }​ 

попробуйте установить высоту на элементах td.

vertical-align: middle; 

означает, что элемент, к которому применяется стиль, будет выровнен внутри родительского элемента. Высота тд может быть только текст внутри.

выровняйте поле текстовой области по метке, а не метку по текстовой области,

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

textarea{
    vertical-align:middle;
}

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