Desenvolver um site que deve ser fiel ao design proposto no Figma colocando em prática o que aprendeu ao longo do módulo 2 desenvolvendo técnicas de React e Styled-Component, além de demonstrar as habilidades aprendidas no Módulo 1 como HTML, CSS e Git.
- Desenvolver uma aplicação web em React seguindo o modelo proposto no Figma.
- A estilização deve ser feita usando Styled-Component.
- Semântico: Utilizar as tags de maneira apropriada, garantindo que o conteúdo seja facilmente compreendido e acessível.
- Nomenclatura Coerente: Utilizar nomes que descrevam o papel ou a função visual do componente na interface.
- Um projeto React foi criado através do Vite.
- Foi deletado todos os arquivos de testes que o Vite cria normalmente.
- Criei o diretório
components
e dentro dele as pastasAbout
,Header
,Home
,News
e dentro de cada pasta os respectivos arquivos.jsx
. - Foram instalados os módulos Styled-Components e React Router.
- Adicionado as imagens a serem usadas que foram disponibilizadas no Figma.
- Criado os arquivos de estilos em suas respectivas pastas de componentes.
- Exportado as fontes de texto que serão usadas na
head
doindex.html
.
- No
App.jsx
foi importado os atributosBrowserRouter
,Route
eRoutes
dareact-router-dom
, os componentesHeader
,Home
,About
eNews
e oGlobalStyle
que será o reset de estilo da página. - Foi feito a exportação da função padrão
App()
retornando todos os componentes que serão renderizados. Retornando:- GlobalStyle: para indicar onde que ficação as rotas.
- Header: Para que seja renderizado o menu de navegação.
- Routes: Tag pai que acolherá as rotas em si.
- Route: Uma rota para cada caminho da página web.
- O reset global foi criado conforme o padrão exceto pela adição do atributo
overflow: hidden;
no body para que seja possível que o circulo de fundo fique escondido fora dos limites da página. Importante notar que como todas as páginas serão apenas um único tamanho não há nenhum problema em usar essa funcionalidade para toda a página, porém caso seja necessário adicionar rolagem em alguma página do site, este atributo deve ser revisado.
- Na Header foi usado o atributo
Link
dentro das<li>
para indicar a navegação e importado o arquivo de estilizaçãoheaderStyle.jsx
. - No arquivo de estilo foi usado flex box e um pouco de aninhamento pra manter o código limpo.
- O arquivo foi estilizado para ficar conforme o proposto no Figma, utilizando flexbox e resets para que fique o mais parecido possível.
- O arquivo foi iniciado com a exportação da função padrão
About()
retornando a tag<StyledAbout>
que foi importada do arquivo de estiloaboutStyle.jsx
. - Dentro dessa tag container é estruturado o html contendo os detalhes da página de acordo com o Figma.
- Para o botão foi optado por usar a tag
<button>
por ser mais semântica e atual. - Além da estilização conforme o Figma foi usado o pseudo-elemento
:hover
pra criar a aparência de um link clicável.
- Como a maior parte do estilo desta página já estava pronto no
About
foi reutilizado copiando a maior parte do código de estilo doaboutStyle.jsx
para onewsStyle.jsx
. - Foi adicionado o
background-color
e ajustado o tamanho da imagem.
- Na
Home.jsx
foi importado ouseState
ostyledHome
e as imagens que serão usadas nesta página. - Para esta página será usado o
useState
para fazer a animação do copo e do círculo colorido. - No caso do copo grande foi definido o copo laranja como padrão e no círculo foi delcarado a cor de fundo que será usado posteriormente.
- Como variáveis foram declaradas:
copo
esetCopo
como variáveis para alterar o estado da imagem de copo grande.bgColor
esetBgColor
const [copo, setCopo] = useState(laranjaG);
const [bgColor, setBgColor] = useState('#037143');
- Foram declarados 3 funções
verLaranja
,verVermelho
everAmarelo
que serão usadas pelo botão de mudar os copos grandes. - Cada uma dessas funções chamam uma arrow function que retorna e executa as alterações das respectivas imagens e cores de fundo do circulo.
const verLaranja = () => {
setCopo(laranjaG);
setBgColor("#037143");
};
-
Para o efeito das imagens que irão mudar conforme os botões são acionados foi declarado da seguinte forma:
<div id="circulo" style={{backgroundColor: bgColor}}> <img id="copoG" src={copo} alt="*" /> </div>
- Como a imagem do copo e o círculo ao fundo serão jogados para o canto da tela através de
position
na página de estilo, aqui eles recebem um id de forma a simplificar o código. - A tag
<div>
recebe os atributosid
, para que seja unicamente identificado, estyle
para que simplifique a lógica da função que mude a cor de fundo. Aqui o atributostyle
recebe a propriedadebackgroundColor
e é passado como parâmetro de cor a variávelbgColor
.
- Como a imagem do copo e o círculo ao fundo serão jogados para o canto da tela através de
-
Para a seção dos botões foi usado uma
<section>
com o idopcoes
e dentro dessa tag foi declarado todos botões utilizando o seguinte esquema:
<section id="opcoes">
<button className="amostras" onClick={verLaranja}>
<img src={laranjaP} alt="*" />
</button>
- Cada botão recebe o elemento
onClick
que chama a respectiva função para mudar o que seráexibido na amostra e a tag<img>
foi declarada usando as imagens que foram importada, desta forma a função pode alterar corretamente quando o botão for acionado. - O restante da pagina foi estruturado para seguir a ordem dos componentes de acordo com o Figma.
- Na estilização foi usado um pouco de aninhamento para manter o código limpo e direfente das outras páginas aqui foi necessário que o botão de SAIBA MAIS recebesse uma id para diferenciar dos botões que alteram a cor do copo no mostuário.
- No estilo do círculo colorido ao fundo do copo foi utilizado
position
ez-index
. - Como a imagem do copo já estava contida dentro da div do círculo não foi necessário utilizar position para puxar a imagem para o canto.
- Adicionado um texto
alt
em todas as imagens do site.