Tengo un formulario genérico, que me gustaría diseñar para alinear las etiquetas y los campos de entrada. Por alguna razón, cuando le doy un ancho al selector de etiquetas, no sucede nada:
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;
}
Salida:
¿Qué estoy haciendo mal?
<p>
realmente una buena idea envolver las secciones del formulario en etiquetas?Respuestas:
Hacer
display: inline-block
:http://jsfiddle.net/aqMN4/
fuente
Utilizar
display: inline-block;
Explicación:
El
label
es un elemento en línea, lo que significa que es tan grande como debe ser.Establezca la
display
propiedad eninline-block
oblock
parawidth
que surta efecto.Ejemplo:
fuente
label
elemento no respeta lawidth
propiedad porque es un elemento en línea. Me gustaría señalar que elinput
elemento también es un elemento en línea de forma predeterminada. Pero permite cambiar su ancho usando la propiedad width a diferencia dellabel
elemento. Por tanto, el razonamiento del autor no es correcto.Creo que las etiquetas están en línea, por lo que no toman un ancho. Tal vez intente usar "display: block" y vaya desde allí.
fuente
Primero conviértalo en un bloque, luego flote a la izquierda para dejar de empujar el siguiente bloque hacia una nueva línea.
fuente
dar el estilo
espero que esto ayude '
fuente
label
Eldisplay
modo predeterminado esinline
, lo que significa que se ajusta automáticamente a su contenido. Para establecer un ancho, deberá establecerdisplay:block
y luego hacer algunos ajustes para colocarlo correctamente (probablemente involucrandofloat
)fuente