Solucionado (ver solução)
Solucionado
(ver solução)
5
respostas

[Bug] Menu não está clicavel

HTML

<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale-1.0">
        <title>AluraBooks</title>
        <link rel="preconnect" href="https://fonts.googleapis.com">
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
        <link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;700&family=Poppins:wght@300;400;500;700&display=swap" rel="stylesheet">
        <link rel="stylesheet" href="reset.css">
        <link rel="stylesheet" href="styles.css">
        
           

    </head>
    <body>  
        <header class="cabecalho">
            <div class="container">
                <input type="checkbox" id="menu" class="container__botao">
                <label for="menu">
            <span class="cabecalho__menu-hamburguer container__imagem"> </span>
                </label>
                <ul class="lista-menu">
                    <li class="lista-menu__titulo">Categorias</li>
                    <li class="lista-menu__item">
                        <a href="#" class="lista-menu__link">Programação</a></li>
                    <li class="lista-menu__item">
                        <a href="#" class="lista-menu__link">Front-end</a></li>
                    <li class="lista-menu__item">
                        <a href="#" class="lista-menu__link">Infraestrutura</a></li>
                    <li class="lista-menu__item">
                        <a href="#" class="lista-menu__link">Business</a></li>
                    <li class="lista-menu__item">
                        <a href="#" class="lista-menu__link">Design & UX</a></li>
                </ul>
            <img src="img/Logo.svg"alt="Logo da Alurabooks" class="container__imagem">
        </div>
        <div class="container">   
            <a href="#"><img src="img/Favoritos.svg" class="container__imagem"></a>
            <a href="#"><img src="img/Sacola.svg" class="container__imagem"></a>
            <a href="#"><img src="img/Usuario.svg" class="container__imagem"></a>
        </div>
        </header>

    </body>
</html>
5 respostas

HEADER.CSS

.cabecalho__menu-hamburguer {
    width: 24px;
    height: 24px;
    background-image:url("/img/Menu.svg");
    background-repeat: no-repeat;
    background-position: center;
    display: inline-block;

}

.cabecalho{
    background-color: var(--branco);
    display: flex;
    justify-content: space-between;
    align-items: center;
    position: relative;
}

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

.container__imagem{
    padding: 1em;
}

.lista-menu{
    display: none;
    position: absolute;
    top: 100%;
    width: 60vw;
}

.container__botao ~ .lista-menu {
    display: block;
}

.lista-menu__titulo,
.lista-menu__item {
    padding: 1em;
    background-color: var(--branco);
}

.lista-menu__titulo{
   color: var(--laranja);
   font-weight: 700;
}

.lista-menu__link{
    background: var(--azul-degrade);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    text-transform: uppercase;
}

.container__botao{
    display: none;
}

STYLES.CSS

@import url("styles/header.css");

:root{
    --cor-de-fundo: #EBECEE;
    /*--cor-de-fundo:d537a88 Luedji*/
    --branco: #FFFFFF;
    --laranja:#EB9B00; 
    --azul-degrade:linear-gradient(98deg, #002F52 35.49%, #326589 165.37%);
    --fonte-principal:"Poppins";
}
 
body{
    background-color: var(--cor-de-fundo);
    font-family: var(--fonte-principal);
    font-size: 16px;
    font-weight: 400;

}

solução!

Boa tarde, Dionisio. A única diferença que vejo entre seu código e o da aula é esse trecho do header.css

No deles

.container__botao:checked~.lista-menu {
    display: block;
}

E no seu

.container__botao ~ .lista-menu {
    display: block;
}

Olá Dionisio, tudo bem?

O código HTML e CSS que você compartilhou está relacionado ao cabeçalho (header) de uma página web. O objetivo é criar um menu hamburguer que seja acionado quando o usuário clica em um ícone.

O que parece estar acontecendo é que, embora você tenha implementado a estrutura para o menu hamburguer, ele não está funcionando como o esperado. Vamos analisar o código e propor algumas correções:

  1. HTML: Primeiramente, o HTML parece estar bem estruturado, mas há algumas melhorias que podem ser feitas. O uso de classes é apropriado para a estilização posterior em CSS.

  2. CSS: O CSS é onde encontramos o problema principal. Vou destacar algumas questões:

    • Problema 1 - Background do ícone do menu: No seu arquivo "header.css", você definiu o ícone do menu usando uma imagem de fundo. No entanto, não especificou o tamanho da div .cabecalho__menu-hamburguer, o que pode resultar em um elemento invisível ou muito pequeno para ser clicado.

    • Problema 2 - Menu não visível: Você definiu a classe .container__botao como display: none;. Isso faz com que o botão do menu hamburguer não seja visível.

    • Problema 3 - Estilos do menu: Você definiu a classe .lista-menu com display: none;, o que a torna inicialmente invisível. Para fazer o menu aparecer quando o botão do hamburguer for clicado, você precisa usar JavaScript ou CSS para controlar a visibilidade.

Aqui está uma solução possível para os problemas mencionados:

Problema 1 - Background do ícone do menu: Você pode adicionar largura e altura à classe .cabecalho__menu-hamburguer para tornar o ícone clicável:

.cabecalho__menu-hamburguer {
    width: 24px;
    height: 24px;
    /* Resto do seu código */
}

Problema 2 - Menu não visível: Remova a linha que oculta o botão do menu hamburguer:

.container__botao{
    /* display: none; Remova esta linha */
}

Problema 3 - Estilos do menu: Para tornar o menu visível quando o botão hamburguer é clicado, você pode usar CSS para mostrar/ocultar o menu. Vou lhe mostrar como fazer isso usando CSS puro:

/* Adicione esta parte no seu arquivo header.css */
.container__botao:checked ~ .lista-menu {
    display: block;
}

Com essas correções, o seu menu hamburguer deve funcionar como o esperado. Quando o botão do menu hamburguer é clicado, a lista de menu será exibida e oculta quando o botão for clicado novamente.

Lembrando que, se você deseja uma animação suave ao mostrar/ocultar o menu, pode adicionar transições de CSS para dar um efeito de deslize suave.

Espero que tenha te ajudado! Se tiver mais dúvidas ou precisar de mais ajuda, por favor, fique à vontade para perguntar.

Abraços e bons estudos!

Obrigado, agora está 100% funcional!