Blog

Postado em em 22 de abril de 2024

Formulário de Login em HTML e CSS – Criando seu Projeto

Vamos criar um formulário de login em HTML e CSS do zero! Este será o seu primeiro projeto em HTML e CSS!

Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo ou acesse o nosso canal do YouTube!

Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:

Formulário de Login em HTML e CSS – Criando seu Projeto

Na aula de hoje, vou te ensinar a criar um formulário de login em HTML e CSS do zero! Vamos desenvolver esse projeto passo a passo, cobrindo toda a estrutura HTML e a estilização com CSS.

A ideia é que você consiga construir essa página sozinho, aplicando os diversos conhecimentos que aprendeu sobre HTML e CSS. Este será um ótimo projeto para praticar e explorar esses elementos.

Então, faça o download do material disponível e vamos juntos criar seu próprio formulário de login em HTML e CSS.

O que Vamos Construir

No material disponível para download, você encontrará tudo o que precisa para desenvolver seu próprio formulário de login em HTML e CSS do zero, bem como um gabarito com um formulário pronto.

Nesse gabarito, você poderá ver o que iremos desenvolver nesta aula, que é uma página de login muito semelhante ao formulário da Hashtag.

Formulário de Login em HTML e CSS

Além disso, essa será uma página totalmente responsiva. Você pode abrir a ferramenta de desenvolvedor pressionando a tecla F12 com a página aberta no navegador. Dentro da janela que será aberta, você pode selecionar a opção Toggle device toolbar.

Toggle device toolbar

Assim, você pode alterar as dimensões da página e visualizar como ela continua responsiva.

Arquivo Inicial – Abrindo o VS Code

Para iniciar nosso projeto, começaremos com um arquivo em branco. Durante este projeto, usarei o VS Code e a extensão Live Server.

Essa extensão nos permite visualizar no navegador o resultado de todo o código que estivermos desenvolvendo dentro do VS Code.

Se você quiser saber como baixar, instalar e personalizar seu VS Code com as extensões usadas ao longo desta e de outras aulas de HTML e CSS aqui da Hashtag, confira esta aula aqui.

Com o VS Code aberto, vamos criar um arquivo chamado index.html, que conterá a estrutura básica da nossa página, e um arquivo chamado style.css, onde teremos a estilização em CSS.

Arquivo Inicial – Abrindo o VS Code

Feito isso, vamos abrir nosso arquivo index.html, digitar ! e pressionar a tecla Tab. Isso fará com que o VS Code reconheça que você deseja criar um arquivo HTML e construirá toda a estrutura básica de um arquivo HTML para você.

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
  </head>
  <body>
  </body>
</html>

Para visualizar esta página, basta clicar com o botão direito do mouse sobre o arquivo HTML que acabou de criar e selecionar a opção Open with Live Server.

Open with Live Server

Por enquanto, não teremos nada além de uma página em branco.

página em branco

Edições Iniciais – Criando o Body da Página

Até o momento, temos um modelo padrão de HTML. Podemos começar fazendo algumas edições, como alterar o idioma para português e o título da página para Página de Login.

<!DOCTYPE html>
<html lang="pt">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Página de Login</title>
  </head>
  <body>
  </body>
</html>

Além disso, precisamos começar a estruturar o <body> da nossa página, onde inserimos todo o conteúdo visível da página.

Dentro desse corpo, teremos o formulário, um título, uma barra (que adicionaremos posteriormente com CSS), um rótulo para os campos de texto, os campos de preenchimento, um checkbox, um botão e um texto com um link no final.

Todos esses elementos serão construídos dentro do corpo da nossa página.

Vamos começar adicionando o título da página com a tag <h1>. As tags de heading variam de <h1> até <h6>, sendo <h1> a mais importante e <h6> a menos relevante.

<body>
  <h1>Faça o seu login</h1>
</body>

Logo abaixo do título, adicionaremos uma barra posteriormente quando estivermos utilizando CSS.

Barra abaixo do título

Depois do título, definiremos os campos do formulário. Cada um desses campos será composto por um label, com o texto explicativo, seguido de um input.

