Alterando o Estilo de Elementos - JavaScript
Para trabalhar com as propriedades de estilo dos elementos em JavaScript, são utilizados principalmente dois métodos:
Alteração da propriedade
style
Alteração do valor do atributo
class
Propriedade style
A propriedade style
CSSStyleDeclaration
element.style.propriedadeCSS
Por exemplo, para definir a cor do texto de um cabeçalho:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Programício</title>
</head>
<body>
<h1 id="header">Home Page</h1>
<script>
const header = document.getElementById("header");
console.log(header.style.color); // retorna uma string vazia
header.style.color = "navy";
console.log(header.style.color); // retorna "navy"
</script>
</body>
</html>
Neste caso, definimos a cor navy para o cabeçalho. A propriedade color em CSS tem o mesmo nome em JavaScript. Poderíamos também definir a cor através do CSS:
#header {
color: navy;
}
Contudo, algumas propriedades CSS contêm hífens, como font-family
const header = document.getElementById("header");
header.style.fontFamily = "Verdana";
Propriedade className
A propriedade className
class
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Programício</title>
<style>
.header-color { color: navy; }
.header-font { font-family: Verdana; }
</style>
</head>
<body>
<h1 id="header" class="header-font">Home Page</h1>
<script>
const header = document.getElementById("header");
console.log(header.className); // retorna "header-font"
header.className = "header-color";
console.log(header.className); // retorna "header-color"
</script>
</body>
</html>
Inicialmente, obtemos a classe atual do cabeçalho e depois alteramos para uma nova classe, header-color
style
É importante lembrar que o valor anterior do atributo class
header.className = header.className + " header-color";
Propriedade classList
A propriedade classList
: adiciona a classeadd(className)
className
: remove a classeremove(className)
className
: alterna a classetoggle(className)
. Se a classe existir, ela é removida; se não, é adicionadaclassName
Por exemplo:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Programício</title>
<style>
.header-color { color: navy; }}
.header-font { font-family: Verdana; }}
.header-size { font-size: 22px; }}
</style>
</head>
<body>
<h1 id="header" class="header-size">Home Page</h1>
<script>
const header = document.getElementById("header");
header.classList.remove("header-size");
header.classList.add("header-font");
header.classList.toggle("header-color");
</script>
</body>
</html>
O método toggle()
true
const random = Math.random();
const condition = random > 0.5;
const header = document.getElementById("header");
header.classList.toggle("header-color", condition);
Também é possível iterar sobre todas as classes na lista classList
for (const headerClass of header.classList) {
console.log(headerClass);
}
console.log(header.classList[0]); // retorna a primeira classe adicionada