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

Botão Abre Menu não funciona...

Olá, boa tarde!

O botão "Abre Menu" não está funcionando...

Poderiam me ajudar por favor?

Segue meus códigos abaixo:

menu.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');
    }
};

CSS:

@media(max-width: 600px){
    .nav-principal {
        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 .nav-principal {
            left: 0;
        }

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

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

@media (max-width: 600px) {
    .menu-ativo:after {
        content: "";
        display: block;

        position: fixed;
        top: 0;
        left: 0;
        bottom: 0;
        right: 0;

        background: rgba(0,0,0,0.4);
    }
}

No HTML, inseri a tag script dentro da tag head:

<script src="menu.js"></script>

e coloquei os botões:

Desde já obrigada e fico no aguardo! =) Bruna

5 respostas

Bruna, Boa tarde .

seguinte qual caminho que está salvo o arquivo menu.js ?

se ele estiver dentro de uma pasta chamada js , é necessário colocar o seguinte caminho no comando abaixo :

<script src="js/menu.js"></script>

desse jeito ele indica que o script está dentro da pasta js .

Boa tarde Celso,

Esse arquivo está diretamente na pasta do site. A localização está correta.

Essa função está adicionando a classe na tag HTML do documento

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

Você teria que referenciar o classList.add para o seletor que está sendo usado, o código ficaria:

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

E no botão de fechar, no seu código está apagando a classe 'menu-ativo' também da tag HTML, para funcionar teria que referenciar o classList.remove para o botão/seletor que você desejar, presumi que seria assim:

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

Um fiddle do código funcionando.

O link acima está errado ,tenta esse. E ah, eu exclui o css, testa os scripts com o teu código, pois no fiddle só da pra ver as alterações no inspector.

solução!

Agradeço a todos que tentaram me ajudar nesse post, descobri o que estava havendo...

Toda vez que uma página chama uma função javascript devo colocar a tag dentro do head e no final da página antes de fechar a tag body.

Agora esta funcionando corretamente.

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