O primeiro input será do tipo email e o segundo input do tipo password. Eles terão um id correspondente para relacioná-los com o seu label (rótulo).

<body>
    <h1>Faça o seu login</h1>
    <label for="email">Seu e-mail*</label>
    <input type="email" id="email" />
    <label for="password">Sua senha*</label>
    <input type="password" id="password" />
  </body>

Em seguida, incluiremos um input do tipo checkbox, seguido de um pequeno parágrafo <p>. E um botão <button> escrito Entrar.

<body>
    <h1>Faça o seu login</h1>
    <label for="email">Seu e-mail*</label>
    <input type="email" id="email" />
    <label for="password">Sua senha*</label>
    <input type="password" id="password" />
    <input type="checkbox" />
    <p>Lembrar-me</p>
    <button>Entrar</button>
  </body>

Para finalizar, adicionaremos um parágrafo com um elemento de âncora <a>.

<body>
    <h1>Faça o seu login</h1>
    <label for="email">Seu e-mail*</label>
    <input type="email" id="email" />
    <label for="password">Sua senha*</label>
    <input type="password" id="password" />
    <input type="checkbox" />
    <p>Lembrar-me</p>
    <button>Entrar</button>
    <p>
      Esqueceu sua senha?
      <a href="https://www.hashtagtreinamentos.com/">Clique aqui!</a>
    </p>
  </body>

Feito isso, vamos pegar toda essa estrutura e colocá-la dentro de um formulário <form>.

<body>
    <form action="">
      <h1>Faça o seu login</h1>
      <label for="email">Seu e-mail*</label>
      <input type="email" id="email" />
      <label for="password">Sua senha*</label>
      <input type="password" id="password" />
      <input type="checkbox" />
      <p>Lembrar-me</p>
      <button>Entrar</button>
      <p>
        Esqueceu sua senha?
        <a href="https://www.hashtagtreinamentos.com/">Clique aqui!</a>
      </p>
    </form>
  </body>

Visualizando nossa página até o momento, ela estará assim:

Estrutura da página

Em estrutura de página, essa página que acabamos de criar e a página do gabarito são basicamente iguais. O que as diferencia é a estilização visual criada através do CSS.

Agrupamentos no HTML – <div>

Antes de avançarmos para a estilização da nossa página, é importante primeiro agrupar os nossos elementos HTML.

Quando queremos agrupar elementos, precisamos colocá-los dentro de um elemento pai, um container que contenha esses elementos.

Uma das formas de fazer isso é utilizando a tag <div>. As divs são uma abreviação para division (divisão, em inglês) e são frequentemente utilizadas para agrupar e organizar o conteúdo de uma página HTML.

Esse agrupamento é importante porque podemos utilizá-los para criar pontos de referência para estilizarmos com o CSS. Por exemplo, podemos aplicar a cada uma das divs uma classe correspondente que receberá um estilo próprio dentro do arquivo CSS.

Então, vamos começar agrupando cada parte da nossa página dentro de uma div específica.

<body>
    <form action="">
      <h1>Faça o seu login</h1>
      <div>
        <label for="email">Seu e-mail*</label>
        <input type="email" id="email" />
      </div>
      <div>
        <label for="password">Sua senha*</label>
        <input type="password" id="password" />
      </div>
      <div>
        <input type="checkbox" />
        <p>Lembrar-me</p>
      </div>
      <button>Entrar</button>
      <p>
        Esqueceu sua senha?
        <a href="https://www.hashtagtreinamentos.com/">Clique aqui!</a>
      </p>
    </form>
  </body>

Agora, cada parte da nossa página está agrupada dentro de uma div, o que nos permitirá estilizá-las de forma mais eficiente usando CSS.

Estilizando com CSS – Linkando HTML e CSS

Para começarmos a estilizar nossa página, o primeiro passo é vincular nosso arquivo CSS ao arquivo HTML. Para isso, dentro da tag <head> do nosso documento HTML, vamos criar um link com o arquivo CSS usando a tag <link>.

Nesse link, definiremos o atributo rel com o valor “stylesheet”, indicando que este é um recurso de estilização. O atributo href receberá o caminho para o arquivo CSS.

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Página de Login</title>
    <link rel="stylesheet" href="style.css" />
  </head>

