Oi, Matheus, tudo bem?
Primeiramente, sobre a classe app__card-button
estar repetida, isso acontece porque ela é uma classe comum a todos os botões. Ela provavelmente define estilos compartilhados por todos os botões, como a fonte, o tamanho, entre outros.
Já a classe app__card-button--foco
é uma classe específica para o botão de foco. O uso de dois hífens --
é uma convenção de nomenclatura conhecida como BEM (Block Element Modifier). Nesse caso, app__card-button
seria o bloco, e foco
seria o modificador. Essa convenção ajuda a tornar o código mais legível e organizado.
Em relação à sua segunda pergunta, o JavaScript permite que você adicione ou remova classes de um elemento HTML de forma dinâmica. No caso do comando focoBt.classList.add('active')
, ele está adicionando a classe active
ao botão que foi clicado. Essa classe altera o estilo do botão para indicar que ele está ativo.
A razão pela qual você não precisa adicionar todas as classes (app__card-button app__card-button--foco active
) é porque as classes app__card-button
e app__card-button--foco
já estão definidas no HTML. O JavaScript apenas precisa adicionar a classe active
para alterar o estado do botão.
Espero ter ajudado. Caso tenha dúvidas, não hesite em postar no fórum!
Abraços!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!