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

Menu não funciona

Não aparece nenhum erro no console do JavaScript, porém o menu ainda não está funcionando, aliás por padrão ele está aberto dentro do botão com a classe "menu-fechar"

Código HTML

<header>
        <div class="container">

            <button class="menu-abrir">Abre Menu</button>

            <h1 class="logo">
                <img src="img/logo.png" alt="Notícias.com">
            </h1>

            <nav class="barra-nav">
                <button class="menu-fechar">Fecha Menu</button>
                <ul class="menu-principal">
                    <li><a href="noticias.html" class="noticias">Notícias</a>
                    <li><a href="esportes.html" class="esportes">Esportes</a>
                    <li><a href="famosos.html" class="famosos">Famosos</a>
                </ul>

                <form class="busca">
                    <input type="search" id="campo-busca">
                    <button type="submit">Buscar</button>
                </form>
            </nav>
        </div>
    </header>

Código CSS

@media (max-width: 600px){
    .barra-nav{
        background: #f0f0f0;
        padding: 1em;
        margin: 0;
        height: 100%;
        width: 90%;
        max-width: 320px;
        position: fixed;
        z-index: 1;
        top: 0;
        left: 90%
        transition: left 0.3s ease-out;
    }

    .menu-ativo .barra-nav{
        left: 0;
    }

    .menu-ativo:after{
        content: "";
        display: block;
        position: fixed;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        background: rgba(0, 0, 0, 0.4);
    }

    .menu-principal li{
        padding: 1em 0;
        width: 100%;
    }
}

@media not all and (max-width: 600px){
    .menu-abrir,
    .menu-fechar{
        display: none;
    }
}

Código JS

document.querySelector('.menu-abrir').onclick = function(){
    document.documentElement.classList.add(".menu-ativo");
}

document.querySelector('.menu-fechar').onclick = function(){
    document.documentElement.classList.remove(".menu-ativo");
}

document.documentElement.onclick = function(event){
    if (event.target === document.documentElement){
        document.documentElement.classList.remove('menu-ativo');
    }
}
5 respostas
solução!

Oi André, acho que você está cometendo um pequeno deslize no seu JS. As vezes você escreve .menu-ativo e as vezes menu-ativo sem o ponto.

No JS para adicionar classes, você não precisa do ponto. Testa novamente e vê se funciona com essa correção?

Abraço =)

Perfeito o Wanderson. Só complementando: no classList é sempre sem o ponto. No querySelector é sempre com o ponto.

Perfeito a correção!

Eu realmente me confundi com querySelector e classList

Agora está tudo esclarecido, muito obrigado aos dois o//

Acontece isso.

Notícias.com

HTML

    <header>

        <div class="container">

            <button class="menu-abrir">Abre Menu</button>

            <h1 class="logo">
                <img src="img/logo.png" alt="Notícias.com">
            </h1>

            <nav class="barra-nav">

                <button class="menu-fechar">Fecha Menu</button>

                <ul class="menu-principal">
                    <li><a href="noticias.html" class="noticias">Notícias</a>
                    <li><a href="esportes.html" class="esportes">Esportes</a>
                    <li><a href="famosos.html" class="famosos">Famosos</a>
                </ul>

                <form class="busca">
                    <input type="search" id="campo-busca">
                    <button type="submit">Buscar</button>
                </form>
            </nav>
        </div>
    </header>

CSS

@media (max-width: 600px) {
    .barra-nav {
        background: #f0f0f0;
        padding: 1em;
        margin: 0;

        height: 100%;
        width: 90%;
        max-width: 320px;

        position: fixed;
        z-index: 1;
        top: 0;
        left: -90%;

        transition: left 0.3s ease-out;
    }

    .menu-ativo .barra-nav {
        left: 0;
    }


}

 .menu-ativo:after{
        content: "";
        display: block;
        position: fixed;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;
        background: rgba(0, 0, 0, 0.4);
    }

 .menu-principal li {
    padding: 1em 0;
    width: 100%;
    }


@media not all and (max-width: 600px) {
    .menu-abrir,
    .menu-fechar {
        display: none;
    }    
}

JS

document.querySelector('.menu-abrir').onclick = function(){
    document.documentElement.classList.add("menu-ativo");
}

document.querySelector('.menu-fechar').onclick = function(){
    document.documentElement.classList.remove("menu-ativo");
}

document.documentElement.onclick = function(event){
    if (event.target === document.documentElement){
        document.documentElement.classList.remove('menu-ativo');
    }
}

Oi Rael, tudo bem? Olha, não entendi seu post, se for alguma dúvida, por favor, abre em outro tópico que este aqui já foi solucionado.

Novas dúvidas, novos tópicos! Bons estudos!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software