J'ai un formulaire générique, que j'aimerais styliser pour aligner les étiquettes et les champs de saisie. Pour une raison quelconque, lorsque je donne une largeur au sélecteur d'étiquettes, rien ne se passe:
HTML:
<form id="report-upload-form" method="POST" action="" enctype="multipart/form-data">
<p>
<label for="id_title">Title:</label>
<input id="id_title" type="text" class="input-text" name="title"></p>
<p>
<label for="id_description">Description:</label>
<textarea id="id_description" rows="10" cols="40" name="description"></textarea></p>
<p>
<label for="id_report">Upload Report:</label>
<input id="id_report" type="file" class="input-file" name="report">
</p>
</form>
CSS:
#report-upload-form {
background-color: #316091;
color: #ddeff1;
font-weight:bold;
margin: 23px auto 0 auto;
border-radius:10px;
width: 650px;
box-shadow: 0 0 2px 2px #d9d9d9;
}
#report-upload-form label {
padding-left:26px;
width:125px;
text-transform: uppercase;
}
#report-upload-form input[type=text],
#report-upload-form input[type=file],
#report-upload-form textarea {
width: 305px;
}
Production:
Qu'est-ce que je fais mal?
<p>
vraiment une bonne idée d' encapsuler les sections du formulaire dans des balises?Réponses:
Faire
display: inline-block
:http://jsfiddle.net/aqMN4/
la source
Utilisation
display: inline-block;
Explication:
Le
label
est un élément en ligne, ce qui signifie qu'il est seulement aussi grand que nécessaire.Définissez la
display
propriété surinline-block
oublock
pour que lawidth
propriété prenne effet.Exemple:
la source
label
élément ne respectait pas lawidth
propriété car il s'agissait d'un élément en ligne. Je tiens à souligner que l'input
élément est également un élément en ligne par défaut. Mais il permet de modifier sa largeur en utilisant la propriété width contrairement à l'label
élément. Par conséquent, le raisonnement de l'auteur n'est pas correct.Je pense que les étiquettes sont en ligne et qu'elles ne prennent donc pas de largeur. Essayez peut-être d'utiliser "display: block" et de partir de là.
la source
Faites-en d'abord un bloc, puis flottez à gauche pour arrêter de pousser le bloc suivant dans une nouvelle ligne.
la source
donner du style
j'espère que cela aidera '
la source
label
Ledisplay
mode par défaut estinline
, ce qui signifie qu'il s'adapte automatiquement à son contenu. Pour définir une largeur, vous devrez définirdisplay:block
puis faire quelques manipulations pour le positionner correctement (impliquant probablementfloat
)la source