Apesar da expectativa de mudança e movimento das pessoas na tela, CSS e HTML têm poucos controles que permitem projetar interatividade, e aqueles que existem são binários.
Um link é uma cor ou outra. Um campo de texto é um tamanho ou outro. Uma foto é transparente ou opaca. Não entre intermediários de um estado para o outro. Sem transições .
Isso fez com que a maioria das páginas da web parecesse abrupta, com elementos mudando e mudando de modo desagradável.
Sim, podemos usar DHTML e alavancar a biblioteca jQuery para transições, mas isso requer muito código para algo que deve ser muito simples.
O que precisamos é de uma maneira rápida e fácil de adicionar transições simples à página e, neste artigo, você encontrará informações úteis sobre transições de CSS e como usá-las.
Alguns meses atrás, eu coloquei meu pé na minha boca sugerindo que os designers devem começar a usar as novas técnicas do CSS 3 que permitem que eles façam parte do estilo básico que eles estão implorando. O único problema: nenhum deles funcionava no Internet Explorer. Não, nem mesmo o IE8.
Alguns leitores achavam que sugerir técnicas que cerca de 75% das audiências não seriam capazes de ver era imprudente.
Para esses leitores, eu digo: 'Segure seus chapéus' , porque vou apresentar a você outra nova propriedade CSS que permite adicionar transições a qualquer elemento com apenas algumas linhas de código.
Transições CSS estão sendo introduzidas agora no CSS Nível 3, mas já foram adicionadas como uma extensão do Webkit. No momento, isso significa que eles funcionam apenas em navegadores baseados no Webkit, incluindo o Apple Safari e o Google Chrome.
As transições fazem parte do Webkit há algum tempo e são a base de muitas das coisas legais que a interface do usuário do Safari pode fazer que outros navegadores não conseguem.
Mas o W3C CSS Workgroup resistiu a adicionar transições às suas especificações oficiais, alguns membros argumentando que as transições não são propriedades de estilo e seriam melhor manipuladas por uma linguagem de script.
Mas muitos designers e desenvolvedores, inclusive eu, argumentaram que esses são, na verdade, estilos - apenas estilos dinâmicos , em vez dos estilos estáticos tradicionais aos quais tantos de nós estamos acostumados.
Felizmente, o argumento para estilos dinâmicos realizou o dia. Em março passado, representantes da Apple e da Mozilla começaram a adicionar Módulo de Transição CSS para a especificação CSS Nível 3 , modelado de perto sobre o que a Apple já havia adicionado ao Webkit.
Antes de continuarmos, deixe-me enfatizar um ponto: nunca confie em estilos para a funcionalidade do site se os estilos não forem interoperáveis com o navegador (ou seja, disponíveis em todos os navegadores comuns).
Mais uma vez para aqueles que perderam: nunca confie em estilos para a funcionalidade do site se os estilos não forem interoperáveis com o navegador .
Dito isso, você pode usar estilos, como transições, como aprimoramentos de design para melhorar a experiência do usuário, sem sacrificar a capacidade de uso para aqueles que não podem vê-los. Tudo bem, desde que você possa viver sem as transições e os usuários ainda possam completar suas tarefas.
As transições CSS não substituirão todos os usos de DHTML, mas aqui estão algumas maneiras de aprimorar seu design em navegadores que suportam transições, sem arruiná-lo para o restante de seu público.
Você precisará visualizar esta página em Apple Safari 3+ ou Google Chrome ver essas transições funcionando. Ambos os navegadores estão disponíveis nos sabores Mac e PC.
O uso mais óbvio para as transições é destacar elementos (sejam links, tabelas, campos de formulário, botões ou outra coisa) quando o mouse do usuário passa sobre eles. As transições são uma ótima maneira de dar à página uma aparência mais suave.
Exemplo 1
Os menus CSS puros são fáceis de realizar e as transições permitem que você ofereça menus deslizantes e realce de efeitos.
Exemplo # 2
Você pode mover um objeto entre dois pontos da página e usar transições para animar seu movimento.
Exemplo # 3
Clique e segure!
Mas espere um minuto lá, Tex. Antes de mergulhar em transições, temos que entender os vários estados para os quais um elemento pode fazer a transição.
Os estados definem como um determinado elemento interage atualmente com o usuário ou a página e são especificados no CSS usando as pseudo-classes. Por exemplo, quando o usuário passa o mouse sobre um elemento, esse elemento seria estilizado com o hover
pseudo-classe.
Classe Pseudo Dinâmica | Elementos Afetados | Descrição |
:ligação | Apenas links | Links não visitados |
:visitado | Apenas links | Links visitados |
:flutuar | Todos os elementos | Cursor do mouse sobre o elemento |
:ativo | Todos os elementos | Elemento de cliques do mouse |
:foco | Todos os elementos que podem ser selecionados | Elemento selecionado |
Nenhum | Todos os elementos | Estado padrão de todos os elementos |
As transições funcionam alterando um estilo durante um período entre diferentes estados de elementos. Por exemplo, o valor da cor do estado padrão de um elemento passará pelas cores intermediárias no espectro antes de aparecer como o valor da cor para o estado de foco.
Vamos considerar uma transição simples de uma cor para outra quando o usuário passar por cima de um link. Como qualquer outra propriedade CSS, as transições são adicionadas diretamente ao seletor ao qual ela deve ser aplicada. A propriedade pode então seguir um dos quatro valores a seguir.
Propriedade CSS
A propriedade que deve ser alterada (por exemplo, cor). Veja a tabela abaixo para uma lista de todas as propriedades CSS que podem ser transicionadas.
Duração
Quanto tempo durará a transição, geralmente em segundos (por exemplo, .25s
).
Função de temporização
Permite controlar como a duração é cronometrada. Em vez de usar uma contagem linear simples, você pode acelerar ou desacelerar a transição ou até mesmo especificar uma batida ou contagem (por exemplo, linear
). Mais sobre isso mais adiante no artigo.
Demora
Quanto tempo esperar entre a ação e o início da transição, normalmente expresso em segundos (por exemplo, .1s
). Este valor pode ser omitido se você não quiser um atraso.
Porque a propriedade de transição começou como uma extensão Webkit, temos que incluir tanto a transition
e -webkit-transition
propriedades para compatibilidade com versões anteriores.
Vamos primeiro adicionar essas duas propriedades ao :hover
pseudo-classe:
[css]
a: hover {
cor vermelha;
transição -webkit: cor linear .25s;
transição: cor linear .25s;
}
[/ css]
Agora, quando um link é passado, em vez de saltar de azul para vermelho, ele passa por um quarto de segundo pelas cores intermediárias.
Claro, também queremos fazer a transição de volta para a cor do link padrão, por isso vamos adicionar uma transição para o :link
(e provavelmente :visited
) pseudo-classes, com apenas um pequeno atraso (um décimo de segundo) antes de desaparecer:
[css]
a: link, a: visited {
cor azul;
-webkit-transition: cor .25s lineares .1s;
transição: cor .25s lineares .1s;
}
[/ css]
Como uma transição é uma propriedade CSS, se você adicionar várias instâncias da propriedade de transição na mesma regra, a última substituirá as anteriores, em vez de adicioná-las. Então, na regra a seguir, a única transição seria a cor do plano de fundo:
[css]
a: hover {
cor vermelha;
cor de fundo: rgb (235,235,185);
transição -webkit: cor linear .25s;
transição: cor linear .25s;
transição: cor de fundo .15s linear .1;
}
[/ css]
Múltiplas transições são adicionadas como uma lista separada por vírgula na mesma definição de propriedade de transição:
[css]
a: hover {
cor vermelha;
cor de fundo: rgb (235,235,185);
-webkit-transition: color .25s linear, cor de fundo .15s linear .1s;
transição: cor .25s linear, cor de fundo .15s linear .1s;
}
[/ css]
Isso criará uma transição de cor e cor de fundo.
Quase qualquer propriedade CSS que tenha um componente de cor, comprimento ou posição, incluindo muitas das novas propriedades do CSS 3, pode receber uma transição. Uma exceção notável parece ser box-shadow.
Diretamente da especificação de Transições do W3C, aqui está uma lista de propriedades CSS que podem receber uma transição, juntamente com os aspectos que são transformados. Eu destaquei algumas das propriedades mais úteis.
Propriedade CSS | O que muda |
cor de fundo | Cor |
imagem de fundo | Apenas gradientes |
posição de fundo | Porcentagem, comprimento |
border-bottom-color | Cor |
borda-inferior-largura | comprimento |
Cor da borda | Cor |
border-left-color | Cor |
borda-esquerda-largura | comprimento |
border-right-color | Cor |
margem-direita-largura | comprimento |
espaçamento entre bordas | comprimento |
border-top-color | Cor |
borda-largura-largura | comprimento |
largura de borda | comprimento |
inferior | Comprimento, porcentagem |
cor | Cor |
colheita | Retângulo |
tamanho da fonte | Comprimento, porcentagem |
espessura da fonte | Número |
grade-* | Vários |
altura | Comprimento, porcentagem |
esquerda | Comprimento, porcentagem |
espaçamento entre letras | comprimento |
altura da linha | Número, comprimento, porcentagem |
margem de fundo | comprimento |
margem esquerda | comprimento |
margem direita | comprimento |
margem superior | comprimento |
altura máxima | Comprimento, porcentagem |
largura máxima | Comprimento, porcentagem |
min-altura | Comprimento, porcentagem |
min-width | Comprimento, porcentagem |
opacidade | Número |
cor de contorno | Cor |
deslocamento de contorno | Inteiro |
largura do contorno | comprimento |
fundo de preenchimento | comprimento |
preenchimento esquerdo | comprimento |
padding-right | comprimento |
top de preenchimento | comprimento |
certo | Comprimento, porcentagem |
recuo de texto | Comprimento, porcentagem |
text-shadow | Sombra |
topo | Comprimento, porcentagem |
alinhar verticalmente | Palavras-chave, comprimento, porcentagem |
visibilidade | Visibilidade |
largura | Comprimento, porcentagem |
espaçamento de palavras | Comprimento, porcentagem |
z-index | Inteiro |
zoom | Número |
Com as transições, você pode variar a taxa de contagem, contando mais lentamente no início e acelerando no final, vice-versa ou qualquer coisa entre elas. As transições CSS vêm com cinco palavras-chave para o tempo de transição e permitem que você especifique valores para sua própria curva de tempo.
Nome | Como funciona |
cubic-bezier (x1, y1, x2, y2) | Os valores X e Y estão entre 0 e 1 para definir a forma de uma curva de bezier usada para a função de temporização. |
linear | Velocidade constante |
facilidade | Desaceleração gradual |
facilidade em | Acelerar |
aliviar | Desacelere |
facilidade-out-out | Acelere e depois reduza a velocidade |
As transições tornar-se-ão rapidamente procedimentos operacionais padrão para todos os sites, aprimorando o feedback da interface do usuário.
Para adicionar transições ambiciosas em todo o site, uma opção é adicionar uma transição ao seletor universal, semelhante a uma redefinição de CSS. Isso aplica uma transição padrão a todos os elementos da página, permitindo que você mantenha uma transição consistente:
[css]
*: link, *: visited, *: hover, *: active, *: focus {
-webkit-transition:
cor .25s linear,
background-color 0,25 linear,
linear-cor 0,25 linear;
transição:
cor .25s linear,
background-color 0,25 linear,
linear-cor 0,25 linear;
}
[/ css]
Um argumento contra uma transição universal e, na verdade, contra o uso do seletor universal para redefinições de CSS em geral, é que a aplicação de um estilo a todos os elementos da página pode retardar a renderização da página. No entanto, nunca encontrei nenhuma evidência de que seja esse o caso. Alguém sabe diferente?
Jason Cranford Teague é autor de mais de 13 livros sobre mídia digital, incluindo Falando em Estilos: Os Fundamentos do CSS para Web Designers . Para mais informações sobre CSS e tipografia na web, veja o novo livro de Jason, Tipografia Web Fluida . Siga Jason no Twitter: @jasonspeaking .