Feito isso, as edições que fizermos no arquivo style.css serão refletidas em nossa página.

Estilização Padrão no CSS – Seletor Universal

Existem algumas edições padrões do CSS que frequentemente precisamos ajustar nos documentos quando estamos trabalhando com HTML e CSS.

A primeira delas é referente ao espaçamento externo e interno dos elementos. Por padrão, os elementos do HTML já vêm com uma formatação prévia que não iremos utilizar, então precisamos zerar esses valores.

Para zerar esse espaçamento, vamos utilizar o seletor universal *. Esse seletor seleciona todos os elementos da página, permitindo aplicar a estilização a todos eles de uma vez.

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

A propriedade margin é responsável pelo espaçamento externo de um elemento, o padding pelo espaçamento interno, e a box-sizing pelo cálculo do tamanho total dos elementos.

A propriedade box-sizing determina como o tamanho total do elemento é calculado. Por padrão, essa propriedade tem o valor de content-box, em que o padding e a border são adicionadas ao tamanho do elemento.

Por exemplo, um elemento de 400px de largura, com 20px de padding e 10px de border terá um tamanho final de 460px.

* {
  margin: 0;
  padding: 0;
  box-sizing: content-box;
}

body{
  width: 400px;
  padding: 20px;
  border: solid 10px black;
}

box-sizing

Quando definimos essa propriedade como border-box, ela inclui o padding e a border ao valor do elemento.

Nesses casos, o navegador considerará que dentro dos 400px do elemento, temos 20px para o padding e 10px para a border, deixando o conteúdo do elemento em si com 340px.

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body{
  width: 400px;
  padding: 20px;
  border: solid 10px black;
}

box-sizing

Essa abordagem nos ajuda a ter um controle maior sobre o layout da página e será muito útil para criarmos nosso layout responsivo.

Obs.: A margin nunca fará parte do cálculo do tamanho do elemento.

Essa estilização do body foi adicionada apenas para exemplificar a diferença entre o border-box e o content-box. Podemos remover essa estilização, deixando nosso CSS assim:

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

Com a margin e o padding zerados, podemos começar a estilizar nossa página.

Estilizando a Fonte – CSS

Vamos começar estilizando a fonte da nossa página, definindo a família dela e a cor. Faremos isso dentro do seletor de body.

body{
  font-family: "Montserrat";
  color: #404040;
}

Estilizando a Fonte – CSS

Essas propriedades que passamos para o seletor do body fazem com que todos os elementos presentes dentro dele herdem essa estilização.

Sendo assim, dentro do seletor h1, só precisaremos ajustar o tamanho da fonte do título, porque a família da fonte e a cor ele já terá herdado.

body{
  font-family: "Montserrat";
  color: #404040;
}

h1 {
  font-size: 24px;
}

Agora, nossa página terá a fonte Montserrat e a cor da fonte #404040 aplicadas em todo o conteúdo, e p título <h1> terá o tamanho de fonte de 24 pixels.

Centralizar Elementos – Flexbox

Para centralizar nosso formulário dentro do body, podemos utilizar a propriedade do Flexbox.

Para isso, precisamos transformar o body da nossa página em um contêiner flex, definindo a propriedade display dele como flex.

body{
  font-family: "Montserrat";
  color: #404040;
  display: flex;
}

Dessa forma, temos uma maneira fácil e prática de organizar, alinhar e distribuir os elementos dentro do nosso body.

Isso é importante para o layout flexível, pois, independentemente da posição ou tamanho da janela, podemos manter nosso formulário centralizado.

Ao transformar um elemento em um flex container, podemos usar a ferramenta do desenvolvedor para abrir o Flexbox Editor.

Flexbox Editor

Esse editor nos permite alterar várias propriedades do nosso flexbox, visualizando as transformações diretamente na página antes de implementá-las em nosso código.

Opções Flexbox Editor

