Não consigo encontrar a sintaxe correta para a abreviação de transição CSS com várias propriedades. Isso não faz nada:
.element {
-webkit-transition: height .5s, opacity .5s .5s;
-moz-transition: height .5s, opacity .5s .5s;
-ms-transition: height .5s, opacity .5s .5s;
transition: height .5s, opacity .5s .5s;
height: 0;
opacity: 0;
overflow: 0;
}
.element.show {
height: 200px;
opacity: 1;
}
Eu adiciono a classe show com javascript. O elemento se torna mais alto e visível, apenas não faz a transição. Teste nos mais recentes Chrome, FF e Safari.
O que estou fazendo errado?
EDIT: Só para ficar claro, eu estou procurando a versão abreviada para reduzir meu CSS. É inchado o suficiente com todos os prefixos do fornecedor. Também expandiu o código de exemplo.
css
webkit
css-transitions
shorthand
Gregory Bolkenstijn
fonte
fonte
.5s
valores duplos sãoopacity
pretendidos?Respostas:
Sintaxe:
Observe que a duração deve vir antes do atraso, se o último for especificado.
Transições individuais combinadas em declarações abreviadas:
Ou apenas faça a transição de todos eles:
Aqui está um exemplo direto . Aqui está outro com a propriedade delay .
Edit: anteriormente listados aqui foram as compatibilidades e problemas conhecidos sobre
transition
. Removido para facilitar a leitura.Conclusão: basta usá-lo. A natureza dessa propriedade é ininterrupta para todos os aplicativos e a compatibilidade agora está bem acima de 94% globalmente.
Se você ainda deseja ter certeza, consulte http://caniuse.com/css-transitions
fonte
all
vez de listar as propriedades específicas? Por exemplo, se estou planejando fazer a transiçãobackground
ecolor
apenas - é melhor especificar ambos ou apenas usá-loall
? Além disso - dado que o IE6-9 não suporta transições e o IE10 as suporta sem prefixo - há alguma vantagem / desvantagem em incluir asms-transition:
diretivas?ms-transition
, não sei por que motivo, agora que o IE10 está pronto, por que alguém ainda usaria emms-transition
vez do padrãotransition
. Não causará nenhum problema em ter os dois, mas, especialmente em uma folha de estilo com muita transição, inchará seu CSS. Mais importante, o tamanho do arquivo também será afetado.Se você possui várias propriedades específicas que deseja fazer a transição da mesma maneira (porque também possui algumas propriedades que não deseja fazer a transição, por exemplo
opacity
), outra opção é fazer algo assim (prefixos omitidos por brevidade):A segunda declaração substitui a
all
na declaração abreviada acima e torna (ocasionalmente) um código mais conciso.Demo
fonte
transition-property
substituição, mas também porque, por exemplo,transition-delay
precisa ser especificado após a abreviação (pelo menos no webkit). Em outras palavras, a taquigrafia implica umtransition-delay
de 0 e colocando um atraso autônomo antes dos conjuntos de taquigrafia-lo de volta para 0.transition: [props] [duration] [easing] [delay]
em todos os navegadores modernosEu que trabalho com isso:
fonte
Por ter o atraso de .5s na transição da propriedade opacidade, o elemento ficará completamente transparente (e, portanto, invisível) o tempo todo em que sua altura estiver em transição. Então, a única coisa que você realmente verá é a mudança de opacidade. Portanto, você obterá o mesmo efeito que deixar a propriedade height da transição:
"transição: opacidade .5s .5s;"
É isso que você está querendo? Caso contrário, e você deseja ver a transição da altura, não poderá ter uma opacidade zero durante todo o tempo em que estiver em transição.
fonte
Isso me ajudou a entender / otimizar, apenas o que eu precisava para animar:
~ Isso se aplica a todas as propriedades de transição (duração, função de tempo de transição, etc.) na classe '.base'
fonte
Eu acho que trabalho com isso:
fonte