Eu estava escrevendo um widget e queria criar um efeito de ‘deslizamento’ usando as transições CSS3. Essencialmente, eu queria mostrar apenas parte do widget até que o usuário passasse o mouse sobre ele.
Como a parte oculta do widget era de largura variável, eu não poderia simplesmente fazer a transição entre duas larguras fixas, para mostrar todo o widget que estava usando width: auto
.
Infelizmente, há um problema com as transições de largura e o auto
valor, descrito aqui , e isso realmente não funciona.
No entanto, no link acima, Paul Irish menciona uma excelente solução: usar min-width
e em max-width
vez disso. Embora eu não soubesse quão largo o widget seria, eu sabia quão largo ele poderia ficar. Especifiquei isso com max-width
e o navegador cuidou do resto.
Meu estilo final era mais ou menos assim:
.widget {
overflow: hidden;
max-width: 100px;
-webkit-transition: max-width .5s ease;
transition: max-width .5s ease;
}
.widget:hover {
max-width: 200px;
}