HTML-Eingabefelder ausrichten nach : [duplicate]

Lesezeit: 6 Minuten

Benutzer-Avatar
Sankara

Ich habe ein HTML-Formular wie:

 <html>
  Name:<input type="text"/></br>
  Email Address:<input type="text"/></br>
  Description of the input value:<input type="text"/></br>
 </html>

Jetzt beginnen die Beschriftungen alle in derselben Spalte, aber die Textfelder beginnen an unterschiedlichen Positionen gemäß der Textlänge der Beschriftung.

Gibt es eine Möglichkeit, die Eingabefelder so auszurichten, dass alle “:” und die Textfelder an derselben Position beginnen und der vorangehende Text bis zum “:” rechtsbündig ausgerichtet wird?

Ich bin mit der Verwendung von CSS einverstanden, wenn dies dazu beitragen kann.

  • Wo ist das Formular? Ich sehe Formularsteuerelemente, aber keine Formulare.

    – Madaras Geist

    3. Juni 2012 um 7:41 Uhr

  • Es ist nur ein Pseudo-Code-Snippet. Angenommen, Sie haben ein Formular innerhalb des HTML-Tags.

    – Sankara

    3. Juni 2012 um 7:56 Uhr

  • Beantwortet das deine Frage? So richten Sie Eingabeformulare in HTML aus

    – Cyberritter

    3. Mai 2020 um 22:32 Uhr

Funktionierende JS Fiddle

HTML:

  <div>
      <label>Name:</label><input type="text">
      <label>Email Address:</label><input type = "text">
      <label>Description of the input value:</label><input type="text">
  </div>

CSS:

label{
    display: inline-block;
    float: left;
    clear: left;
    width: 250px;
    text-align: right;
}
input {
  display: inline-block;
  float: left;
}

  • Gibt es eine Möglichkeit, dies zu tun, ohne eine absolute Breite angeben zu müssen?

    – Ajedi32

    28. Oktober 2013 um 1:21 Uhr

  • Ajedi32, Sie können die relative Breite (%) verwenden, schauen Sie hier: jsfiddle.net/T6zhj/293 . Aber Sie müssen die gleiche Breite für alle Etiketten auf irgendeine Weise einrichten, weil Sie sie rechts ausrichten müssen.

    – DaneSoul

    28. Oktober 2013 um 17:19 Uhr


  • vscode sagen. Und wenn ich die Anzeige sowohl in der Beschriftung als auch in der Eingabe entferne, scheint es wahr zu sein. “Inline-Block wird aufgrund des Floats ignoriert. Wenn ‘float’ einen anderen Wert als ‘none’ hat, wird die Box gefloatet und ‘display’ wird als ‘block’css (propertyIgnoredDueToDisplay) behandelt”

    – Greif

    4. Mai um 7:23 Uhr

Benutzer-Avatar
huysentruitw

Sie könnten ein Etikett verwenden (siehe JsFiddle)

CSS

label { display: inline-block; width: 210px; text-align: right; }

HTML

<html> 
    <label for="name">Name:</label><input id="name" type="text"><br />
    <label for="email">Email Address:</label><input id="email" type="text"><br /> 
    <label for="desc">Description of the input value:</label><input id="desc" type="text"><br /> 
 </html> 

Oder Sie könnten diese Beschriftungen in einer Tabelle verwenden (JsFiddle)

