el ancho de la etiqueta css no tiene efecto

4 minutos de lectura

avatar de usuario
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:

ingrese la descripción de la imagen aquí

jsviolín

¿Qué estoy haciendo mal?

  • 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

avatar de usuario
Davis

Hacer display: inline-block:

#report-upload-form label {
    padding-left:26px;
    width:125px;
    text-transform: uppercase;
    display:inline-block
}

http://jsfiddle.net/aqMN4/

  • 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

avatar de usuario
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 el width propiedad porque es un elemento en línea. Quisiera señalar que el input 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 del label 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í.

avatar de usuario
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’

avatar de usuario
n00dle

labelpor 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)

avatar de usuario
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

¿Ha sido útil esta solución?