Eu tenho um cenário de formulário muito básico e conhecido, no qual preciso alinhar os rótulos ao lado das entradas corretamente. No entanto, eu não sei como fazê-lo.
Meu objetivo seria que os rótulos estejam alinhados ao lado das entradas do lado direito. Aqui está um exemplo de imagem do resultado desejado.
Fiz um violino para sua conveniência e para esclarecer o que tenho agora - http://jsfiddle.net/WX58z/
Snippet:
<div class="block">
<label>Simple label</label>
<input type="text" />
</div>
<div class="block">
<label>Label with more text</label>
<input type="text" />
</div>
<div class="block">
<label>Short</label>
<input type="text" />
</div>
Embora as soluções aqui sejam viáveis, a tecnologia mais recente criou o que eu acho que é uma solução melhor. O CSS Grid Layout nos permite estruturar uma solução mais elegante.
O CSS abaixo fornece uma estrutura de "configurações" de duas colunas, na qual se espera que a primeira coluna seja um rótulo alinhado à direita, seguido por algum conteúdo na segunda coluna. Conteúdo mais complicado pode ser apresentado na segunda coluna, envolvendo-o em um <div>.
[Como uma observação lateral: uso CSS para adicionar o ':' que segue cada rótulo, pois esse é um elemento estilístico - minha preferência.]
fonte
grid-template-columns: max-content 1fr;
, a segunda coluna usará toda a largura restante. Este é para mim o Santo Graal de tais layouts, onde nenhuma largura de coluna ou conteúdo deve ser especificada e tudo se encaixa perfeitamente no espaço disponível, automaticamente.Respondeu a uma pergunta como essa antes, você pode dar uma olhada nos resultados aqui:
Criando formulário para ter campos e texto próximos um do outro - qual é a maneira semântica de fazer isso?
Portanto, para aplicar as mesmas regras ao seu violino, você pode usar
display:inline-block
para exibir seus grupos de rótulo e entrada lado a lado, da seguinte maneira:CSS
violino atualizado
fonte
Eu uso algo semelhante a este:
Estilo:
fonte
Você também pode tentar usar a caixa flexível
fonte
Eu sei que este é um thread antigo, mas uma solução mais fácil seria incorporar uma entrada no rótulo da seguinte maneira:
fonte
Aqui está a largura dos rótulos genéricos para todos os rótulos de formulário. Nada fixa largura.
chame a calculadora setLabelWidth com todos os rótulos. Esta função carregará todos os rótulos na interface do usuário e descobrirá a largura máxima do rótulo. Aplique o valor de retorno da função abaixo a todos os rótulos.
fonte
Você pode fazer algo assim:
HTML:
CSS:
Espero que isto ajude ! :)
fonte