<html>
    <table>
        <tbody>
            <tr><td><label for="name">Name:</label></td><td><input id="name" type="text"></td></tr>
            <tr><td><label for="email">Email Address:</label></td><td><input id="email" type = "text"></td></tr>
            <tr><td><label for="desc">Description of the input value:</label></td><td><input id="desc" type="text"></td></tr>
        </tbody>
    </table>
 </html> 

  • Plus, durch die Verwendung label Sie erhalten alle möglichen netten Zugänglichkeitsfunktionen: Sie können klicken, um zum zugehörigen Steuerelement zu springen, und Screenreader können Ihr Formular verstehen. tables für Layout erhalten Sie nichts davon.

    – Mattias Bülens

    3. Juni 2012 um 7:55 Uhr

  • @MattiasBuelens: aber eine Tabelle wird die erste Spalte an die Breite der Beschriftungen anpassen. Beispielsweise für eine mehrsprachige Site, bei der Sie die Label-Beschriftung dynamisch erhalten, könnten Sie die tds in der ersten Spalte auf nowrap setzen … Also lassen Sie die Tabellen noch nicht fallen, sie haben ihren Nutzen

    – huysentruitw

    3. Juni 2012 um 7:58 Uhr


  • @wouterHuysentruit Das ist, wonach ich suche, aber im CSS-Beispiel gibt es keine Leerzeichen zwischen den Feldern. Wie kann das behoben werden?

    – Brian

    16. Oktober 2014 um 21:02 Uhr

  • Definieren Sie einen ‘Rand’ für die Eingabefelder

    – huysentruitw

    17. Oktober 2014 um 8:02 Uhr

http://jsfiddle.net/T6zhj/1/

Die Verwendung von Anzeigetabellenzellen/-zeilen erledigt die Aufgabe, ohne dass eine Breite erforderlich ist.

Das html:

 <html>
  <div>
      <div class="row"><label>Name:</label><input type="text"></div>
      <div class="row"><label>Email Address:</label><input type = "text"></div>
      <div class="row"><label>Description of the input value:</label><input type="text"></div>
  </div>
 </html>

Das CSS:

label{
    display: table-cell;
    text-align: right;
}
input {
  display: table-cell;
}
div.row{
    display:table-row;
}

Legen Sie eine Breite für das Formularelement fest (das in Ihrem Beispiel vorhanden sein sollte! ) und schweben Sie (und löschen Sie) die Eingabeelemente. Lassen Sie auch die br-Elemente fallen.

Ich weiß, dass dieser Ansatz schon früher verwendet wurde, aber ich glaube, dass das Layout mithilfe von Tabellen einfach generiert werden kann, obwohl dies der Fall ist möglicherweise nicht die beste Vorgehensweise.

JSFiddle

HTML

<table>

    <tr><td>Name:</td><td><input type="text"/></td></tr>

    <tr><td>Age:</td><td><input type="text"/></td></tr>

</table>

<!--You can add the fields as you want-->

CSS

td{
    text-align:right;
}

  • Es ist immer noch besser, als die Breite absolut anzugeben

    – Umschlag

    31. Januar 2017 um 16:04 Uhr

Benutzer-Avatar
Schleife

In meinem Fall lege ich diese Sachen immer in ein ap-Tag wie

<p>
name : < input type=text />
</p>

und so weiter und dann das CSS wie anwenden

p {
  text-align:left;
}

p input {
  float:right;
}

Sie müssen die Breite des p-Tags angeben, da die Eingabe-Tags ganz nach rechts schweben.

Dieses CSS wirkt sich auch auf die Senden-Schaltfläche aus. Sie müssen die Regel für dieses Tag überschreiben.

  • Es ist immer noch besser, als die Breite absolut anzugeben

    – Umschlag

    31. Januar 2017 um 16:04 Uhr

Benutzer-Avatar
Teil

Ich habe dem Label gerade eine Breite gegeben und der Eingabetyp wurde automatisch ausgerichtet.

input[type="text"] {
    width:100px;
	height:30px;
	border-radius:5px;
	background-color: lightblue;
	margin-left:2px;
  position:relative;
}

label{
position:relative;
width:300px;
border:2px dotted black;
margin:20px;
padding:5px;
font-family:AR CENA;
font-size:20px;

}
<label>First Name:</label><input type="text" name="fname"><br>
<label>Last Name:</label><input type="text" name="lname"><br>

  • Dies richtet sie nicht wirklich aus. Es scheint, als wären sie ausgerichtet, weil „Vorname“ und „Nachname“ fast die gleiche Breite haben, aber sie sind nicht ganz ausgerichtet und es würde nicht mit Etiketten unterschiedlicher Größe funktionieren.

    – Solomon Ucko

    19. April 2018 um 21:53 Uhr

1299550cookie-checkHTML-Eingabefelder ausrichten nach : [duplicate]

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy