WEBVTT
00:00:00.702 --> 00:00:05.963
No último vídeo mostrei como definir
estilos em JavaScript, como este aqui.
00:00:06.613 --> 00:00:10.202
Se você definir um monte de estilos em
JavaScript, você pode acabar
00:00:10.202 --> 00:00:14.671
com centenas de linhas de código apenas
definindo os valores das propriedades CSS.
00:00:14.671 --> 00:00:18.076
E isso pode realmente sobrecarregar
o seu JavaScript.
00:00:18.566 --> 00:00:20.666
Há uma outra forma que poderíamos
fazer isso.
00:00:20.666 --> 00:00:23.213
Poderíamos criar uma classe CSS,
00:00:23.213 --> 00:00:28.275
e adicionar uma regra CSS para essa classe
com os novos estilos que queremos,
00:00:28.275 --> 00:00:33.116
e em seguida, adicionar dinamicamente
o nome da classe em JavaScript.
00:00:33.116 --> 00:00:38.932
Vamos começar aqui com a tag ''
e tentar fazer isso.
00:00:38.932 --> 00:00:45.798
Vamos fazer uma classe '.catcolors'
e a regra CSS para ela.
00:00:45.798 --> 00:00:53.085
E vai ter color: orange (cor: laranja),
e background-color: black (fundo: preto).
00:00:54.355 --> 00:00:58.854
Agora, para atribuir isso ao elemento
heading, podemos dizer:
00:00:58.854 --> 00:01:05.813
headingEl.className = "catcolors";
00:01:05.813 --> 00:01:09.485
Podemos eliminar a atribuição da cor
00:01:09.485 --> 00:01:12.222
e da cor de fundo em JavaScript.
00:01:12.222 --> 00:01:13.322
Pronto!
00:01:13.322 --> 00:01:15.113
Assim funcionou.
00:01:15.113 --> 00:01:17.466
Mas notou algo estranho?
00:01:17.466 --> 00:01:21.249
O atributo HTML para nomes de classes
é apenas "class".
00:01:21.249 --> 00:01:26.779
Se tivesse feito isso em HTML, teria sido
class="catcolors".
00:01:26.779 --> 00:01:31.589
Mas quando eu faço isso em JavaScript,
eu tenho que dizer .className,
00:01:31.589 --> 00:01:33.806
o que não estamos acostumados.
00:01:33.806 --> 00:01:39.084
Isso é porque o class é na verdade uma
palavra-chave na linguagem JavaScript
00:01:39.084 --> 00:01:42.613
que tem um significado especial
para a linguagem.
00:01:42.613 --> 00:01:47.534
Por causa disso, os navegadores decidiram
usar "className" para se referir
00:01:47.534 --> 00:01:52.665
ao atributo de classe HTML, apenas
para que não se confundissem.
00:01:53.225 --> 00:01:56.613
Lembre-se, se você deseja definir o
atributo de classe de um elemento
00:01:56.613 --> 00:02:00.333
você usa .className=
00:02:01.443 --> 00:02:04.383
Agora, para atribuir isso a cada um
dos nomes de animais,
00:02:04.383 --> 00:02:06.657
podemos colocá-lo dentro do loop, então:
00:02:06.657 --> 00:02:13.449
nameEls[i].className="catColors";
00:02:14.609 --> 00:02:19.427
Isso adicionará o nome da classe, mas na
verdade, ele irá remover quaisquer classes
00:02:19.427 --> 00:02:23.704
que estavam lá antes, porque
dissemos que é igual.
00:02:23.704 --> 00:02:28.236
Se tivéssemos quaisquer classes lá antes,
agora já se foram.
00:02:28.236 --> 00:02:32.053
Agora, eles realmente têm classe antes,
que é class = "animal".
00:02:32.053 --> 00:02:34.340
E então essa se tornou catColors.
00:02:34.340 --> 00:02:41.305
O que realmente queremos fazer é adicionar
um novo nome de classe para este atributo.
00:02:41.305 --> 00:02:47.562
Podemos fazer isso escrevendo
+= " catColors".
00:02:47.562 --> 00:02:48.828
Lá vamos nós.
00:02:48.828 --> 00:02:51.901
Essa é a coisa segura a fazer,
porque vai pegar
00:02:51.901 --> 00:02:53.904
qualquer que seja a classe anterior,
00:02:53.904 --> 00:02:58.048
adicionar a ela um espaço e
depois a nova classe.
00:02:58.998 --> 00:03:02.209
Existe outra maneira de fazer isso
em navegadores mais recentes
00:03:02.209 --> 00:03:04.975
utilizando a propriedade classList.
00:03:05.915 --> 00:03:15.135
Então, para fazer isso dizemos:
nameEls[i].classList.add("catcolors");.
00:03:16.245 --> 00:03:19.649
Isso é muito mais agradável,
mas não funciona em todos os lugares.
00:03:19.649 --> 00:03:24.014
Se você quiser usar isso,
você tem que ir na caniuse.com,
00:03:24.014 --> 00:03:26.532
e ter certeza que é suportado
em todos os navegadores
00:03:26.532 --> 00:03:28.756
nos quais você queira que
sua página funcione.
00:03:28.756 --> 00:03:32.189
É muito mais agradável, mas não é bom
se suas páginas pararem
00:03:32.189 --> 00:03:36.254
porque você está usando uma função que
o navegador não conhece.
00:03:36.254 --> 00:03:38.143
Por isso só vou comentá-la.
00:03:38.143 --> 00:03:41.337
Porque quero a minha funcionando
em um monte de navegadores.
00:03:41.337 --> 00:03:46.067
Têm muitas vezes que queremos
mudar os estilos individuais,
00:03:46.067 --> 00:03:48.558
em vez de atribuir nomes de classes.
00:03:48.558 --> 00:03:54.463
Lembre-se que você tem essas duas
ferramentas em sua caixa de ferramentas,
00:03:54.463 --> 00:03:58.214
e pense sobre o que poderia ser melhor,
dependendo da situação.
00:03:58.214 --> 00:04:00.000
Legendado por [Fernando dos Reis]
Revisado por [Carlos A. N. C. R.]