Eu tenho um formulário genérico, que gostaria de estilizar para alinhar os rótulos e os campos de entrada. Por alguma razão, quando eu dou uma largura para o seletor de rótulo, nada acontece:
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;
}
Resultado:
O que estou fazendo de errado?
<p>
tags é realmente uma boa ideia?Respostas:
Faça
display: inline-block
:http://jsfiddle.net/aqMN4/
fonte
Usar
display: inline-block;
Explicação:
O
label
é um elemento embutido, o que significa que é tão grande quanto precisa ser.Defina a
display
propriedade comoinline-block
oublock
parawidth
que ela tenha efeito.Exemplo:
fonte
label
elemento não respeita awidth
propriedade porque é um elemento embutido. Gostaria de salientar que oinput
elemento também é um elemento embutido por padrão. Mas ele permite que sua largura seja alterada usando a propriedade width ao contrário dolabel
elemento. Portanto, o raciocínio do autor não é correto.Acredito que os rótulos são embutidos e, portanto, não ocupam largura. Talvez tente usar "display: block" e partir daí.
fonte
Faça um bloco primeiro, então flutue para a esquerda para parar de empurrar o próximo bloco para uma nova linha.
fonte
dê o estilo
espero que isso ajude '
fonte
label
é odisplay
modo padrãoinline
, o que significa que ele se ajusta automaticamente ao seu conteúdo. Para definir uma largura, você precisará definirdisplay:block
e, em seguida, fazer alguns ajustes para posicioná-la corretamente (provavelmente envolvendofloat
)fonte