W3docs

Propriedade CSS transition-delay

Como usar a propriedade CSS transition-delay para definir o tempo de início do efeito de transição. Veja os valores e experimente exemplos.

A propriedade CSS transition-delay define quanto tempo aguardar antes de um efeito de transição começar após a mudança que o aciona. É uma das quatro propriedades longas que compõem a abreviação transition, juntamente com transition-property, transition-duration e transition-timing-function.

Esta página aborda os valores da propriedade, como atrasos positivos e negativos se comportam, como definir um atraso separado para cada propriedade animada e os usos mais comuns em interfaces reais. É uma das propriedades do CSS3.

Como o atraso funciona

O valor padrão é 0s, o que significa que o efeito de transição começa imediatamente quando o valor da propriedade muda (por exemplo, em :hover).

Um atraso positivo adia o início. Com transition-delay: 2s, nada visível acontece por dois segundos; somente então a propriedade começa a animar do seu valor antigo para o novo ao longo da transition-duration.

Um atraso negativo é permitido e se comporta de forma diferente: a transição começa imediatamente, mas inicia no meio da sua linha do tempo, como se já estivesse em execução por esse período. Portanto, transition-duration: 4s com transition-delay: -2s pula diretamente para o ponto intermediário e termina nos dois segundos restantes.

O atraso não se repete — ao contrário de uma iteração de animação, uma transição é executada uma vez por mudança, portanto o atraso se aplica apenas à execução única que a mudança aciona.

Informação

Os navegadores modernos suportam esta propriedade nativamente sem prefixos de fornecedor.

Valor Inicial0s
Aplica-se aTodos os elementos, pseudo-elementos ::before e ::after.
HerdadoNão.
AnimávelNão.
VersãoCSS3
Sintaxe DOMobject.style.transitionDelay = "3s";

Sintaxe

transition-delay: time | initial | inherit;

Exemplo básico

Esta caixa cresce quando você passa o cursor sobre ela. O atraso é 0s, então o crescimento começa imediatamente — altere para 1s no editor para sentir a diferença.

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      div {
        width: 150px;
        height: 150px;
        background: #8ebf42;
        transition-property: width;
        transition-duration: 1s;
        transition-delay: 0s;
      }
      div:hover {
        width: 300px;
      }
    </style>
  </head>
  <body>
    <h2>Transition-delay property example</h2>
    <p>Hover over the element to see the effect.</p>
    <div></div>
  </body>
</html>

Exemplo com 2 segundos de atraso

Aqui a caixa aguarda dois segundos inteiros após você passar o cursor antes de começar a crescer. Observe que transition-property lista várias propriedades como uma lista separada por vírgulas (width, height).

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      div {
        width: 150px;
        height: 150px;
        background: #8ebf42;
        transition-property: width, height;
        transition-duration: 3s;
        transition-delay: 2s;
      }
      div:hover {
        width: 300px;
        height: 300px;
      }
    </style>
  </head>
  <body>
    <h2>Transition-delay property example</h2>
    <p>Hover over the element and wait 2 seconds to see the effect.</p>
    <div></div>
  </body>
</html>

Um atraso diferente para cada propriedade

Ao animar várias propriedades, você pode dar a cada uma o seu próprio atraso listando os valores na mesma ordem que em transition-property. A lista de atrasos é combinada com a lista de propriedades: aqui width começa imediatamente, enquanto background-color aguarda um segundo.

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      div {
        width: 150px;
        height: 150px;
        background: #8ebf42;
        transition-property: width, background-color;
        transition-duration: 1s, 1s;
        transition-delay: 0s, 1s;
      }
      div:hover {
        width: 300px;
        background-color: #1c8470;
      }
    </style>
  </head>
  <body>
    <h2>Staggered transition-delay</h2>
    <p>Hover: the width grows first, then the color changes a second later.</p>
    <div></div>
  </body>
</html>

Casos de uso comuns

  • Escalonar animações para que vários elementos (ou várias propriedades de um elemento) se movam um após o outro em vez de todos ao mesmo tempo, criando uma sensação mais refinada.
  • Menus com intenção de hover. Um pequeno atraso no colapso de um menu suspenso (frequentemente combinado com um atraso em visibility) mantém o menu aberto brevemente para que um movimento de mouse ligeiramente fora do alvo não o feche.
  • Atrasos negativos para iniciar um efeito já "em andamento", útil quando você deseja que um elemento chegue a um ponto específico de sua transição imediatamente.

Valores

ValorDescrição
timeEspecifica quantos segundos ou milissegundos um efeito de transição deve aguardar para iniciar. O valor padrão é 0s.
initialFaz a propriedade usar seu valor padrão.
inheritHerda a propriedade de seu elemento pai.

Prática

Prática
Qual afirmação está correta sobre a propriedade transition-delay?
Qual afirmação está correta sobre a propriedade transition-delay?
Was this page helpful?