Image hover – css trick

Hoje em dia recorre-se muitas vezes ao truque visual “image rollover”, para, por exemplo, definir um link. O que se faz normalmente é utilizar uma imagem para o estado normal, e outra para o “mouse hover”, de modo a criar um efeito visual bastante agradável.
Isto implica usar duas imagens, o que vai sobrecarregando o web site, e se forem utilizadas muitas vezes pode tornar o carregamento do site um pesadelo, pelo menos para o pessoal dos modems e afins.

Recorrendo a uma técnica muito simples de css podemos alcançar o mesmo efeito, mas usando uma só imagem, o que implica reduzir para cerca de metade o download da imagem.

Usemos, por exemplo, esta imagem:
Gimp

Como podem ver, é só juntar na mesma imagem o estado simples e a que querem que apareça quando passarem o ponteiro por cima (neste caso, o modo simples será a preto e branco e o “hover” a cores).

Agora, tendo em conta o tamanho da imagem (256x128px, neste caso), é só usar o seguinte código css para invocar o link com a imagem:

  • a#gimpimg{
    width: 128px;
    height: 128px;
    background-image: url(http://ruimoura.net/imagem/gimp_imghover.png);
    display: block;
    text-decoration: none;
    }

    a#gimpimg:hover {
    background-position: 128px 0;
    }

Resultado final:

Deste modo, a imagem é logo carregada na sua totalidade, reduzindo o tempo de espera e a carga para o servidor e para o visitante do site.

Cheers.

11 Comentarios

  1. Mário Gamito // October 16th, 2006
    Mozilla Firefox 1.5.0.7 Windows XP

    Boas,

    Como é isso de “juntar na mesma imagem o estado simples e a que querem que apareça quando passarem o ponteiro por cima” ?

    Cheers,
    Mário Gamito

  2. RedTuxer // October 16th, 2006
    Mozilla Firefox 1.5.0.7 Debian GNU/Linux

    Eis uma dica sempre útil!

  3. maique // October 16th, 2006
    Mozilla Firefox 2.0 Mac OS X

    bonito.

    agradecido pela dica. o css eh uma coisa a q devia dedicar mais algum tempo, nao percebo puto, mas nunca me parece que vah fazer grande uso na minha vida cada vez menos guique.

    se todos os exemplos fossem assim simples, a coisa ateh podia lah ir…

  4. Cláudio Franco // October 16th, 2006
    Mozilla Firefox 2.0 Windows XP

    Mário:

    Então, invés de teres uma imagem para cada estado, crias uma com os dois efeitos lado a lado.
    Depois simplesmente moves a posição mais para a esquerda/direita consoante a acção.

    Até acho que compliquei a simples descrição do Rui.

    Btw Rui: Boa dica ;)

  5. Boss // October 16th, 2006
    Mozilla Firefox 1.5.0.7 Linux

    @Gamito: peço desculpa, mas eu sou bastante nabo a explicar as coisas aos outros.

    As duas imagens que normalmente se utilizam, a que aparece inicialmente, e a que aparece quando passas o ponteiro do rato por cima, se juntam numa só imagem, como a do exemplo acima(a primeira imagem). É só mesmo juntar as duas numa só, lado a lado, e depois no css jogar com os tamanhos.

    Neste caso é indicado no css que quando passas o ponteiro por cima da imagem a preto e branco ela se transforme na imagem a cores. Tem a ver com a margem definida no css, que está a dizer que com o mousehover a imagem se desvie 128px para a direita, passando assim amostrar a parte a cores e escondendo a parte a preto e branco.

    Espero que tenha sido mais claro ;)

    @maique ,redtuxer e cláudio: obrigado pelos elogios, mas não fui eu que inventei isto, atenção ;)

  6. dextro // October 16th, 2006
    Mozilla Firefox 1.5.0.7 Windows XP

    Ora ai está um grande tutorial, é daquelas coisas que se usa imenso mas que quando se quer raramente se encontra como o fazer :)

  7. Boss // October 16th, 2006
    Mozilla Firefox 2.0 Linux

    Thank you bery nice

  8. hav0x // October 16th, 2006
    Epiphany 2.14 Ubuntu Linux

    boa dica.
    cheers!

  9. José Carlos // October 16th, 2006
    Safari 419.3 Mac OS X

    E assim já não ficamos “uns segundos” à espera que a segunda imagem apareça, porque já foi carregada.

    Boa dica!

  10. Boss // October 16th, 2006
    Mozilla Firefox 2.0 Linux

    Obrigado aos dois ;)

  11. Pedro Oliveira // October 17th, 2006
    Mozilla Firefox 1.5.0.7 Ubuntu Linux

    Boa dica!

    Já andei a pesquisar sobre isto e não tinha encontrado nada tão simples!