Falso hover no Internet Explorer

Por: Henrique C. Pereira

Publicado em Friday 28 April 2006 às 13:19

Categoria: HTML/CSS/JScript

Todos sabem que o Internet Explorer não fez uma implementação completa de CSS2. E dentre as várias limitações do browser azul uma delas é não compreender o pseudo elemento :hover. Com ele você pode fazer coisas interessantes que os desenvolvedores do passado utilizavam JavaScript inline para simular o mesmo efeito. Nunca gostei desses scripts inlines.

Eu encontrei o script Fake :hover, um arquivo .htc de extensão proprietária da Microsoft que pode ser chamado de dentro de uma regra de CSS dentro em um conditional comment. Veja mais detalhes deste script no XS4ALL. Através dele, o IE 5 e 6 reconhecem minhas regras de CSS que usam o pseudo elemento :hover em qualquer outro elemento como tables e inputs por exemplo. Simples e eficiente.

Para implementar o script, basta salvá-lo (é claro) e utilizar um conditional comment para chamá-lo da seguinte maneira:


<!--[if IE]>
   <style type="text/css">
        body { behavior:url(scripts/csshover.htc); }
   </style>
<![endif]-->

Como o script é chamado de dentro de um conditional comment, mesmo que o código esteja presente em todas as páginas para todos os browsers, apenas o Internet Explorer vai parsear e tratar seu conteúdo, ficando invisível para os browsers mais inteligentes. Eu apliquei este exemplo no hotsite do e-MBA (o conteúdo não está mais disponível) da Webroom em Uberlândia. Façam seus textes usando o Internet Explorer passando o cursor sobre as tr das tabelas e veja que realmente funciona.

Comentários dos leitores

