Estilização: Transições Suaves Usando Apenas CSS
Pouco tempo atrás houve um boom de jQuery na internet. Pra quem não sabe, é uma biblioteca JavaScript que facilita muito a vida dos web designers, permitindo desenvolver soluções e estilizações sem problemas de compatibilidade entre navegadores.
Muitos sugeriam códigos para aplicar transições suaves de cor de fundo, links e divs, coisa facilmente alcançável com poucas linhas de CSS. A questão é que os navegadores ainda não estavam bem preparados para essas regras. Uma estilização que funcionava no Firefox poderia não mostrar nada no Opera, por exemplo.
Agora a coisa mudou; quase todos trabalham bem com CSS3 e muitas vezes não é preciso usar jQuery. Vamos ver um código simples para aplicar transições em elementos mais comuns, como links e divs com efeito hover. Sabendo como fazer, você pode estilizar outros elementos, como menus de navegação.
Código básico
O básico para criar as transições será o uso do transition, com ease. Essa propriedade é lidas sem problema pelos principais navegadores - exceto Internet Explorer, pelo menos por enquanto. Para essa compatibilidade, crie uma regra que atenda a todos: webkit, moz, o e a propriedade básica. Veja um exemplo de regras comentadas.
elemento {
-webkit-transition: 0.3s ease-in; // navegadores webkit, como Safari e Chrome
-moz-transition: 0.3s ease-in; // Firefox
-o-transition: 0.3s ease-in; // Opera
}
Como dá pra ver, é simples: propriedade transição, com 0.3 segundo de duração, e com uma "desaceleração" no início da transição. Ou seja, ela começa suavemente e termina mais depressa.
Aplicando em links
Fazer um link mudar de cor ou tamanho quando passamos o mouse é coisa simples. Qualquer curso elementar de HTML ensina isso. Pra quem não lembra, é isso:
a {
color: #ff0000 // ou seja, links vermelhos
}
a:hover {
color: #fff // ficarão brancos ao passar o mouse.
}
Exemplo desse link funcionando, passe o mouse aqui.
Agora, vamos usar o transition para suavizar a mudança de cor.
a {
color: #ff0000;
-webkit-transition: 0.3s ease-in;
-moz-transition: 0.3s ease-in;
-o-transition: 0.3s ease-in
}
a:hover {
color: #fff;
-webkit-transition: 0.3s ease-in;
-moz-transition: 0.3s ease-in;
-o-transition: 0.3s ease-in
}
Agora, o link com as novas regras. Passe o mouse aqui.
Funciona para outras mudanças do link, como a cor de fundo (background-color). Veja o exemplo:
A lista de propriedades com valores que podem ser alterados por transition é grande. Quase tudo, incluindo cores, valores integrais como posicionamento e tamanho pode ser alterado. Uma exceção notável são as box-shadow.
A lista completa:
| Propriedade | O que muda |
|---|---|
| background-color | Cor |
| background-image | Só degradês |
| background-position | Porcentagem, largura |
| border-bottom-color | Cor |
| border-bottom-width | Largura |
| border-color | Cor |
| border-left-color | Cor |
| border-left-width | Largura |
| border-right-color | Cor |
| border-right-width | Largura |
| border-spacing | Largura |
| border-top-color | Cor |
| border-top-width | Largura |
| border-width | Largura |
| bottom | Largura, porcentagem |
| color | Cor |
| crop | Retangular |
| font-size | Largura, porcentagem |
| font-weight | Número |
| grid-* | Diversos |
| height | Largura, porcentagem |
| left | Largura, porcentagem |
| letter-spacing | Largura |
| line-height | Número, largura, porcentagem |
| margin-bottom | Largura |
| margin-left | Largura |
| margin-right | Largura |
| max-height | Largura, porcentagem |
| max-width | Largura, porcentagem |
| min-height | Largura, porcentagem |
| min-width | Largura, porcentagem |
| opacity | Number |
| outline-color | Cor |
| outline-offset | Integer |
| outline-width | Largura |
| padding-left | Largura |
| padding-right | Largura |
| padding-top | Largura |
| right | Largura, porcentagem |
| text-indent | Largura, porcentagem |
| text-shadow | Sombra |
| top | Largura, porcentagem |
| vertical-align | Keywords, largura, porcentagem |
| visibility | Visibilidade |
| width | Largura, porcentagem |
| word-spacing | Largura, porcentagem |
| z-index | Integer |
| zoom | Número |
Transition em divs
Mais um exemplo, agora alterando a cor de fundo, largura e a cor do texto dentro da div com a classe "mudacor".
CSS para a div normal:
.mudacor {
background-color: #ff4b33; //cor de fundo da div
color: #fff; // cor do texto dentro da div
width:50%; //largura da div
height: 30px //altura da div
}
.mudacor:hover {
background-color: #fff;
color: #000;
width:70%; //largura da div
}
Estilo da div acima, mas com transition:
.mudacor {
background-color: #ff4b33; //cor de fundo da div
color: #fff; // cor do texto dentro da div
width:50%; //largura da div
height: 30px; //altura da div
-webkit-transition: 0.8s linear;
-moz-transition: 0.8s linear;
-o-transition: 0.8s linear
}
.mudacor:hover {
background-color: #fff;
color: #000;
width:70%; //largura da div
-webkit-transition: 0.3s linear;
-moz-transition: 0.3s linear;
-o-transition: 0.3s linear
}
E o resultado. Note que a alteração é mais lenta ao voltar ao normal, porque usei 0.8s na classe padrão, e 0.3 na classe com hover (ou seja: no "hover", a transformação é mais rápida).
NOTA: se você está acessando esta página com o Internet Explorer, já deve ter notado que as regras não funcionaram. Você deveria considerar a possibilidade de trocar de navegador. Veja algumas razões porque eu detesto Internet Explorer.
Para saber mais, leia os links abaixo. Eles são boas referências para aprofundar o tema das transitions, mas os exemplos mostrados aqui com ease e linear já sejam suficientes para aplicar em algumas páginas.
- W3Schools - CSS3 Transitions (em inglês)
- Maujor - CSS3 - Módulo Transitions
- W3Org - CSS3 Transition (em inglês)
- WebDesigner Depot - CSS Transitions 101 (em inglês)
Mais na categoria Design













Comentar Pelo Facebook