Dentre essas propriedades, temos:

  • flex-direction: define a direção principal em que os itens são colocados dentro do flex contêiner.
  • flex-wrap: controla se os itens flexíveis devem ser dispostos em uma única linha ou várias linhas.
  • align-content: define o alinhamento vertical dos elementos dentro do elemento pai.
  • justify-content: controla o alinhamento horizontal dos elementos dentro do contêiner

Você pode testar cada uma dessas opções para se familiarizar e visualizar como cada uma altera o layout da nossa página. Para o nosso projeto utilizaremos apenas as propriedades justify-content e align-items.

Porém, para que possamos visualizar corretamente essas edições sendo aplicadas em nossa página, precisamos definir a altura do body como sendo de 100vh (viewport height), fazendo com que o corpo da nossa página ocupe 100% da altura total da tela.

body{
  font-family: "Montserrat";
  color: #404040;
  display: flex;
  height: 100vh;
}

Feito isso, podemos definir os valores para o justify-content e o align-items como center. Após fazer as alterações no Flexbox Editor, basta copiá-las para dentro do CSS no VS Code.

body{
  font-family: "Montserrat";
  color: #404040;
  display: flex;
  height: 100vh;
  justify-content: center;
  align-items: center;
}

Com isso, nosso formulário ficará totalmente centralizado na tela, tanto na vertical quanto na horizontal.

Para visualizarmos essa alteração, podemos definir a propriedade background-color para o seletor do body como sendo marrom e criar um seletor para o nosso formulário, definindo a background-color dele como branca.

body{
  font-family: "Montserrat";
  color: #404040;
  display: flex;
  height: 100vh;
  justify-content: center;
  align-items: center;
  background-color: brown;
}

form {
  background-color: white;
}

Visualizando a página

Espaçamento Interno no CSS

O próximo passo será adicionarmos um espaçamento interno (padding) aos elementos da nossa página para uma melhor visualização deles.

Vamos definir o seletor para o formulário e ajustar a propriedade padding dele para 50px. Quando passamos um único valor para o padding, estamos definindo que esse valor deve ser aplicado em todas as direções do elemento.

No entanto, também podemos definir dois valores, em que o primeiro será aplicado em cima e o segundo embaixo. Ou quatro valores, em que serão aplicados na ordem: cima, direita, baixo e esquerda.

Para o nosso projeto, vamos manter com 50px para todos os lados.

form {
  padding: 50px;
  background-color: white;
}

Espaçamento Interno no CSS

Assim, nosso formulário terá um espaçamento interno de 50 pixels em todas as direções, garantindo uma melhor visualização e espaçamento entre os elementos.

Arredondar Elementos no CSS

Agora precisamos arredondar os cantos do nosso formulário. Para isso, vamos usar a propriedade border-radius, definindo o valor de 30px.

form {
  background-color: white;
  padding: 50px;
  border-radius: 30px;
}

Arredondar Elementos no CSS

Barra Horizontal

Vamos adicionar a nossa barra horizontal abaixo do título do formulário. Para isso, primeiro vamos adicionar uma div ao nosso HTML. Essa div terá o atributo class igual a barra-horizontal.

<body>
    <form action="">
      <h1>Faça o seu login</h1>
      <div class="barra-horizontal"></div>

Com a <div> criada dentro do HTML, o próximo passo será estilizá-la. Para selecionar um elemento no CSS pela classe, utilizamos o ponto antes do nome da classe. Para esse seletor, vamos definir a cor de fundo, a altura (height) e a largura (width).

.barra-horizontal {
  background-color: #f87842;
  height: 5px;
  width: 210px;
}

Barra Horizontal

Estilizando os Elementos do Formulário

Para editarmos os campos dos formulários, primeiro, vamos atribuir uma classe à <div> que eles estão contidos dentro do nosso HTML.

Para os campos de e-mail e senha, vamos atribuir a classe campo-input. E para a checkbox, a classe lembrar-me.

<div class="campo-input">
        <label for="email">Seu e-mail*</label>
        <input type="email" id="email" />
      </div>
      <div class="campo-input">
        <label for="password">Sua senha*</label>
        <input type="password" id="password" />
      </div>
      <div class="lembrar-me">
        <input type="checkbox" />
        <p>Lembrar-me</p>
      </div>

