< Return to Video

Mudando classes no CSS

  • 0:01 - 0:06
    No último vídeo mostrei como definir
    estilos em JavaScript, como este aqui.
  • 0:07 - 0:10
    Se você definir um monte de estilos em
    JavaScript, você pode acabar
  • 0:10 - 0:15
    com centenas de linhas de código apenas
    definindo os valores das propriedades CSS.
  • 0:15 - 0:18
    E isso pode realmente sobrecarregar
    o seu JavaScript.
  • 0:19 - 0:21
    Há uma outra forma que poderíamos
    fazer isso.
  • 0:21 - 0:23
    Poderíamos criar uma classe CSS,
  • 0:23 - 0:28
    e adicionar uma regra CSS para essa classe
    com os novos estilos que queremos,
  • 0:28 - 0:33
    e em seguida, adicionar dinamicamente
    o nome da classe em JavaScript.
  • 0:33 - 0:39
    Vamos começar aqui com a tag ''
    e tentar fazer isso.
  • 0:39 - 0:46
    Vamos fazer uma classe '.catcolors'
    e a regra CSS para ela.
  • 0:46 - 0:53
    E vai ter color: orange (cor: laranja),
    e background-color: black (fundo: preto).
  • 0:54 - 0:59
    Agora, para atribuir isso ao elemento
    heading, podemos dizer:
  • 0:59 - 1:06
    headingEl.className = "catcolors";
  • 1:06 - 1:09
    Podemos eliminar a atribuição da cor
  • 1:09 - 1:12
    e da cor de fundo em JavaScript.
  • 1:12 - 1:13
    Pronto!
  • 1:13 - 1:15
    Assim funcionou.
  • 1:15 - 1:17
    Mas notou algo estranho?
  • 1:17 - 1:21
    O atributo HTML para nomes de classes
    é apenas "class".
  • 1:21 - 1:27
    Se tivesse feito isso em HTML, teria sido
    class="catcolors".
  • 1:27 - 1:32
    Mas quando eu faço isso em JavaScript,
    eu tenho que dizer .className,
  • 1:32 - 1:34
    o que não estamos acostumados.
  • 1:34 - 1:39
    Isso é porque o class é na verdade uma
    palavra-chave na linguagem JavaScript
  • 1:39 - 1:43
    que tem um significado especial
    para a linguagem.
  • 1:43 - 1:48
    Por causa disso, os navegadores decidiram
    usar "className" para se referir
  • 1:48 - 1:53
    ao atributo de classe HTML, apenas
    para que não se confundissem.
  • 1:53 - 1:57
    Lembre-se, se você deseja definir o
    atributo de classe de um elemento
  • 1:57 - 2:00
    você usa .className=
  • 2:01 - 2:04
    Agora, para atribuir isso a cada um
    dos nomes de animais,
  • 2:04 - 2:07
    podemos colocá-lo dentro do loop, então:
  • 2:07 - 2:13
    nameEls[i].className="catColors";
  • 2:15 - 2:19
    Isso adicionará o nome da classe, mas na
    verdade, ele irá remover quaisquer classes
  • 2:19 - 2:24
    que estavam lá antes, porque
    dissemos que é igual.
  • 2:24 - 2:28
    Se tivéssemos quaisquer classes lá antes,
    agora já se foram.
  • 2:28 - 2:32
    Agora, eles realmente têm classe antes,
    que é class = "animal".
  • 2:32 - 2:34
    E então essa se tornou catColors.
  • 2:34 - 2:41
    O que realmente queremos fazer é adicionar
    um novo nome de classe para este atributo.
  • 2:41 - 2:48
    Podemos fazer isso escrevendo
    += " catColors".
  • 2:48 - 2:49
    Lá vamos nós.
  • 2:49 - 2:52
    Essa é a coisa segura a fazer,
    porque vai pegar
  • 2:52 - 2:54
    qualquer que seja a classe anterior,
  • 2:54 - 2:58
    adicionar a ela um espaço e
    depois a nova classe.
  • 2:59 - 3:02
    Existe outra maneira de fazer isso
    em navegadores mais recentes
  • 3:02 - 3:05
    utilizando a propriedade classList.
  • 3:06 - 3:15
    Então, para fazer isso dizemos:
    nameEls[i].classList.add("catcolors");.
  • 3:16 - 3:20
    Isso é muito mais agradável,
    mas não funciona em todos os lugares.
  • 3:20 - 3:24
    Se você quiser usar isso,
    você tem que ir na caniuse.com,
  • 3:24 - 3:27
    e ter certeza que é suportado
    em todos os navegadores
  • 3:27 - 3:29
    nos quais você queira que
    sua página funcione.
  • 3:29 - 3:32
    É muito mais agradável, mas não é bom
    se suas páginas pararem
  • 3:32 - 3:36
    porque você está usando uma função que
    o navegador não conhece.
  • 3:36 - 3:38
    Por isso só vou comentá-la.
  • 3:38 - 3:41
    Porque quero a minha funcionando
    em um monte de navegadores.
  • 3:41 - 3:46
    Têm muitas vezes que queremos
    mudar os estilos individuais,
  • 3:46 - 3:49
    em vez de atribuir nomes de classes.
  • 3:49 - 3:54
    Lembre-se que você tem essas duas
    ferramentas em sua caixa de ferramentas,
  • 3:54 - 3:58
    e pense sobre o que poderia ser melhor,
    dependendo da situação.
  • 3:58 - 4:00
    Legendado por [Fernando dos Reis]
    Revisado por [Carlos A. N. C. R.]
Title:
Mudando classes no CSS
Description:

Esta é uma gravação de vídeo de uma palestra interativa, carregado para tornar mais fácil a criação de legendas. Por favor, assista a palestra interativa original na Khan Academy, onde você pode pausar e editar o código e ver o código em melhor resolução: http://www.khanacademy.org/computer-programming

more » « less
Video Language:
English
Duration:
04:00

Portuguese, Brazilian subtitles

Revisions