Voici ce que mon travail est jusqu'ici:
<div id="main">
<form>
<label>First Name:<input type="text" id="firstname"></label><br/>
<label>Last Name:<input type="text" id="lastname"></label><br>
<label>E-Mail:<input type="text" id="email"></label><br/>
<label>Phone:<input type="text" id="phone"></label><br/>
</form>
</div>
CSS
#main {
width:300px;
}
#main input {
float:right;
display:inline;
}
#main label {
color: #2D2D2D;
font-size: 15px;
width:250px;
display: block;
}
Actuellement, l'étiquette (à gauche) est en quelque sorte orientée vers le haut du champ de saisie (à droite). Je veux les aligner verticalement de sorte que l'étiquette soit au milieu du champ de saisie.
J'ai essayé vertical-align et ça ne marche pas. S'il vous plaît, aidez-moi à essayer de résoudre le problème. Merci.
Je pense que imbriquer <span>
ajoute beaucoup de balises inutiles.
display: inline-block
permet de placer les <label>
et <input>
l'un à côté de l'autre, tout comme avec float: right
mais sans interrompre le flux de documents. De plus, il est beaucoup plus flexible et permet un meilleur contrôle de l'alignement si vous (ou le lecteur d'écran de l'utilisateur) souhaitez modifier le font-size
.
Edit: jsfiddle
label, input {
display: inline-block;
vertical-align: baseline;
width: 125px;
}
label {
color: #2D2D2D;
font-size: 15px;
}
form, input {
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
}
form {
width: 300px;
}
<form>
<label for="firstname">First Name:</label><input type="text" id="firstname">
<label for="lastname">Last Name:</label><input type="text" id="lastname">
<label for="email">E-Mail:</label><input type="text" id="email">
<label for="phone">Phone:</label><input type="text" id="phone">
</form>
Vous pouvez utiliser flexbox css pour aligner verticalement.
Il suffit d’envelopper l’élément parent display-flex
.
.display-flex {
display: flex;
align-items: center;
}
html:
J'ajoute span dans votre étiquette pour que nous puissions ajouter un style spécifique à l'étiquette de texte:
<div id="main">
<form>
<label><span>First Name:</span><input type="text" id="firstname"></label><br/>
<label><span>Last Name:</span><input type="text" id="lastname"></label><br>
<label><span>E-Mail:</span><input type="text" id="email"></label><br/>
<label><span>Phone:</span><input type="text" id="phone"></label><br/>
</form>
</div>
css:
#main label span {
position:relative;
top:2px;
}
Je pense que la suivante est la seule méthode qui fonctionne pour tous les types d’entrée.
label { display: flex; align-items: center; }
input { margin: 0; padding: 0; }
<label><input type="checkbox"> HTML</label>
<label><input type="radio"> JS</label>
<label>CSS <input type="text"></label>
<label>Framework
<select><option selected>none</option></select>
</label>
Je mets
parce que cela semble être le moyen le plus simple d’aligner différents types d’entrée; Cependant, les marges fonctionnent très bien.
Vous pouvez inclure les éléments <label>
dans une étendue et définir le vertical-align
à middle
HTML
<div id="main">
<form> <span><label>First Name:<input type="text" id="firstname" /></label></span>
<br/> <span><label>Last Name:<input type="text" id="lastname" /></label></span>
<br/> <span><label>E-Mail:<input type="text" id="email" /></label></span>
<br/> <span><label>Phone:<input type="text" id="phone" /></label></span>
<br/>
</form>
</div>
CSS
#main {
width:300px;
}
#main input {
float:right;
display:inline;
}
#main label {
color: #2D2D2D;
font-size: 15px;
}
#main span {
display: table-cell;
vertical-align: middle;
width:250px;
}