84 votes

Comment aligner une étiquette et une zone de texte ?

Mon code se termine comme suit :

             XXXXX
             XXXXX
Description: XXXXX

Je veux :

             XXXXX
Description: XXXXX
             XXXXX

La "description" s'étend parfois sur plusieurs lignes.

Code :

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

0 votes

Voulez-vous que l'étiquette Description soit au milieu ?

3 votes

Utilisez-vous des tableaux ou est-ce en ligne, faites-vous flotter l'étiquette à gauche, etc ? Pouvez-vous afficher votre code HTML et CSS afin que nous sachions à quoi ressemble votre code ? Il est difficile de recommander des styles et des mises en page qui pourraient ne pas correspondre à votre code.

0 votes

Oui, l'étiquette de description doit être centrée verticalement si possible. . . . Je vais joindre mon code

112voto

BalusC Points 498232

Vous devez les placer tous les deux dans un élément conteneur, puis appliquer l'alignement sur celui-ci.

Par exemple :

.formfield * {
  vertical-align: middle;
}

<p class="formfield">
  <label for="textarea">Label for textarea</label>
  <textarea id="textarea" rows="5">Textarea</textarea>
</p>

0 votes

Hmm, j'ai essayé de mettre ce style en ligne sur ma balise p, mais ça n'a pas marché.

0 votes

Dans votre cas, appliquez-le sur .DataForm * {} .

1 votes

Ne serait-il pas hérité ? J'ai quand même essayé, mais ça n'a pas marché :(

22voto

Rado Points 141

Il suffit d'envelopper la zone de texte avec l'étiquette et de définir le style de la zone de texte comme suit

vertical-align: middle;

Voici un peu de magie pour tous les textareas de la page :)

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

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

3 votes

Cela a parfaitement fonctionné. La réponse sélectionnée n'a pas fonctionné. Merci !

4voto

Charlie Points 31
  1. Définissez le height de votre étiquette au même height comme la zone de texte multiligne.
  2. Ajoutez la cssClass .alignTop{vertical-align: middle;} pour le contrôle des étiquettes.

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

3voto

Peter Stuifzand Points 3160

Utilisez vertical-align:middle dans votre CSS.

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

0 votes

Je cherche une solution élégante, sans tableaux si possible.

4 votes

Vous devriez écrire ce genre de choses dans votre question.

12 votes

Qui utilise des tableaux pour les formulaires de nos jours ?

0voto

h4xnoodle Points 367

Essayez de définir une hauteur sur vos éléments td.

vertical-align: middle; 

signifie que l'élément auquel le style est appliqué sera aligné sur l'élément parent. La hauteur du td ne peut être supérieure à celle du texte qu'il contient.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X