El único
Tengo un formulario genérico, al 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 pasa 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;
}
Producción:
¿Qué estoy haciendo mal?
Davis
Hacer display: inline-block
:
#report-upload-form label {
padding-left:26px;
width:125px;
text-transform: uppercase;
display:inline-block
}
-
Quédese con el bloque en línea. Probado en IE7, IE8, IE9, FF
– Davis
30 de mayo de 2012 a las 13:14
-
¿Hay alguna solución para colocar cada elemento en un
?
– Colin D.
9 de marzo de 2016 a las 22:59
-
@ColinD Recomendaría usar divs, no etiquetas
.
– Davis
7 julio 2016 a las 17:35
jeff jenkins
Usar display: inline-block;
Explicación:
los label
es un elemento en línea, lo que significa que es tan grande como debe ser.
Selecciona el display
propiedad a cualquiera inline-block
o block
para el width
propiedad para que surta efecto.
Ejemplo:
#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;
display: inline-block;
}
#report-upload-form input[type=text],
#report-upload-form input[type=file],
#report-upload-form textarea {
width: 305px;
}
<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>
-
¡Gracias! bloque en línea es lo que necesitaba. Block hace que se vea raro.
– El único
30 de mayo de 2012 a las 13:07
-
Tenga en cuenta que el soporte de bloque en línea es incompleto en IE por debajo de IE8; probablemente no sea un gran problema en estos días, pero es algo a tener en cuenta. (fuente quirksmode.org/css/display.html)
– n00dle
30 de mayo de 2012 a las 13:15
-
@PandaWood Lo siento, han pasado casi 2 años desde que comentaste esta publicación. Pero, estoy respondiendo a tu comentario para que otros lectores no se confundan con la explicación dada por el autor de esta publicación. Este último ha razonado que la
label
elemento no respeta elwidth
propiedad porque es un elemento en línea. Quisiera señalar que elinput
El elemento también es un elemento en línea de forma predeterminada. Pero permite cambiar su ancho usando la propiedad de ancho a diferencia dellabel
elemento. Por lo tanto, el razonamiento del autor no es correcto.– ghd
17 de agosto de 2016 a las 16:57
Creo que las etiquetas están en línea, por lo que no toman un ancho. Tal vez intente usar “display: block” y continúe desde allí.
ctrl-alt-dileep
Conviértalo en un bloque primero, luego flote hacia la izquierda para dejar de empujar el siguiente bloque hacia una nueva línea.
#report-upload-form label {
padding-left:26px;
width:125px;
text-transform: uppercase;
display:block;
float:left
}
dale el estilo
display:inline-block;
espero que esto ayude’
n00dle
label
por defecto display
el modo es inline
, lo que significa que automáticamente se ajusta a su contenido. Para establecer un ancho, deberá establecer display:block
y luego hacer algunos cambios para colocarlo correctamente (probablemente involucrando float
)
ceniza sharma
label
{
display: inline-block;
}
le dará la flexibilidad de cambiar el ancho de las etiquetas y alinear el formulario de forma personalizada. salud
Por cierto, está envolviendo las secciones del formulario en
<p>
etiquetas realmente una buena idea?– J Gallardo
27 de enero de 2014 a las 22:56