Feito isso, podemos estilizar esses elementos usando o seletor de classe.

Começando pelo nosso campo-input, vamos converter essas duas divs em um flex container. Dessa forma, podemos ajustar a posição e o alinhamento dos nossos labels e dos nossos campos de input.

Para posicioná-los um sobre o outro, vamos utilizar a propriedade flex-direction com o valor de column. Além disso, vamos definir o espaçamento entre esses elementos através da propriedade gap, ajustando o valor para 5px.

Definir um valor único para o gap nos permite criar um espaçamento uniforme entre os elementos dentro de um flex contêiner.

.campo-input {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

O próximo passo será deixar a nossa checkbox posicionada ao lado do parágrafo “Lembrar-me”.

Para isso, basta transformar a <div> em que eles estão contidos em um flex container. Por padrão, os elementos em um container flex são alinhados em linha. Além disso, vamos adicionar um espaçamento entre eles de 5px.

.lembrar-me{
  display: flex;
  gap: 5px;
}

Dessa forma, nosso formulário ficará mais organizado.

Estilizando os Elementos do Formulário

Porém, para criar espaçamentos uniformes entre os elementos dentro do formulário, vamos transformar todo ele em um flex container, com as propriedades flex-direction igual a column e o gap com o valor de 25px.

form {
  background-color: white;
  padding: 50px;
  border-radius: 30px;
  display: flex;
  flex-direction: column;
  gap: 25px;
}

Estilizando os Elementos do Formulário

Porém, agora, nosso título e nossa barra horizontal ficaram muito distantes. Para diminuir o espaçamento entre eles, podemos agrupá-los em uma mesma div, assim eles serão tratados pelo formulário como um único elemento.

Vamos criar essa div e atribuir a classe titulo a ela.

<div class="titulo">
        <h1>Faça o seu login</h1>
        <div class="barra-horizontal"></div>
      </div>

Feito isso, podemos criar um seletor para essa classe, transformando essa div em um flex container e definindo o espaçamento desejado entre a barra e o título.

.titulo {
  display: flex;
  flex-direction: column;
  gap: 5px;
}

Estilizando os Elementos do Formulário

Formatando o Botão no CSS

Como nesse projeto só temos a presença de um único botão na página, utilizaremos o seletor de tag mesmo dentro do CSS. Em projetos maiores é recomendado que você defina uma classe para ele.

Dentro desse seletor teremos de fazer uma série de edições para chegarmos ao resultado desejado.

Começaremos definindo o espaçamento interno dele com um padding de 10px. Em seguida, vamos definir a largura do botão para 160px e a propriedade align-self como center, para centralizar o botão no formulário.

Para arredondar as bordas dele, utilizaremos a propriedade border-radius, com o valor de 30px.

Feito isso, vamos definir a cor de fundo do nosso botão. Como queremos um gradiente de cores e não apenas uma única cor sólida, utilizaremos a propriedade background-image. Para essa propriedade vamos definir a função linear-gradient, definindo a cor que ele irá começar e qual cor irá finalizar.

Em sequência vamos estilizar a borda do botão, passando a propriedade border, com os valores solid, para uma borda sólida, com espessura de 1px e a cor correspondente.

No entanto, queremos que a borda inferior e a borda direita sejam maiores, criando um efeito visual em nosso botão. Para esse efeito, vamos definir as propriedades border-right-width e border-bottom-width com o valor de 4px.

Por fim, vamos personalizar o texto do nosso botão, definindo a cor (color), o tamanho da fonte (font-size), o peso da fonte (para deixar a fonte em negrito) e definir todas as letras do texto em maiúscula com a propriedade text-transform.

button {
  padding: 10px;
  align-self: center;
  width: 160px;
  border-radius: 30px;
  background-image: linear-gradient(#256a8a, #3393c1);
  border: solid 1px #256a8a;
  border-right-width: 4px;
  border-bottom-width: 4px;
  font-size: 16px;
  color: white;
  text-transform: uppercase;
  font-weight: 700;
}

Formatando o Botão no CSS

Formatação dos Inputs

Com nosso botão pronto, vamos estilizar nossos campos de input através do seletor de tag input.

Para eles vamos definir um padding de 10px em cima e embaixo e 20px para os lados, arredondar os cantos (border-radius), remover a borda (border: none) e definir a cor de fundo.

input {
  padding: 10px 20px;
  border-radius: 10px;
  border: none;
  background-color: #f1f1f1;
}

Formatação dos Inputs

Formatação da Âncora

Vamos ajustar o link dentro do nosso formulário, ou seja, vamos estilizar a nossa âncora. Para isso, podemos utilizar o seletor para a tag <a> e definir a cor dela e o peso da fonte.

a {
  color: rgb(0, 174, 255);
  font-weight: 500;
}

Formatação da Âncora

Com essa estilização, nosso formulário está bem ajustado e semelhante ao exemplo que temos no gabarito. Agora, só precisamos adicionar uma imagem de fundo na página para finalizar.

Imagem de Fundo no CSS

Para adicionar e ajustar a imagem de fundo da nossa página de login em HTML e CSS, vamos definir as propriedades background-image, background-size e background-position, dentro do seletor do body.

Com a propriedade background-image, definimos a imagem de fundo, passando para ela a URL com o caminho para a imagem. Esse caminho pode ser tanto um site quanto o diretório local no computador, que é o que utilizaremos aqui.

Em seguida, com a propriedade background-size, configuramos o valor para cover, para que a imagem ocupe todo o espaço disponível. Por fim, com a propriedade background-position, centralizamos a imagem.

body{
  font-family: "Montserrat";
  color: #404040;
  display: flex;
  height: 100vh;
  justify-content: center;
  align-items: center;
  background-color: brown;
  background-image: url(imagem-fundo.png);
  background-size: cover;
  background-position: 50%;
}

Ao definir o valor de background-position como 50%, estamos alinhando a nossa imagem tanto horizontalmente quanto verticalmente, com a metade da tela.

Formulário de Login em HTML e CSS Pronto

Isso garante que a imagem de fundo seja exibida de forma adequada, preenchendo todo o espaço disponível.

Ajustes Finais

Os últimos ajustes que podemos fazer são adicionar um padding ao body de 20px. Assim, independentemente da resolução da tela, nosso formulário não irá encostar nos cantos da tela.

body{
  font-family: "Montserrat";
  color: #404040;
  display: flex;
  height: 100vh;
  justify-content: center;
  align-items: center;
  background-color: brown;
  background-image: url(imagem-fundo.png);
  background-size: cover;
  background-position: 50%;
  padding: 20px;
}

E por fim, podemos definir uma classe para o parágrafo “Esqueceu sua senha?”.

<p class="esqueceu-senha">
        Esqueceu sua senha?
        <a href="https://www.hashtagtreinamentos.com/">Clique aqui!</a>
      </p>

Com a classe criada, podemos alterar a propriedade text-align dela dentro do CSS, definindo o valor de center. Dessa forma, o texto sempre ficará centralizado.

.esqueceu-senha {
  text-align: center;
}

Formulário de Login em HTML e CSS Pronto e Responsivo

Com esses ajustes finais, nosso formulário está pronto e totalmente estilizado, pronto para ser usado e integrado em seus projetos.

Conclusão – Formulário de Login em HTML e CSS – Criando seu Projeto

Nesta aula, você aprendeu a criar um formulário de login em HTML e CSS do zero! Desenvolvemos um projeto completo, passo a passo, exercitando e aprendendo diversos conceitos e conhecimentos sobre essas duas linguagens.

Além de ser um ótimo projeto para você desenvolver e aprimorar suas habilidades em HTML e CSS, essa página de login pode ser facilmente integrada em seus futuros projetos. É também uma excelente maneira de estudar e praticar essas duas linguagens essenciais para o desenvolvimento web.

Hashtag Treinamentos

Para acessar publicações de HTML e CSS, clique aqui!


Quer aprender mais sobre HTML e CSS com um minicurso básico gratuito?

Quer sair do zero no Python e virar uma referência na sua empresa? Inscreva-se agora mesmo no Python Impressionador