1
resposta

Ao invés de --ativo eu consigo usar o pseudo-classe :active?

Olá, tudo bem?

Gostaria de saber se existe como ao invés de usar --ativo no código abaixo, usar o pseudo-class :active.

Segue abaixo o código CSS com o --ativo

.menuLateral{
    display:flex;
    flex-direction: column;
    background-color: #15191C;
    width: 75vw;
    height: 100vh;
    position: absolute;
    left: -100vw;
    transition: 300ms;
}
.menuLateral--ativo{
    left: 0;
    transition: 300ms;
}

Código do index.js:

const botaoMenu = document.querySelector('.cabecalho__menu')
const menu = document.querySelector('.menuLateral')

botaoMenu.addEventListener('click', () => {
    menu.classList.toggle('menuLateral--active')
})

Tentei fazer da forma abaixo, mas não funcionou:

CSS com :active

.menuLateral{
    display:flex;
    flex-direction: column;
    background-color: #15191C;
    width: 75vw;
    height: 100vh;
    position: absolute;
    left: -100vw;
    transition: 300ms;
}
.menuLateral:active{
    left: 0;
    transition: 300ms;
}

Código do index.js que tentei fazer, mas não funcionou:

const botaoMenu = document.querySelector('.cabecalho__menu')
const menu = document.querySelector('.menuLateral')

botaoMenu.addEventListener('click', () => {
    menu.classList.toggle('menuLateral:active')
})

Existe alguma forma de usar .menuLateral:active no CSS e mesmo assim conseguir fazer o menu lateral abrir quando clicar no botão, via JS?

1 resposta

ola, para a estrategia escolhida inicialmente para essa funcionalidade eu acredito que não funcione pelos seguintes motivos:

  1. pseudo-class que você inseriu :active está no menu lateral e inicialmente ele está escondido. Dessa forma não teria como ficar :active pq o usuário não está vendo o menu, apenas o botãoMenu
  2. o method classList adiciona class e não pseudo-class ... se você inspecionar o código lá browser vai perceber que ele de fato adiciona uma class no DOM do elemento setado.

certamente existe outras formas de fazer, usando mais o CSS do que o JS e vice-versa... talvez levando o :active para o ".cabecalho__menu" (botao) e ajustando alguns pontos mas a forma escolhida no curso é bem prática e deixa na mão do JS gerenciar isso, o que traz várias possibilidades juntos.