2010-12-10 51 views
0

Je vois que sur www.dropbox.com, l'image watch_a_video2.png est une image PNG transparente avec une opacité fixée à 0.5. Lorsque vous passez la souris dessus, l'opacité change. Comment font-ils pour ne pas avoir un contour sombre autour de l'image watch_a_video2.png avec IE7/8?Comment Dropbox fait-il fonctionner son opacité PNG + transparente sur IE?

Je ne vois pas un filtre ou d'une bibliothèque fixe IE spécifique ...

J'essaie de reproduire leur style avec Jquery et il fonctionne très bien avec Firefox/Safari, mais je reçois un contour noir avec IE.

Merci pour votre aide.

alt text

+0

Peut-être qu'il me manque quelque chose, mais je viens d'ouvrir ce post dans IE7 et je n'ai pas vu un contour sombre. EDIT: ah, voulez-vous dire le contour sombre apparaît lorsque vous passez la souris sur? :) –

+0

Oui, généralement avec IE7/8 lorsque vous définissez une opacité sur une image PNG transparente, vous obtenez un contour sombre. Cependant, sur le site Web dropbox.com, je ne vois aucun contour sombre autour de l'image PNG. Je veux juste savoir ce qu'ils ont fait pour réparer le bug IE7/8. – benjisail

Répondre

1

Ils utilisent prototype (un framework JavaScript JQuery un peu comme). Ce code semble obtenir l'effet (autrement dit, ils ne sont pas simplement en utilisant css):

document.observe("dom:loaded", function() { 

    var play_link = $("playvideo"); 

    play_link.observe("mouseover", function() { 
     new Effect.Opacity(play_link.down("img"), { duration: 0.2, to: 1.0 }); 
    }); 

    play_link.observe("mouseout", function() { 
     new Effect.Opacity(play_link.down("img"), { duration: 0.2, to: 0.5 }); 
    }) 


    if (!FlashDetect.versionAtLeast(9)) { 
     $("has_flash").hide(); 
     $("no_flash").show(); 
    } 
}); 

Le code HTML que ce code s'applique à:

<a href="#" id="playvideo" onclick="play_screencast(); return false;"> 
    <img src="images/watch_a_video2.png" alt="Watch a video about Dropbox."/><br /> 
    Watch a Video 
</a> 

Vous auriez probablement à mettre quelque chose comme ça dans le CSS aussi:

a {text-decoration:none;} 
img { border:none;} 
/* of course you'd probably want to use a class or id on these elements */ 

Le CSS ci-dessus enlèvera le soulignement du lien, et la frontière de l'image. Enfin, si vous pouviez poster votre code actuel, cela pourrait être utile (je ne pouvais pas voir le contour bleu dans IE8).

+0

Donc, il semble que la solution est l'utilisation de la bibliothèque prototype? – benjisail

+0

Je ne veux pas dire que c'est la "seule" solution, mais c'est comme ça que dropbox.com semble le faire. J'ai essayé une solution JQuery en utilisant .fadeIn() et .fadeOut() en vain. IE8 ne joue pas bien avec ces fonctions, allez comprendre. Si je viens avec autre chose, je vais éditer mon post. – LittleTreeX