Este artigo possui 25 comentários

  1. gabriel caires Friday 28 April 2006 às 11:00

    Muito legal isso de não precisar de javascrip inline,eu testei em site que logo estará no ar e funciona bem, mas será que não é possível desenvolver um desse para o :focus e quem sabe para as outras pseudo classe?

    E a pergunta fica no ar…se um arquivo desse concerta um dos muito bugs do ie6 então porque a Microsoft não lança algum path para corrigir esse erro, nem que pra isso fosse preciso chamar alguns desses arquivos automaticamente?

  2. Mario Suzuki #1° Friday 28 April 2006 às 11:11

    Olá Henrique,

    Primeiramente gostaria de parabenizá-lo pelo site, desde que conheci (faz umas 2 semanas) passei a ler muitos artigos seus e gostei muito do conteúdo. Continue com este belo trabalho.

    Andei pesquisando também e achei um site (Sons of Suckerfish), onde lá eles ensinam a implementar não só o :hover, como também o :focus, como o autor do post acima se referia. Se puder enviar um email a ele com o link, acho que ajudaria :D

    Valeu!

    http://www.htmldog.com/articles/suckerfish/

  3. Lucas Alves #2° Friday 28 April 2006 às 11:12

    Muito interessante isso…

    Vou dar uma estudada mais afundo.

    Abraços

  4. Ricardo #3° Friday 28 April 2006 às 11:34

    "Com ele você pode fazer coisas interessantes que os desenvolvedores DO passado utilizavam JavaScript inline para simular o mesmo efeito."

    Falando assim parece ate que ninguem mais usa isso… mas ficou interessante a colocacao – tendendo aos web standards.

    Seria ideal que fossem implementados nos editores WYSIOWYS tambem do passado (what you see is only what you see).

    Falou!

  5. gabriel caires #4° Friday 28 April 2006 às 11:52

    Muito obrigado Mario Suzuki pela atenção eu já vi o seu post e logo vou estudar esse site…

  6. Alexandre Gomes Gaig #5° Friday 28 April 2006 às 12:03

    Já usava há muito… e existe uma versão csshover2.htc, que também tem active e focus para todos os elementos, o que é muito interessante, embora não funcione exatamente bem quanto o hover.

  7. felipe tonello #6° Friday 28 April 2006 às 18:36

    Verdade.. eu discubri isso na prática mesmo.. infelizmente tive q mudar um monte de coisa no meu layout pois estava usando essa propriedade no firefox aí quando fui ver no IE não funcionava… que bom que tem uma solução..

    Abraços

  8. Zephon #7° Friday 28 April 2006 às 20:55

    Não esqueçam de especificar nos conditional comments que é para o script ser lido pelas versões inferiores a 6 no IE. Pelo menos nos primeiros betas do IE7, esse script fazia o navegador travar e o :hover funcionava normalmente, desde que não houvesse nenhum link por baixo de onde um drop-down apareceria.

  9. Ricardo Fero Carlos #8° Saturday 29 April 2006 às 10:25

    Olá

    Eu encontrei um problema nesse script, ele não funcona em imagens.

    Alguem conseguiu fazer um :hover em imagens no ie?

    att.

    Ricardo

  10. Wellington #9° Saturday 29 April 2006 às 15:31

    very good .. vou testar

  11. Tony Lopes #10° Sunday 30 April 2006 às 17:17

    Ficou muito louco! Sou seu fã e você sabe disso!

    Grande abraço!

  12. Estevis #11° Friday 05 May 2006 às 07:23

    Valeu pela dica…..me ajudou muito….ela foi muito importante

  13. Micox #12° Thursday 25 May 2006 às 06:39

    Ótima solução

  14. criação #13° Sunday 04 June 2006 às 20:12

    muito boa a dica..valeu!!!

  15. Leonardo Proc&oacute #14° Thursday 28 September 2006 às 13:43

    Mas por utilizar esse script o ie não vai ficar pedindo toda hora pro usuario ficar clicando p/desbloquear não?

    Valeu pelo artigo mano! Muito 10!!!!

  16. Marcio Toledo #15° Thursday 05 October 2006 às 14:40

    Santa Informação! :D

    []s

  17. Pablo #16° Thursday 07 December 2006 às 07:22

    Ótimo!

    Show de bola!

    estava procurando isso à tempo.

    valeu a dica!

  18. Marcio #17° Monday 11 December 2006 às 04:16

    cara..

    faz sem javascript mesmo..

    a#menuQualquer {

    width:200px;

    height:20px;

    background-color: red;

    color: #fff;

    }

    a#menuQualquer:hover {

    background-coloc: black;

    }

    ========

    menuQualquer

  19. Luiz #18° Friday 26 January 2007 às 10:18

    Fala ae blz!

    A dica é realmente muito boa, eu inclusive me aproveitei dela, e estava a mil maravilhas, até aparecer o temível IE7, agora não mais funciona, alguem já passou por isso?

    Um abraço!

  20. Marcelo #19° Tuesday 28 August 2007 às 15:33

    Pergunta ao contrário! Aqui!

    Primeiro o IE 6 é uma IEka mesmo, mas essa função é habilitada por meio de uma simples folha de estilos, como já foi mencionado anteriormente.

    Ex.:

    body {

    a:hover { text-decoration: none; color:#FFFFFF; background:#FFCC00;}

    Dessa forma todos os links ficam com o fundo amarelo e a letra branca.

    Agora pergunto: Quando tenho essa função, como desabilitar ela para links e imagens específicas? Se alguém souber mande-me um e-mail, pois estou tentando isso agora…

    Tenho um menu em dhtml em que essa função acaba se sobrepondo no IE 6…

    maldito IE… faz a gente perder tempo tantos pequenos detalhes…

  21. Carlos #20° Wednesday 21 January 2009 às 10:28

    vlwz..

    ajudou muito ^^

  22. Raquel #21° Tuesday 03 February 2009 às 04:44

    Coloquei o falso hover no meu blog, que é em wordpress, e o hover passou a funcionar no IE. Porém, o layout ficou para a esquerda. O que pode ter acontecido? Vejam no Firefox (que fica perfeito) e no IE http://www.raquelmedeiros.com.br.

  23. Raquel #22° Tuesday 03 February 2009 às 04:48

    Coloquei o falso hover no meu blog em wordpress e ele funcionou no IE7. Porém, o site ficou todo na esquerda da tela. O que pode ter acontecido? O endereço é http://www.raquelmedeiros.com.br

  24. leo #23° Friday 10 June 2011 às 18:37

    que merda… coloquei esse agora bugou de vez…antes tava funcionando o ie-css3.htc… acrescentei esse agora nem tirando volta ao normal os shadow boxes no IE que merda!

  25. comprar esteroides anabolizantes #24° Thursday 22 December 2011 às 11:40

    Eu realmente amor por você para convidados postando em revolucao.etc.br

Deixe seu comentário:

Observação: Todos os campos obrigatórios estão marcados com um asterisco (*).

  1. As seguintes tags podem ser inseridas nos comentários: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Sobre este blog

Meu nome é Henrique C. Pereira e o Revolução Etc é o meu blog pessoal. Eu trabalho com design de interfaces, dispositivos móveis, planejamento de soluções web, arquitetura da informação, programação de interfaces, acessibilidade, padrões web, e-commerce e outras coisas relacionadas.
Leia mais sobre o autor.