translate(x,y)translateX(x)translateY(y)translateZ(z)scale(x,y)scaleX(x)scaleY(y)scaleZ(z) rotate(ang),rotateZ(ang)rotateX(ang)rotateY(ang)transform-origin): .porta {
transform-origin: left center;
transition: transform ease 600ms;
}
.porta:hover {
transform: rotateY(-95deg);
}
Especificada no CSS3, animation e @keyframes possibilitam o uso de
animações de propriedades CSS de forma similar a transition
<img src="images/urso.jpg" id="urso">
#urso {
position: relative;
animation: flutuando .5s ease-in-out 0s infinite alternate;
}
@keyframes flutuando {
from { top: 0; }
to { top: -30px; }
}
let jogador = {
pontos: 1420,
vidas: 2
};
console.log(jogador.pontos);
// imprime 1420
undefinedpontos, valor: 1420vidas, valor: 2let jogador = { // forma mais expressiva, curta e sexy
pontos: 1420, // propriedades separadas por vírgula
vidas: 2
};
let jogador = {}; // um objeto vazio: { }
jogador.pontos = 1420; // criou jogador.pontos com valor 1420
jogador.vidas = 2; // criou jogador.vidas
newnew:
let jogador = new Object(); // isto é equivalente a
jogador.pontos = 1420; // "let jogador = {};"
jogador.vidas = 2;
Object é uma função (que estamos invocando)let voo = {
companhia: 'Gol',
numero: 815,
decolagem: {
IATA: 'SYD',
horario: '2004-09-22 14:55',
cidade: 'Sydney'
},
chegada: {
IATA: 'LAX',
horario: '2004-09-23 10:42',
cidade: 'Los Angeles'
}
};
voo, com as propriedades:
companhianumerodecolagemchegadadecolagem e chegada são objetos por si mesmoslet jogadores = [
{
nome: 'Yoda',
pontos: 1420
},
{
nome: 'Leia',
pontos: 3010
},
{
nome: 'Luke',
pontos: 5600
}
];
for (let i = 0; i < jogadores.length; i++) {
console.log('Nome: ' + jogadores[i].nome);
console.log('Pontos: ' + jogadores[i].pontos);
}
for of e vetor.forEach()
sem problemas!let jogadores = [
{ nome: 'Yoda', pontos: 1420 },
{ nome: 'Leia', pontos: 3010 },
{ nome: 'Luke', pontos: 5600 }
];
function passouDeFase(player) {
// a função recebe 1 parâmetro,
// que demos o nome de player
player.pontos += 1000;
}
// podemos chamar a função para 1 jogador:
passouDeFase(jogadores[0]); // Yoda
// ...ou para todos eles, percorrendo o vetor:
for (let i = 0; i < jogadores.length; i++) {
passouDeFase(jogadores[i]);
}
// equivalente, porém super-mega-ultra ELEGANTE,
// usando vetor.forEach:
jogadores.forEach(passouDeFase); // 🌟🌟🌟
let macunaima = { /* ... */ },
mentecapto = { /*... */ };
let biblioteca = [ // (3)
macunaima, mentecapto];
// poderíamos fazer assim: 👎
let autorDoLivro = 'Mário de Andr.',
nomeDoLivro = 'Macunaíma',
anoDoLivro = 1928;
// mas assim é melhor (1): 👍
let livro = {
autor: 'Mário de Andrade',
nome: 'Macunaíma',
ano: 1928
};
function incluiNaBiblioteca(livro) {
// (2) ...
}
createElementinsertBeforereplaceChildappendChildinnerHTMLremoveChildDefinindo a propriedade de innerHTML de um elemento da árvore
para uma string descrevendo uma estrutura HTML (já vimos):
let listaEl = document.querySelector('#lista-de-dados');
listaEl.innerHTML = '<li><img src="images/d12.png"></li>';
Instanciando elementos e os adicionando ao DOM, que é feito em 3 passos (detalhados a seguir):
// 1. Solicitamos ao document a criação de um elemento
// 2. Configuramo-lo (atributos, id, classes etc.)
// 3. Inserimo-lo na árvore
Exemplo - criação de uma imagem:
// 1. Solicitamos ao document a criação de um elemento
let ovelhaEl = document.createElement('img'); // cria uma <img>
// 2. Configuramo-lo (atributos, id, classes etc.)
ovelhaEl.src = 'images/ovelho-pixel.png'; // <img src="...">
ovelhaEl.classList.add('raca'); // <img src="..." class="...">
Resultado:
<img src="images/ovelho-pixel.png" class="raca">
appendChild: será o filho mais à direitainsertBefore: será o filho que vem logo antes de outroreplaceChild: substituirá um filho existentelet containerEl = document.querySelector('#ovelhas');
let novaOvelhaEl = document.createElement('img');
novaOvelhaEl.src = 'img/ovelho-pixel.png';
containerEl.appendChild(novaOvelhaEl);
appendChild




insertBefore


replaceChild


appendChild, insertBefore e replaceChild
Usando document.createTextNode('texto aqui'):
let bodyEl = document.querySelector('body');
let pEl = document.createElement('p');
let txtEl = document.createTextNode('Olá parágrafo!'); // <--
bodyEl.appendChild(pEl); // põe o parágrafo em <body>
pEl.appendChild(txtEl); // põe o texto no <p>
Usando elemento.innerHTML (👍 mais easy):
let bodyEl = document.querySelector('body');
let pEl = document.createElement('p');
bodyEl.appendChild(pEl); // põe o parágrafo em <body>
pEl.innerHTML = 'Olá parágrafo!'; // define o innerHTML do <p>
Usamos containerEl.removeChild(el) ou, para remover todos, innerHTML:
<main>
<img id="urso" src="img/urso.png">
</main>
let mainEl = document.querySelector('main');
let imgEl = document.querySelector('#urso');
mainEl.removeChild(imgEl); // remove a <img id="urso">
// ou...
mainEl.innerHTML = ''; // remove tudo o que estiver em <main></main>