Implementação de uma página de formulário da Escola de Magia de Trybewarts, em que as pessoas estudantes poderão enviar seus feedbacks sobre ela. O tema desse projeto é baseado na obra 'Harry Potter', de J. K. Rowling, já que programar é o mais próximo que podemos chegar de algo verdadeiramente mágico!
Habilidades desenvolvidas
- HTML & CSS: Formulários;
- Bibliotecas JavaScript: Bootstrap;
- CSS Flexbox;
- Responsividade;
A barra deve possuir a classe header
, ser um flex container
e ter a cor de fundo rgb(50, 167, 145)
O que será testado:
- O elemento deve possuir a classe
header
; - O elemento deve possuir a propriedade CSS
display: flex
; - O elemento deve possuir a propriedade CSS
background-color: rgb(50, 167, 145)
.
O logotipo deve estar dentro do header
e ser um elemento img
- Crie uma tag
img
dentro do elemento com a classeheader
: - Adicione a classe
trybewarts-header-logo
; - Adicione o atributo
src
com o valorimages/trybewarts-header-logo.svg
;
O que será testado:
- O elemento
img
deve possuir a classetrybewarts-header-logo
; - O elemento
img
deve possuir o atributosrc
apontando paraimages/trybewarts-header-logo.svg
.
Crie um formulário de login com os inputs de email
, senha
e um botão para login. O formulário deve estar posicionado à direita da logo;
O botão deve validar os dados inseridos no formulário de forma que um alerta seja disparado quando o email e a senha forem corretos, e outro alerta seja disparado quando os inputs email ou senha estiverem incorretos.
-
Crie um formulário com a classe
trybewarts-login
; -
Crie o input de email dentro do formulário:
- Adicione o atributo
name
com o valor email; - Adicione o atributo
placeholder
com o valor Email;
- Adicione o atributo
-
Crie o input de senha dentro do formulário:
- Adicione o atributo
name
com o valor password; - Adicione o atributo
placeholder
com o valor Senha;
- Adicione o atributo
-
Crie um botão com o texto "Entrar";
- Faça com que o formulário seja um flex container;
- Faça com que o formulário fique à direita da logo;
-
Valide o formulário:
- Ao preencher o formulário e clicar no botão, será validado que:
- Caso o email seja "tryber@teste.com" e a senha seja "123456", será emitido um alerta contendo o texto "Olá, Tryber!";
- Em todos os outro casos deverá ser emitido um alerta contendo o texto "Email ou senha inválidos.";
De olho na dica 👀: adicione a propriedade flex
que faz os elementos terem o espaçamento máximo entre eles no header
O que será testado:
- O formulário deve possuir a
tag
form
e classetrybewarts-login
; - O formulário possui a propriedade CSS
display: flex
; - O formulário está à direita da logo;
- Um dos inputs deve possuir o atributo
name
com valor igual a email e o atributoplaceholder
com valor igual a Email; - Um dos inputs deve possuir o atributo
name
com valor igual a password e oplaceholder
com valor igual a Senha; - O botão deve possuir o texto
Entrar
; - O botão de login deve disparar um
alert
com o textoEmail ou senha inválidos
, no caso de erro de preenchimento dos dados; - O botão de login deve disparar um
alert
com o textoOlá, Tryber!
, no caso de preenchimento correto dos dados.
Deve existir um elemento h1
com o texto Trybewarts, posicionado no meio do cabeçalho. Será necessário criar três elementos filhos para diagramar o cabeçalho
-
Crie a tag
h1
com oid
igual atrybewarts-header-title
; -
O título
h1
deverá ter o texto "Trybewarts"; -
O título deverá estar no meio da barra verde:
- O header deve ter exatamente três elementos filhos;
- O filho do meio deve ser o título;
O que será testado:
- O
h1
deve possuirID
igual atrybewarts-header-title
e com o textoTrybewarts
; - O elemento com a classe
header
deve possuir exatos3
elementos filhos; - O filho do meio do elemento com a classe
header
deve ser o títuloh1
com o textoTrybewarts
.
Crie um formulário dentro de uma tag main
. Ambos, formulário e tag main
devem ser flex containers
e a largura do formulário deve ser de 675px
- Crie um formulário com o
ID
igual aevaluation-form
; - Insira o formulário dentro de uma tag
main
; - Faça com que o formulário seja um
flex container
; - Faça com que o
main
, seja umflex containers
; - Adicione uma largura de
675px
ao formulário.
O que será testado:
- O elemento
form
deve possuir oID
igual aevaluation-form
; - O elemento
form
deve estar dentro da tagmain
; - O elemento
main
e oform
deve possuir a propriedade CSSdisplay: flex
; - O elemento
form
deve possuir a propriedade CSSwidth: 675px
.
A direção dos itens do formulário com o ID
igual a evaluation-form
devem estar na vertical, em coluna.
O que será testado:
- O elemento
evaluation-form
deve possuir a propriedade CSSflex-direction: column
.
Crie um elemento com a tag img
e modifique sua altura para 500px
- Crie um elemento
img
com oID
igual atrybewarts-forms-logo
; - Adicione o atributo
src
com o valorimages/trybewarts-colored.svg
; - Adicione o estilo css
height
de500px
;
O que será testado:
- O elemento
img
deve possuir oID
igual atrybewarts-forms-logo
; - O elemento
img
deve possuir o atributosrc
com o valorimages/trybewarts-colored.svg
; - O elemento
img
deve possuir o estilo cssheight
de500px
.
Dentro do formulário adicione os inputs de nome
, sobrenome
e email
-
Crie um input com o
ID
igual ainput-name
:- Adicione o atributo
placeholder
com o valorNome
;
- Adicione o atributo
-
Crie um input com o
ID
igual ainput-lastname
:- Adicione o atributo
placeholder
com o valorSobrenome
;
- Adicione o atributo
-
Crie um input com o
ID
igual ainput-email
:- Adicione o atributo
placeholder
com o valorEmail
.
- Adicione o atributo
O que será testado:
- O input para nome deve possuir o
ID
igual ainput-name
e placeholderNome
; - O input para sobrenome deve possuir o
ID
igual ainput-lastname
e placeholderSobrenome
; - O input para email deve possuir o
ID
igual ainput-email
e placeholderEmail
.
O formulário deve possuir um input tipo select
, com as opções Gitnória
, Reactpuff
, Corvinode
e Pytherina
- Crie um
select
com oID
igual ahouse
; - Adicione ao
select
:- A opção
Gitnória
com oID
igual agitnoria-house
e o atributovalue
igual aGitnória
; - A opção
Reactpuff
com oID
igual areactpuff-house
e o atributovalue
igual aReactpuff
; - A opção
Corvinode
com oID
igual acorvinode-house
e o atributovalue
igual aCorvinode
; - A opção
Pytherina
com oID
igual apytherina-house
e o atributovalue
igual aPytherina
.
- A opção
O que será testado:
- O
select
deve possuirID
igual ahouse
; - O
select
deve possuir 4 opções; - Uma das opções deve possuir
text
evalue
igual aGitnória
eID
igual agitnoria-house
; - Uma das opções deve possuir
text
evalue
igual aReactpuff
eID
igual areactpuff-house
; - Uma das opções deve possuir
text
evalue
igual aCorvinode
eID
igual acorvinode-house
; - Uma das opções deve possuir
text
evalue
igual aPytherina
eID
igual apytherina-house
;
Os campos de Nome
e Sobrenome
devem estar lado a lado, com o campo de Sobrenome
à direita
O que será testado:
- O campo de
Sobrenome
deve estar à direita do campo deNome
.
Os campos de Email
e Casa
devem estar lado a lado, com o campo de Casa
à direita
O que será testado:
- O campo de
Casa
deve estar à direita do campo deEmail
.
O formulário deve possuir um campo de entrada com 3 inputs, um abaixo do outro, do tipo radio
para que a pessoa estudante escolha com qual família mais se identifica.
-
Crie uma
label
com oID
igual alabel-family
e acrescente o texto "Qual sua família?"; -
Adicione ao formulário os seguintes elementos:
- um
input
do tiporadio
com o atributoname
igual afamily
evalue
igual aFrontend
; - um
input
do tiporadio
com o atributoname
igual afamily
evalue
igual aBackend
; - um
input
do tiporadio
com o atributoname
igual afamily
evalue
igual aFullStack
;
- um
-
Posicione os
radio buttons
para ficar abaixo um do outro e na sequência: Frontend, Backend e FullStack; -
Posicione os radio buttons abaixo da
label
.
O que será testado:
- O elemento
label
com oid
igual alabel-family
deve possuir o conteúdo de texto igual aQual sua família?
; - O primeiro
input
deve possuir o tiporadio
com o atributoname
igual afamily
evalue
igual aFrontend
; - O segundo
input
deve possuir o tiporadio
com o atributoname
igual afamily
evalue
igual aBackend
; - O terceiro
input
deve possuir o tiporadio
com o atributoname
igual afamily
evalue
igual aFullStack
; - Os inputs do tipo
radio
devem estar um abaixo do outro na sequênciaFrontend
,Backend
eFullStack
. - Os inputs do tipo
radio
devem estar abaixo do texto dalabel
Os campos de entrada do tipo checkbox
devem conter seis opções: Hofs, Jest, Promises, React, SQL, Python
com a classe subject
estando abaixo de uma label com ID
igual a Qual conteúdo você está com mais vontade de aprender?
- Crie um elemento com o
id
igual alabel-content
e acrescente o texto "Qual conteúdo você está com mais vontade de aprender?"; - Crie um input do tipo
checkbox
com a classesubject
e ovalue
igual aHoFs
; - Crie um input do tipo
checkbox
com a classesubject
ovalue
igual aJest
; - Crie um input do tipo
checkbox
com a classesubject
ovalue
igual aPromises
; - Crie um input do tipo
checkbox
com a classesubject
ovalue
igual aReact
; - Crie um input do tipo
checkbox
com a classesubject
ovalue
igual aSQL
; - Crie um input do tipo
checkbox
com a classesubject
ovalue
igual aPython
; - Posicione as checkboxes abaixo da label.
O que será testado:
- O elemento
label
deve possuir oID
igual alabel-content
com conteúdo de texto igual aQual conteúdo você está com mais vontade de aprender?
; - O primeiro
input
do tipocheckbox
deve possuir a classesubject
e o atributovalue
igual aHoFs
; - O segundo
input
do tipocheckbox
deve possuir a classesubject
e o atributovalue
igual aJest
; - O terceiro
input
do tipocheckbox
deve possuir a classesubject
e o atributovalue
igual aPromises
; - O quarto
input
do tipocheckbox
deve possuir a classesubject
e o atributovalue
igual aReact
; - O quinto
input
do tipocheckbox
deve possuir a classesubject
e o atributovalue
igual aSQL
; - O sexto
input
do tipocheckbox
deve possuir a classesubject
e o atributovalue
igual aPython
; - Os elementos
checkbox
então posicionados abaixo da label.
O campo deve possuir 10 inputs do tipo radio
para avaliar de 1 a 10 o nível de satisfação com a Trybewarts. Estes inputs devem ficar abaixo de uma label
com texto Como você avalia a Trybewarts?
e devem estar posicionados lado a lado.
-
Crie uma
label
com oID
igual alabel-rate
e acrescente o texto "Como você avalia a Trybewarts?"; -
Crie 10
radio buttons
, contendo as opções de 1 a 10:- Adicione o atributo
value
com o valor de 1 a 10; - Adicione ao atributo
name
dosradios buttons
o valorrate
;
- Adicione o atributo
-
Posicione os
radio buttons
de modo que fiquem lado a lado.
O que será testado:
- O elemento
label
deve possuir oID
igual alabel-rate
e o conteúdo de textoComo você avalia a Trybewarts?
; - Os 10
radio-buttons
devem possuir o atributoname
igual arate
; - Os 10
radio-buttons
devem possuir o atributovalue
de 1 a 10. - Os 10
radio-buttons
devem estar posicionados lado a lado.
Crie uma textarea
com número máximo de caracteres igual à 500 abaixo de um label
com texto Deixe seu comentário:
- Crie uma
textarea
; - Crie uma label com a classe
textarea
e que possua o texto "Deixe seu comentário:"; - Adicione ao elemento
textarea
o limite de 500 caracteres.
O que será testado:
- O elemento
label
deve possuir a classetextarea
e o textoDeixe seu comentário:
; - O elemento
textarea
deve possuir um limite de 500 caracteres.
Adicione um campo de entrada do tipo checkbox
ao lado direito de uma label
com texto "Você concorda com o uso das informações acima?"
- Crie um campo de entrada do tipo
checkbox
com oID
igual aagreement
; - Crie uma label com o
ID
igual alabel-infos
e que possua o texto "Você concorda com o uso das informações acima?"; - Posicione o
checkbox
ao lado da label.
O que será testado:
- O elemento label deve possuir o
ID
igual alabel-infos
e texto igual aVocê concorda com o uso das informações acima?
; - O input deve ser do tipo
checkbox
comID
igual aagreement
.
Crie um botão do tipo submit
com o texto Enviar
para submeter o formulário.
- Crie um botão do tipo
submit
com oID
igual asubmit-btn
; - Adicione o texto "Enviar" ao botão.
O que será testado:
- O botão deve possuir tipo
submit
- O botão deve possuir id
submit-btn
- O botão deve possuir o texto
Enviar
;
Faça com que o botão seja habilitado ou desabilitado de acordo com o checkbox
criado.
- Desabilite o botão caso o
checkbox
não esteja selecionado; - Habilite o botão caso o
checkbox
seja selecionado.
O que será testado:
- O botão deve estar inicialmente desabilitado;
- O botão deve se tornar habilitado ao marcar o
checkbox
comid
igual aagreement
;
O rodapé deverá conter a tag footer
e texto "Direitos reservados à Trybewarts©"
O que será testado:
- O elemento
footer
deve possuir o textoDireitos reservados à Trybewarts©
.
O contador deve possuir o número de caracteres, que deverá ser atualizado à medida que algo for digitado na textarea
. O valor deve ser inicialmente de 500
e decrementar até 0
a medida que algo for escrito, ou incrementar à medida que caracteres forem sendo apagados.
- Crie o contador e adicione o
ID
igual acounter
; - Adicione ao contador o valor inicial de
500
:- O contador deve variar entre
500
caracteres e0
;
- O contador deve variar entre
- Decremente o contador à medida que caracteres forem sendo escritos no campo
textarea
; - Incremente o contador à medida que caracteres forem sendo deletados no campo
textarea
; - Adicione ao elemento
textarea
oID
igual atextarea
.
O que será testado:
- O contador deve possuir
ID
igual acounter
; - O contador deve possuir valor inicial igual a
500
; - O elemento de
classe
textarea
deve possuir umID
de mesmo nome; - O contador deve ter seu valor atualizado conforme a pessoa usuária acrescente ou apague caracteres no elemento de
ID
textarea
.
Faça com que, ao clicar no botão Enviar
, o formulário seja substituído pelas informações preenchidas pela pessoa estudante.
- Crie um elemento com
ID
igual aform-data
e dentro dele:- Crie um campo que vai receber o nome digitado pela pessoa usuária, no formato
Nome: Alguem Aqui
; - Crie um campo que vai receber o email digitado pela pessoa usuária, no formato
Email: email@mail.com
; - Crie um campo que vai receber a casa escolhida pela pessoa usuária, no formato
Casa: Casa Escolhida
; - Crie um campo que vai receber a família selecionada pela pessoa usuária, no formato
Família: Família Escolhida
; - Crie um campo que vai receber os conteúdos selecionados pela pessoa usuária, no formato
Matérias: Matérias, Marcadas, Aqui
;
- Crie um campo que vai receber o nome digitado pela pessoa usuária, no formato
De olho na dica 👀 : os conteúdos devem estar separados por uma vírgula e um espaço
- Crie um campo que vai receber a avaliação selecionada pela pessoa usuária, no formato
Avaliação: NotaAqui
; - Crie um campo que vai receber o comentário digitado pela pessoa usuária, no formato
Observações: Observações aqui
. - Substitua os campos do formulário pelas informações da pessoa usuária;
O que será testado:
- O elemento de tag
form
comID
igual aform-data
deve ser exibido na tela após o botão de enviar ser clicado; - Um dos campos criados deve possuir um texto no formato
Nome: -Nome- -Sobrenome-
após o botão de enviar ser clicado; - Um dos campos criados deve possuir um texto no formato
Email: -Email-
após o botão de enviar ser clicado; - Um dos campos criados deve possuir um texto no formato
Casa: -Casa-
após o botão de enviar ser clicado; - Um dos campos criados deve possuir um texto no formato
Família: -Família-
após o botão de enviar ser clicado; - Um dos campos criados deve possuir um texto no formato
Matérias: -Matérias Selecionadas-
após o botão de enviar ser clicado; - Um dos campos criados deve possuir um texto no formato
Avaliação: -Avaliação-
após o botão de enviar ser clicado; - Um dos campos criados deve possuir um texto no formato
Observações: -Observações-
após o botão de enviar ser clicado;
Realize o desenvolvimento da versão mobile do formulário Trybewarts
- Utilize media queries para inserir breakpoints para telas de diferentes tamanhos;
- Leve em conta a largura da tela e a experiência do usuário ao reorganizar o layout para dispositivos menores;
- Tente inserir um 'menu hambúrguer' na barra superior para lidar com o login usando javascript. Se não conseguir, tente criar uma página separada de login, uma prática muito comum;
- Deixe sua criatividade fluir! Preferimos não avaliar esse requisito justamente pra que você tenha liberdade para executar a responsividade da maneira que você achar mais agradável!