1
resposta

Manipulando elementos da Navbar

Oi pessoal,

O meu toggler funcionou conforme o vídeo, mas eu queria ver se alguém pode me ajudar com algo a mais que estou tentando fazer em um outro projeto.

Eu tenho alguns elementos a mais no meu navbar (campo de pesquisa, ícone de login) que eu não quero que entrem no menu do toggler. Eu queria que no mobile, eles saíssem da navbar e fossem para o footer da minha página. Alguém tem alguma ideia de como eu poderia fazer isso? Seria necessário usar o Javascript pra alterar a estrutura dessa forma? Ou o bootstrap já teria alguma solução para isso?

Obrigado!

1 resposta

Oii Cassiano, tudo bem com você?

Peço desculpas pela demora em obter um retorno.

Primeiramente, parabéns por se desafiar a ir além do conteúdo da aula, afinal essa dedicação te impulsiona a consolidar os seus aprendizados e evoluir cada vez mais!

Nesse caso, uma opção seria, em seu arquivo .html, colocar todo o conteúdo que você deseja apresentar e então fazer a adaptação a diferentes telas (mobile e desktop) no CSS, através de Media Queries. Ficaria assim:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Projeto do Cassiano</title>
</head>
<body>
    <nav class="nav">
        <h1>Navbar</h1>
        <p class="conteudoDesktop">conteúdo que deve aparecer na navbar na versão desktop</p>
    </nav>
    <footer class="footer">
        <h2 >Footer</h2>
        <p class="conteudoMobile">conteúdo que deve aparecer no footer na versão mobile</p>
    </footer>
</body>
</html>

Ou seja, no arquivo .html nós adicionamos tudo aquilo que você quer que apareça tanto na versão desktop como na versão mobile. Então adaptamos o que irá aparecer na versão desktop e na versão mobile em seu arquivo .css. Primeiro definimos que na versão desktop, o conteúdo que vai ficar no footer na versão mobile deve desaparecer, por isso selecionamos a class conteudoMobile e aplicamos um display: none, da seguinte forma:

.conteudoMobile{
    display: none;
}

Depois, vamos atribuir que quando a visualização for mobile, o conteúdo que apareceria na navbar na versão desktop deve desaparecer e o conteúdo que está no footer aparece. Para isso usamos a Media Query, que define que quando a tela tiver até 425px,ou seja, em visualização mobile, o conteudoDesktop recebe um display: none e o conteudoMobile e recebe um display: flex , ficando assim:


@media (max-width: 425px){
    .conteudoDesktop{
        display: none;
    }

    .conteudoMobile{
        display: flex;
    }

}

Finalizado, seu arquivo .css terá uma estrutura semelhante a seguinte:


.conteudoMobile{
    display: none;
}

@media (max-width: 425px){
    .conteudoDesktop{
        display: none;
    }

    .conteudoMobile{
        display: flex;
    }

}

E já será possível ter duas visualizações diferentes do conteúdo para Desktop: Alt text: tela com visualização desktop em HTML com um fundo branco e texto em preto. Na primeira linha com um tamanho grande está escrito “Navbar”. Abaixo, na segunda linha, em texto de tamanho menor está escrito “conteúdo que deve aparecer na navbar na versão desktop” e na terceira linha, está escrito “Footer”, em letras maiores

E do conteúdo mobile:

Alt text: tela com visualização mobile em HTML com um fundo branco e texto em preto. Na primeira linha com um tamanho grande está escrito “Navbar”. Abaixo, na segunda linha, em texto de mesmo tamanho está escrito “Footer” e na terceira linha, está escrito “conteúdo que deve aparecer no footer na versão mobile”, em letras menores

Ainda, se quiser saber um pouco mais sobre o funcionamento das Media Queries, recomendo os seguintes conteúdos:

Espero ter solucionado sua questão.

Caso ainda tenha alguma dúvida, me coloco à disposição!

Grande abraço e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!