Ich erstelle ein Registrierungsformular für eine Website. Ich möchte, dass jedes Etikett und das entsprechende Eingabeelement in derselben Zeile angezeigt werden.
Hier ist mein Code:
#form {
background-color: #FFF;
height: 600px;
width: 600px;
margin-right: auto;
margin-left: auto;
margin-top: 0px;
border-top-left-radius: 10px;
border-top-right-radius: 10px;
padding: 0px;
}
label {
font-family: Georgia, "Times New Roman", Times, serif;
font-size: 18px;
color: #333;
height: 20px;
width: 200px;
margin-top: 10px;
margin-left: 10px;
text-align: right;
clear: both;
}
input {
height: 20px;
width: 300px;
border: 1px solid #000;
margin-top: 10px;
float: left;
}
<div id="form">
<form action="" method="post" name="registration" class="register">
<fieldset>
<label for="Student"> Name: </label>
<input name="Student" />
<label for="Matric_no"> Matric number: </label>
<input name="Matric_no" />
<label for="Email"> Email: </label>
<input name="Email" />
<label for="Username"> Username: </label>
<input name="Username" />
<label for="Password"> Password: </label>
<input name="Password" type="password" />
<input name="regbutton" type="button" class="button" value="Register" />
</fieldset>
</form>
</div>
Antworten:
Vorausgesetzt , dass Sie die Elemente schweben wollen, würden Sie auch die Schwimmer müssen
label
Elemente zu.So etwas würde funktionieren:
Code-Snippet anzeigen
Alternativ wäre ein üblicherer Ansatz, die
input
/label
Elemente in Gruppen zu verpacken :Code-Snippet anzeigen
Beachten Sie, dass das
for
Attribut demid
eines beschriftbaren Elements entsprechen sollte, nicht seinemname
. Auf diese Weise können Benutzer auf klickenlabel
, um das entsprechende Formularelement zu fokussieren.quelle
clear: both;
die meinem Fall geholfen hat.Ich fand, dass
"display:flex"
Stil ein guter Weg ist, um diese Elemente in derselben Linie zu machen. Egal was für ein Element in der Div. Insbesondere wenn die Eingabeklasse Formularkontrolle ist, funktionieren andere Lösungen wie Bootstrap und Inline-Block nicht gut.Beispiel:
Weitere Details zur Anzeige: flex:
Flex-Richtung: Zeile, Spalte
Inhalt rechtfertigen: Flex-End, Center, Space-Between, Space-Around
Ausrichtungselemente: Dehnen, Flex-Start, Flex-Ende, Mitte
quelle
aaa ## HTML Ich würde vorschlagen, dass Sie sie in ein div einschließen, da Sie sie wahrscheinlich in bestimmten Kontexten schweben lassen werden.
CSS
Dann können Sie innerhalb dieses Divs jedes Stück
inline-block
so gestalten, dass Sievertical-align
es zentrieren können - oder die Grundlinie usw. festlegen (Ihre Beschriftungen und Eingaben können in Zukunft die Größe ändern ...jsFiddle
UPDATE: Mitte 2016 + mit Mobile-First-Medienabfragen und Flex-Box
So mache ich es heutzutage.
HTML
SCSS
jsFiddle
quelle
<label>
Element jetzt ein paar Tage.Was Sie vermisst haben, war der Schwimmer: links; Hier ist ein Beispiel, das gerade im HTML erstellt wurde
Der effizientere Weg, dies zu tun, besteht darin, den Beschriftungen eine Klasse hinzuzufügen und den Float festzulegen: left; zur Klasse in CSS
quelle
Abgesehen von der Verwendung von Floats, wie andere vorgeschlagen haben, können Sie sich auch auf ein Framework wie Bootstrap verlassen, in dem Sie die Klasse "Horizontalform" verwenden können, um die Bezeichnung und die Eingabe in derselben Zeile zu haben.
Wenn Sie mit Bootstrap nicht vertraut sind, müssen Sie Folgendes angeben:
Es ist sehr einfach und Sie müssten sich nicht mit Floats oder einer Menge CSS für die Formatierung herumschlagen, wie Sie oben aufgeführt haben.
quelle
Für Bootstrap 4 könnte dies getan werden
class="form-group" style="display: flex"
quelle
Ich verwende Angular 6 mit Bootstrap 4 und finde, dass dieser Weg funktioniert:
quelle
Ich habe dies auf verschiedene Arten getan, aber die einzige Möglichkeit, die ich gefunden habe, um die Beschriftungen und die entsprechenden Text- / Eingabedaten in derselben Zeile zu halten und immer perfekt auf die Breite des übergeordneten Elements umzureißen, ist die Verwendung der Tabelle display: inline.
CSS
HTML
quelle
Wickeln Sie das Etikett und die Eingabe in ein Bootstraps-Div
quelle
Dieses Ding funktioniert gut. Es setzt Optionsfeld oder Kontrollkästchen mit Beschriftung in derselben Zeile ohne CSS.
<label><input type="radio" value="new" name="filter">NEW</label> <label><input type="radio" value="wow" name="filter">WOW</label>
quelle
Code-Snippet anzeigen
quelle
Eine andere Möglichkeit besteht darin, eine Tabelle in das Formular einzufügen. (siehe unten) Ich weiß, dass Tabellen von einigen Leuten missbilligt werden, aber ich denke, dass sie gut funktionieren, wenn es um reaktionsschnelle Formularlayouts geht.
quelle