3
respostas

Mesmo com o código certo o banner não fica centralizado acima dos outros elementos.

.menu {
display: flex;
justify-content: space-evenly;
align-items: center;
flex-wrap: wrap;
column-gap: 33px;
}

3 respostas

Oi, Augusto, tudo bem?

Pelo código CSS que você enviou, a estrutura do .menu parece correta de acordo com a aula. No entanto, o comportamento do Flexbox (especialmente o flex-wrap e o alinhamento) depende muito da estrutura do seu HTML e das larguras definidas nos elementos filhos.

Para eu te ajudar de forma mais assertiva e entender por que o banner não está centralizando, poderia compartilhar essas duas informações?

  1. O seu código HTML completo (principalmente a parte do <header> e <nav>).
  2. Um print da sua tela mostrando como o projeto está ficando no seu navegador.

Uma dica rápida: Verifique se você redimensionou a janela do navegador para o tamanho de celular correto (ou usou o inspecionar elemento). O flex-wrap só "quebra" a linha e centraliza o topo se não houver espaço suficiente na lateral para todos os itens ficarem juntos.

Fico no aguardo do seu código e do print para resolvermos isso juntos!

Bons estudos!

Sucesso

Imagem da comunidade

Oi Victor, tudo bem! O código eu peguei no github... https://github.com/alura-cursos/culturama/tree/e8b36aa5679342f07f552370ae616e3475d41d13
fiz apenas as alterações que o curso pediu...
Aqui está print...Imagem do meu código que não deixa a responsibilidade perfeita.

"Uma dica rápida: Verifique se você redimensionou a janela do navegador para o tamanho de celular correto (ou usou o inspecionar elemento). O flex-wrap só "quebra" a linha e centraliza o topo se não houver espaço suficiente na lateral para todos os itens ficarem juntos."
Isso ai eu já sei... a quebra de linha da um pequeno bug não adequando corretamente a responsividade.bug dos elementos
Fico no aguardo da resposta, obrigado, abraço!

Olá, Augusto, tudo bem?

Observei pelos seus prints que você está testando a responsividade redimensionando a janela do navegador livremente.

Para seguir exatamente o resultado proposto na aula, a recomendação é utilizar o Inspecionar Elemento (DevTools) com a largura travada em 360px. Nessa medida, o layout ficará certinho.

Em larguras diferentes dessa (como os 400px ou 500px), o layout vai quebrar mesmo. Isso acontece porque os elementos (links) estão soltos e independentes no HTML, então o Flexbox tenta acomodá-los onde dá.

Para resolver isso de vez e manter o projeto fiel ao design original (com o logo em cima e os links alinhados abaixo em telas menores), a solução mais robusta é agrupar os links. Assim, eles funcionam como um bloco único: ou cabem todos ao lado do logo, ou descem todos juntos.

Aqui está o passo a passo para ajustar seu código:

No HTML (index.html)

Vamos agrupar os três links (Programação, Categorias e Seu local) dentro de um único <li>. Além disso, vamos adicionar uma classe específica no link "Seu local" para garantir que o ícone apareça corretamente.

Substitua a seu <header> atual por esta:

<header>
        <nav>
            <ul class="menu">
                <li class="menu__item">
                    <a href="#" class="menu__titulo"></a>
                </li>

                <li class="menu__item menu__agrupado">
                    <a href="#">Programação</a>
                    <a href="#">Categorias</a>
                    <a href="#" class="menu__local">Seu local</a>
                </li>

                <li class="menu__item menu__pesquisar">
                    <input class="menu__input" type="search" placeholder="O que você procura?">
                </li>
            </ul>
        </nav>
    </header>

No CSS (flex.css)

Adicione o código abaixo ao final do seu arquivo ou depois da classe .menu. Ele vai configurar esse novo grupo para não quebrar internamente e além de outras regras que tive que mudar para não quebrar, assim vai garantir o alinhamento correto em dispositivos móveis.


.menu__agrupado {
    display: flex;
    gap: 15px;          
    flex-wrap: nowrap;   
}

.menu__agrupado a {
    text-decoration: none;
    color: #FFFFFF;
    white-space: nowrap;
}

.menu__local {
    display: flex;
    align-items: center;
}

.menu__local::before {
    content: "";
    display: inline-block;
    width: 24px;
    height: 24px;
    background-image: url('../img/icone-gps.png'); 
    background-repeat: no-repeat;
    background-position: center;
    margin-right: 8px;
}
.menu__titulo {
    display: block;  
    background-image: url("../img/logo-branco-maior.png");
    background-repeat: no-repeat;
    background-position: center;
    padding: 40px 100px;
    width: 100%;
    cursor: pointer;
}
.menu__local {
    display: flex;
    align-items: center;
    color: #FFFFFF;
    text-decoration: none;
    white-space: nowrap;
}

.menu__local::before {
    content: "";
    display: inline-block;
    width: 24px;
    height: 24px;
    background-image: url('../img/icone-gps.png');
    background-repeat: no-repeat;
    background-position: center;
    margin-right: 8px;
}


.menu__local::after {
    content: "";
    display: inline-block;
    width: 15px; 
    height: 15px;
    background-image: url('../img/icone-seta.png');
    background-repeat: no-repeat;
    background-position: center;
    margin-left: 8px; 
}

.menu__local:hover::before,
.menu__local:hover::after {
       opacity: 0.7; 
}
@media (max-width: 719px) {
    .menu {
        justify-content: center; 
        flex-wrap: wrap;       
        row-gap: 15px;           
    }
}

Resultado:


Resumo:
Com essa alteração, o navegador trata "Programação + Categorias + Seu local" como uma peça única. Em telas menores, esse bloco desce inteiro, mantendo o alinhamento centralizado e bonito, idêntico ao proposto no Figma do curso.

Faça essas alterações e me avise se funcionou!

Bons estudos!

Sucesso

Imagem da comunidade