1
resposta

[Dúvida] quando coloco display: none, o menu para de ser clicavel

.cabecalho {
    background-color: var(--cor-principal);
    display: flex;
    justify-content: space-between;
    position: relative;

}
.cabecalho_menu-linha {
    background-image: url(../img/Menu.svg);
    background-repeat: no-repeat;
    background-position: center;
    display: inline-block;
    height: 1.5em;
    width: 1.5em;

}
.container {
    display: flex;
    align-items: center;
}
.container__botao {
    display: none;
}
.container__imagem {
    padding: 1em;
}
.lista-menu {
    display: none;
    position: absolute;
    top: 100%;
    width: 60vw;
}
.container__botao:checked ~ .lista-menu {
    display: block;
}
.lista-menu__titulo, .lista-menu__item {
    background-color: var(--cor-principal);
    padding: 1em;
}
.lista-menu__titulo{
    color: var(--cor-secundaria);
    font-weight: 700;
}
.lista-menu__link {
    background: var(--cor-degrade);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    text-decoration: none;
}
@import url(styles/header.css);

:root {
    --cor-do-fundo: #EBECEE;
    --cor-principal: #FFFFFF;
    --cor-secundaria: #EB9B00;
    --cor-degrade: linear-gradient(97.54deg, #002F52 35.49%, #326589 165.37%);

    --fonte-principal: "Poppins", sans-serif;
}
body {
    background-color: var(--cor-do-fundo);
    font-family: var(--fonte-principal);
    font-size: 1em;
    font-weight: 400;
}
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Alura Books</title>
    <link rel="stylesheet" href="reset.css">
    <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=Poppins:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header class="cabecalho">
        <div class="container">
            <input type="checkbox" id="menu" class="container__botao">
            <label for="">
                <span class="cabecalho_menu-linha 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">INSFRAESTRUTURA</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>
            <a class="container__imagem" href="index.html"><img src="img/Logo.svg" alt="logo da alura books"></a>
        </div>
        <div class="container">
            <a class="container__imagem" href="#"><img src="img/Favoritos.svg" alt="botao favoritos"></a>
            <a class="container__imagem" href="#"><img src="img/Compras.svg" alt="botão carrinho de compras"></a>
            <a class="container__imagem" href="#"><img src="img/Usuário.svg" alt="botão Usuário"></a>
        </div>
    </header>
</body>
</html>
1 resposta

O problema que você está enfrentando com o menu se torna "não clicável" quando está oculto com display: none é devido à natureza do CSS. Quando um elemento tem display: none, ele é completamente removido do fluxo do documento e não pode ser clicado ou interagido de nenhuma forma.

No seu código, a intenção parece ser exibir o menu quando o checkbox (input) é marcado. No entanto, há alguns ajustes necessários:

  1. O input do tipo checkbox precisa de um identificador único e o label deve estar associado ao input usando o atributo for.
  2. O CSS que mostra o menu quando o checkbox está marcado precisa estar correto.

Vou ajustar seu HTML e CSS para garantir que o menu se torne visível quando o checkbox é marcado:

HTML:

<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Alura Books</title>
    <link rel="stylesheet" href="reset.css">
    <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=Poppins:ital,wght@0,300;0,400;0,500;0,700;1,300;1,400;1,500;1,700&display=swap" rel="stylesheet">
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <header class="cabecalho">
        <div class="container">
            <input type="checkbox" id="menu" class="container__botao">
            <label for="menu">
                <span class="cabecalho_menu-linha 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>
            <a class="container__imagem" href="index.html"><img src="img/Logo.svg" alt="logo da alura books"></a>
        </div>
        <div class="container">
            <a class="container__imagem" href="#"><img src="img/Favoritos.svg" alt="botao favoritos"></a>
            <a class="container__imagem" href="#"><img src="img/Compras.svg" alt="botão carrinho de compras"></a>
            <a class="container__imagem" href="#"><img src="img/Usuário.svg" alt="botão Usuário"></a>
        </div>
    </header>
</body>
</html>

CSS:

.cabecalho {
    background-color: var(--cor-principal);
    display: flex;
    justify-content: space-between;
    position: relative;
}
.cabecalho_menu-linha {
    background-image: url(../img/Menu.svg);
    background-repeat: no-repeat;
    background-position: center;
    display: inline-block;
    height: 1.5em;
    width: 1.5em;
}
.container {
    display: flex;
    align-items: center;
}
.container__botao {
    display: none;
}
.container__imagem {
    padding: 1em;
}
.lista-menu {
    display: none;
    position: absolute;
    top: 100%;
    width: 60vw;
}
.container__botao:checked ~ .lista-menu {
    display: block;
}
.lista-menu__titulo, .lista-menu__item {
    background-color: var(--cor-principal);
    padding: 1em;
}
.lista-menu__titulo {
    color: var(--cor-secundaria);
    font-weight: 700;
}
.lista-menu__link {
    background: var(--cor-degrade);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    text-decoration: none;
}

@import url(styles/header.css);

:root {
    --cor-do-fundo: #EBECEE;
    --cor-principal: #FFFFFF;
    --cor-secundaria: #EB9B00;
    --cor-degrade: linear-gradient(97.54deg, #002F52 35.49%, #326589 165.37%);
    --fonte-principal: "Poppins", sans-serif;
}
body {
    background-color: var(--cor-do-fundo);
    font-family: var(--fonte-principal);
    font-size: 1em;
    font-weight: 400;
}

Com essas alterações, quando você clicar no ícone do menu, o menu deverá ser exibido.