Wie richte ich ein Etikett und einen Textbereich aus?

81

Mein Code endet wie folgt:

             XXXXX
             XXXXX
Description: XXXXX

Ich will:

             XXXXX
Description: XXXXX
             XXXXX

"Beschreibung" umfasst manchmal mehrere Zeilen.

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;
}
NibblyPig
quelle
Möchten Sie das Beschreibungsetikett in der Mitte?
Peter Stuifzand
3
Verwenden Sie Tabellen oder ist es inline, schweben Sie die Beschriftung nach links usw.? Können Sie HTML und CSS veröffentlichen, damit wir wissen, wie Ihr Code aussieht? Es ist schwierig, Stile und Layouts zu empfehlen, die möglicherweise nicht in Ihren Code passen.
Andy E
Ja, das Beschreibungsetikett muss nach Möglichkeit vertikal zentriert werden. . . . Ich werde meinen Code anhängen
NibblyPig

Antworten:

107

Sie müssen beide in ein Containerelement einfügen und dann die Ausrichtung darauf anwenden.

Beispielsweise:

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

BalusC
quelle
Hmm, ich habe versucht, das als Inline-Stil auf mein p-Tag zu setzen, aber es hat nicht funktioniert
NibblyPig
1
Wäre es nicht vererbt? Ich habe es trotzdem versucht, aber es hat nicht funktioniert :(
NibblyPig
1
Mein schlechtes, es funktioniert mit Datenform *, obwohl die Art und Weise, wie es zentriert wird, seltsam ist, funktioniert es, also danke
NibblyPig
10
Eine bessere Lösung wäre einfach, vertical-align: middle;jede Ihrer oben genannten Regeln einzugeben, .DataForm labelund .DataForm textarea. Die Verwendung des * Selektors kann manchmal Nebenwirkungen haben.
DisgruntledGoat
2
Sie mögen Recht haben, aber wenn man vertical-align: middleetwas tun würde , würde man es normalerweise lieber auf den gesamten Block anwenden.
BalusC
17

Wickeln Sie einfach den Textbereich mit dem Etikett ein und setzen Sie den Textbereich auf

vertical-align: middle;

Hier ist etwas Magie für alle Textbereiche auf der Seite :)

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

<label>Blah blah blah Description: <textarea>dura bura</textarea></label>
Rado
quelle
2
Das hat perfekt funktioniert. Die ausgewählte Antwort hat nicht. Vielen Dank!
eaglei22
4
  1. Stellen heightSie das Etikett auf das gleiche heightwie das mehrzeilige Textfeld ein.
  2. Fügen Sie die cssClass .alignTop{vertical-align: middle;}für das Label-Steuerelement hinzu.

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

Charlie
quelle
3

Verwenden Sie vertical-align:middlein Ihrem CSS.

<table>
    <tr>
       <td style="vertical-align:middle">Description:</td>
       <td><textarea></textarea></td>
    </tr>
</table>
Peter Stuifzand
quelle
Ich suche nach einer eleganten Lösung ohne Tabellen, wenn möglich.
NibblyPig
4
Sie sollten solche Dinge in Ihre Frage schreiben.
Peter Stuifzand
11
Wer verwendet heutzutage Tabellen für Formulare?
BalusC
6
Entschuldigung, dachte es war offensichtlich :(
NibblyPig
4
Tabellen sind für Formulare vollkommen gültig. Es handelt sich um tabellarische Daten, allerdings mit nur einer Datenzeile (oder -spalte).
DisgruntledGoat
3

Richten Sie das Textbereichsfeld an der Beschriftung aus, nicht die Beschriftung am Textbereich.

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

textarea{
    vertical-align: middle;
}

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

Versuche dies:

textarea { vertical-align: top; }​ 
Vaibhav Jain
quelle
0

Versuchen Sie, eine Höhe für Ihre td-Elemente festzulegen.

vertical-align: middle; 

bedeutet, dass das Element, auf das der Stil angewendet wird, innerhalb des übergeordneten Elements ausgerichtet wird. Die Höhe des td darf nur so hoch sein wie der Text darin.

h4xnoodle
quelle