Sou novo em HTML e estou tentando aprender a usar formulários.
O maior problema que estou tendo até agora é o alinhamento dos formulários. Aqui está um exemplo do meu arquivo HTML atual:
<form>
First Name:<input type="text" name="first"><br />
Last Name:<input type="text" name="last"><br />
Email:<input type="text" name="email"><br />
</form>
O problema com isso é que a caixa de campo após 'E-mail' é drasticamente diferente em termos de espaçamento em comparação com o nome e o sobrenome. Qual é a maneira "adequada" de fazer com que eles se "alinhem" essencialmente?
Estou tentando praticar boa forma e sintaxe ... muitas pessoas podem fazer isso com CSS. Não tenho certeza, só aprendi o básico de HTML até agora.
Respostas:
Outro exemplo, este usa CSS, eu simplesmente coloco o formulário em uma div com a classe container. E especificou que os elementos de entrada contidos devem ter 100% da largura do contêiner e não ter nenhum elemento em nenhum dos lados.
fonte
A resposta aceita (definir uma largura explícita em pixels) torna difícil fazer alterações e quebra quando seus usuários usam um tamanho de fonte diferente. Usar tabelas CSS, por outro lado, funciona muito bem:
Aqui está um JSFiddle: http://jsfiddle.net/DaS39/1/
E se você precisar dos rótulos alinhados à direita, basta adicionar
text-align: right
aos rótulos: http://jsfiddle.net/DaS39/EDITAR: Mais uma nota rápida: as tabelas CSS também permitem brincar com colunas: por exemplo, se você quiser que os campos de entrada ocupem o máximo de espaço possível, você pode adicionar o seguinte em seu formulário
você pode querer adicionar
white-space: nowrap
aolabels
nesse caso.fonte
Uma solução simples para você, se você é novo em HTML, é usar uma tabela para alinhar tudo.
fonte
Acho muito mais fácil alterar a exibição dos rótulos para inline-block e definir uma largura
fonte
Você deve usar uma mesa. Por uma questão de estrutura lógica os dados são tabulares: é por isso que você quer alinhá-los, pois quer mostrar que os rótulos não estão relacionados apenas às suas caixas de entrada, mas também entre si, em uma estrutura bidimensional.
[considere o que você faria se tivesse strings ou valores numéricos para exibir em vez de caixas de entrada.]
fonte
Para isso, prefiro manter uma semântica HTML correta, e usar um CSS o mais simples possível.
Algo assim resolveria o problema:
Uma desvantagem, entretanto: você pode ter que escolher a largura de rótulo certa para cada formulário, e isso não é fácil se seus rótulos puderem ser dinâmicos (rótulos I18N, por exemplo).
fonte
Sou um grande fã de usar listas de definição.
Eles são fáceis de estilizar usando CSS e evitam o estigma de usar tabelas para layout.
fonte
div
s (add
apenas tem uma margem esquerda de aproximadamente 40 px) e evita qualquer confusão semântica. Além disso, nenhum desses alinha os rótulos / entradas na mesma linha.usando css
isso dá a você algo como:
fonte
clear
para evitar que os formulários se amontoem para, digamos, larguras menoresO método tradicional é usar uma mesa.
Exemplo:
No entanto, muitos argumentariam que as tabelas são restritivas e preferem CSS. A vantagem de usar CSS é que você pode usar vários elementos. De divs, lista ordenada e não ordenada, você pode obter o mesmo layout.
No final, você vai querer usar o que achar mais confortável.
Dica: as tabelas são fáceis de começar.
fonte
Bem, para o básico, você pode tentar alinhá-los na tabela. No entanto, o uso da tabela é ruim para o layout, pois a tabela é destinada ao conteúdo.
O que você pode usar são técnicas de flutuação CSS.
Código CSS
HTML
Um artigo elaborado que escrevi pode ser encontrado respondendo à questão do problema de flutuação do IE7: problemas de flutuação certa do IE7
fonte
ul
Sei que isso já foi respondido, mas encontrei uma nova maneira de alinhá-los bem - com um benefício extra - consulte http://www.gargan.org/en/Web_Development/Form_Layout_with_CSS/
Basicamente, você usa o elemento label em torno da entrada e alinha usando:
e então com css você simplesmente alinha:
fonte
A resposta de Clément é de longe a melhor. Aqui está uma resposta um pouco melhorada, mostrando diferentes alinhamentos possíveis, incluindo botões alinhados esquerda-centro-direita:
Eu adicionei um pouco de preenchimento à direita de todos os rótulos (
padding-right:8px
) apenas para tornar o exemplo um pouco menos horrível, mas isso deve ser feito com mais cuidado em um projeto real (adicionar preenchimento a todos os outros elementos também seria uma boa ideia).fonte
css eu costumava resolver este problema, semelhante ao Gjaa mas com um estilo melhor
Aqui está o meu HTML, usado especificamente para um formulário de registro simples sem código php
É muito simples e estou apenas começando, mas funcionou muito bem
fonte
Insira tags de entrada dentro de uma lista não ordenada. Torne o tipo de estilo nenhum. Aqui está um exemplo.
Funcionou para mim!
fonte
UL
iria apenas recuar o conteúdo da margem, sem alinhar nada. Colocar osinput
sLI
apenas adicionaria um marcador antes deles (sim, eles seriam alinhados, como uma lista, não contra os rótulos). Além disso, "Input2" ficaria com oinput
elemento anterior , porque osLI
não estão fechados (não há</li>
) e não há início<li>
para esse "rótulo", então ele será tratado como deveria, texto comum, portanto, concatenado ao elemento anterior. Por último, o código tem um erro, o fechamento<ul/>
deveria ser</ul>
.No CSS, você deve declarar rótulo e entrada como display: inline-block e fornecer largura de acordo com seus requisitos. Espero que isso ajude você. :)
fonte
Basta adicionar
Basta alinhar na tag de abertura.
fonte
form
não temalign
atributo (e mesmo se tivesse, seria obsoleto para o uso de estilo / CSS). Além disso, a tag de fechamento está errada, deveria estar</form>
. É possível definirstyle="text-align:center"
dentro doform
, o que alinharia todo o conteúdo do formulário no centro, mas não era sobre isso que a pergunta original era. Isso nunca alinharia os rótulos com seus campos de entrada (sim, testei no Firefox 75, só para ter certeza).