Propriedade transition-delay: Quando a transição começa?
Aprenda a atrasar o início de uma transição.
Você já definiu quais propriedades transicionar (transition-property), por quanto tempo (transition-duration) e como a velocidade muda (transition-timing-function). Agora, vamos adicionar um elemento de tempo: quando a transição deve começar. É para isso que serve a propriedade transition-delay.
A transition-delay é como um "temporizador" que você define antes que a transição comece a rodar. Em vez de iniciar imediatamente após a mudança de estado, a transição esperará pelo tempo especificado antes de começar a animar. Isso é útil para criar efeitos sequenciais, atrasar animações ou dar um respiro antes que algo aconteça.
Como funciona transition-delay
Esta propriedade aceita um valor de tempo, que pode ser em segundos (s) ou milissegundos (ms).
Valores possíveis:
0sou0ms(padrão): A transição começa imediatamente após a mudança de estado.<tempo>: Um valor numérico seguido da unidade de tempo (spara segundos oumspara milissegundos).
Sintaxe:
.elemento {
transition-delay: <tempo>;
}
Exemplos:
1. Atraso de 1 segundo:
.box {
background-color: blue;
width: 100px;
height: 100px;
transition-property: background-color;
transition-duration: 0.5s;
transition-delay: 1s; /* A transição da cor de fundo começará 1 segundo após o hover */
}
.box:hover {
background-color: red;
}
Resultado: Ao passar o mouse, a caixa espera 1 segundo e só então a cor de fundo começa a mudar suavemente de azul para vermelho em 0.5 segundos.
2. Atraso de 500 milissegundos:
.box {
background-color: blue;
width: 100px;
height: 100px;
transition-property: background-color;
transition-duration: 0.5s;
transition-delay: 500ms; /* A transição da cor de fundo começará 500ms após o hover */
}
.box:hover {
background-color: red;
}
Resultado: Similar ao exemplo anterior, mas com um atraso de 500 milissegundos.
3. Múltiplos atrasos para múltiplas propriedades:
Assim como transition-duration e transition-timing-function, você pode fornecer um atraso para cada propriedade listada em transition-property, separadas por vírgula. A ordem deve corresponder.
.box {
background-color: blue;
width: 100px;
height: 100px;
transform: translateX(0);
transition-property: background-color, width, transform;
transition-duration: 0.5s, 1s, 0.8s;
transition-timing-function: ease, linear, ease-in-out;
transition-delay: 0s, 0.5s, 1s; /* BG sem atraso, width com 0.5s, transform com 1s */
}
.box:hover {
background-color: red;
width: 150px;
transform: translateX(50px);
}
Resultado:
background-colorcomeça imediatamente.widthespera 0.5 segundos e depois começa.transformespera 1 segundo e depois começa.
Dicas para transition-delay:
- Efeitos Sequenciais: Use
transition-delaypara criar animações onde os elementos aparecem ou se movem em sequência. - Feedback: Um pequeno atraso pode ser útil para dar ao usuário um momento para processar a interação antes que a animação comece.
- Cuidado com o Excesso: Atrasos muito longos podem frustrar o usuário, fazendo a interface parecer lenta ou não responsiva. Use com moderação.
Exemplo Prático:
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<title>transition-delay</title>
<style>
body {
font-family: Arial, sans-serif;
display: flex;
flex-wrap: wrap;
gap: 30px;
justify-content: center;
align-items: center;
min-height: 100vh;
background-color: #f0f2f5;
margin: 0;
}
.box {
width: 120px;
height: 120px;
background-color: #007bff;
border-radius: 10px;
display: flex;
justify-content: center;
align-items: center;
color: white;
font-weight: bold;
font-size: 1.1em;
cursor: pointer;
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
transition-property: background-color, transform;
transition-duration: 0.5s; /* Todas as transições durarão 0.5 segundos */
transition-timing-function: ease-in-out; /* Todas usarão ease-in-out */
}
/* --- Exemplos de transition-delay --- */
.box-no-delay {
transition-delay: 0s; /* Sem atraso */
}
.box-no-delay:hover {
background-color: #28a745;
transform: translateX(50px);
}
.box-short-delay {
transition-delay: 0.3s; /* Atraso curto */
}
.box-short-delay:hover {
background-color: #dc3545;
transform: translateX(50px);
}
.box-medium-delay {
transition-delay: 0.8s; /* Atraso médio */
}
.box-medium-delay:hover {
background-color: #ffc107;
transform: translateX(50px);
}
.box-mixed-delay {
transition-delay: 0s, 0.5s; /* BG sem atraso, Transform com 0.5s de atraso */
}
.box-mixed-delay:hover {
background-color: #6c757d;
transform: translateX(50px);
}
</style>
</head>
<body>
<div class="box box-no-delay">Sem Atraso</div>
<div class="box box-short-delay">Atraso 0.3s</div>
<div class="box box-medium-delay">Atraso 0.8s</div>
<div class="box box-mixed-delay">Atraso Misto</div>
</body>
</html>
Resultado:
- Passe o mouse sobre cada caixa para observar como o
transition-delayafeta o momento em que a transição começa. - Note a sequência de início das animações na caixa "Atraso Misto".
Pontos Chave:
- Início da Transição: Define o tempo de espera antes que a transição comece a animar.
- Unidades: Use
s(segundos) oums(milissegundos). - Padrão:
0s(começa imediatamente). - Múltiplas Propriedades: Pode-se definir atrasos diferentes para cada propriedade listada em
transition-property.
Com transition-delay, você controla o "quando" sua transição começa, permitindo criar sequências e ritmos mais complexos em suas animações.