document.querySelectorAll
retorna todos que forem selecionados elemento.innerHTML
:
let contador = 0;
let contadorEl = document.querySelector('#contador');
// quando clicado, (1) conta e (2) altera conteúdo
contadorEl.addEventListener('click', () => {
contador++; // (1) conta
contadorEl.innerHTML = contador; // (2) altera
});
booEl.classList.toggle('selecionado'); // add, remove ou toggle (alternar)
pokemonLutandoEl.src = 'bulbasaur.png'; // qualquer atributo, aqui foi src
booEl.addEventListener('click', function(e) {
let clicadoEl = e.currentTarget; // elemento alvo (target) do evento
clicadoEl.classList.toggle('selecionado');
});
el.classList.add(...)
el.classList.remove(...)
el.classList.toggle(...)
style
booEl.classList.add('selecionado'); // adiciona .selecionado
botaoEl.classList.remove('oculto'); // remove .oculto
.classList
do elementostyle
:
botaoEl.style.width = '80%'; // define largura como 80%
botaoEl.style.paddingTop = '2px'; // padding-top vira paddingTop
.style
do elementobotaoEl.style.backgroundColor = '#cccccc';
background-color
➡️ backgroundColor
border-radius
➡️ borderRadius
margin
➡️ margin
list-style-type
➡️ listStyleType
z-index
➡️ zIndex
let nome-da-variavel = 'incorreto'; // Uncaught SyntaxError: Unexpected token -
elemento.style
?.style
:
abelhinhas.js
.abelhinha {
position: absolute; /* precisamos de position: absolute */
left: ??; /* mas como calcular left e top? */
top: ??; /* tem que ser via JavaScript =) */
}
// cria um objeto abelhinha
let abelhinha = {
x: 0, // pos. x inicial
y: 0, // pos. y inicial
imagemEl: document.querySelector('#abelhinha')
};
// função que acha a nova posição
function atualizaAbel() {
abelhinha.x += 1;
abelhinha.y += Math.sin(abelhinha.x);
abelhinha.imagemEl.style.left = `${abelhinha.x}px`;
abelhinha.imagemEl.style.top = `${abelhinha.y}px`;
}
// registra a função em um intervalo
setInterval(atualizaAbel, 33);
<input id="palavra" type="text" placeholder="Digite..."> <!-- exemplo abaixo -->
<input id="palavra">
<input>
type="text"
é o valor padrão para o input
placeholder="um texto..."
define um texto de ajuda que só aparece
quando não há nada digitado
::: result
:::<input>
possui o atributo value
, que é o valor padrão.
Exemplo:
<input type="number" value="5">
:
value
:
let quantidadePizzasEl = document.querySelector('#qtde-pizzas');
// podemos pegar o valor atual no console acessando .value:
let qtdePizzasAtual = quantidadePizzasEl.value; // botão 1
alert(qtdePizzasAtual);
// ou podemos definir um novo valor para o elemento:
quantidadePizzasEl.value = 25; // botão 2
<label>
<input id="emails" type="checkbox" value="sim"> Inscrever?
</label>
<label></label>
, o usuário precisará
clicar exatamente na caixinha
::: result
:::
checked
, para deixar previamente marcado
<input id="..." type="checkbox" checked>
<label>
<input type="radio" name="cor" value="azul">Azul
</label>
<label>
<input type="radio" name="cor" value="verde">Verde
</label>
:::
name
: define qual é o nome do input ao enviar o fomulário para o servidor <input>
têm o mesmo name
<label for="sabor">Sabor da pizza:</label>
<select id="sabor">
<option value="marg">Marguerita</option>
<option value="muzza" selected>Frango</option>
</select>
selected
, para o option
, para deixar selecionadomultiple
, para o select
, para permitir mais de um option
Verificando se um checkbox
está marcado:
let desejaInscreverEl = document.querySelector('#inscrever');
let estaMarcado = desejaInscreverEl.checked; // elemento.checked: true/false
select
:
let saborPizzaEl = document.querySelector('#pizza');
let sabor = saborPizzaEl.value; // elementoSelect.value: valor da option
radio
:
let corMarcadaEl = document.querySelector('[name="cor"]:checked');
let cor = corMarcadaEl.value; // elemento.value: valor do input
name="cor"
e que esteja no estado :checked
(marcado) click
(clique simples) .dblclick
(clique duplo) .mousedown
(press. um botão) .mouseup
(liberou um botão) .mousemove
(movimentou) .mouseover
(sobrevoou um elem.) .mouseout
(saiu de um elemento) . botaoEl.addEventListener('click', umaFuncao);
botaoEl.removeEventListener('click', umaFuncao);
e.pageX
e e.pageY
change
ou input
(modificou definitiva ou instantaneamente)blur
(perdeu foco)focus
(ganhou foco)keydown
(pressionou uma tecla)keyup
(liberou uma tecla)(Muitos) outros tipos: Eventos na MDN
filter
mouseover
, mouseout
, mousemove
, input
);filter
…data-
(atributos de dados)<a href="#" data-fecha-modal>✕</a>
[data-fecha-modal] {
border-radius: 50%;
background: silver;
}
const fecharEl = modalEl.querySelector('[data-fecha-modal'])
fecharEl.addEventListener('click', ...)
<... data-nome-do-atributo="valor">
// pegando o valor
const valor = el.dataset.nomeDoAtributo;
// definindo o valor
el.dataset.nomeDoAtributo = valor;
<img src="..." alt="..." data-colecao="verao">
<img src="..." alt="..." data-colecao="verao">
<img src="..." alt="..." data-colecao="inverno">
<img src="..." alt="..." data-colecao="inverno">
<img src="..." alt="..." data-colecao="outono">
<img src="..." alt="..." data-colecao="primavera">
<img src="..." alt="..." data-colecao="primavera">
// da imagem que foi clicada, descobrir sua coleção
const imgs = document.querySelectorAll('img');
imgs.forEach(el =>
el.addEventListener('click', e =>
alert(e.currentTarget.dataset.colecao)
)
);
filter
.f1 { filter: blur(2px); }
.f2 { filter: brightness(1.5); }
.f3 { filter: contrast(5); }
.f4 {
filter: drop-shadow(2px 2px 2px black);
}
.f5 { filter: grayscale(1); }
.f6 { filter: hue-rotate(45deg); }
.f7 { filter: invert(1); }
.f8 { filter: opacity(0.2); }
.f9 { filter: sepia(1); }
.f10 { filter: saturate(5); }
::: result .full-width display: grid; grid-template-rows: repeat(2, 1fr); grid-template-columns: repeat(5, 1fr); gap: 1em;
:::