46 votes

Fond transparent de l'iframe

Mon application comporte une boîte de dialogue modale avec une iframe à l'intérieur. J'ai écrit mon code jQuery de telle sorte que lorsque la boîte de dialogue s'ouvre, il définit l'attribut "src" approprié de l'iframe afin que le contenu se charge. Cependant, pendant le délai entre l'ouverture de la boîte de dialogue et le chargement du contenu, la iframe apparaît ostensiblement comme une boîte blanche. Je préférerais que l'iframe ait un arrière-plan transparent.

J'ai essayé de définir allowtransparency="yes" sur l'iframe. Avez-vous des idées ? Merci !

60voto

Daniel Magliola Points 8347

J'ai utilisé cette méthode pour créer une IFrame via Javascript et cela a fonctionné pour moi :

// IFrame points to the IFrame element, obviously
IFrame.src = 'about: blank';
IFrame.style.backgroundColor = "transparent";
IFrame.frameBorder = "0";
IFrame.allowTransparency="true";

Je ne sais pas si cela fait une différence, mais j'ai défini ces propriétés avant d'ajouter l'IFrame au DOM. Après l'avoir ajouté au DOM, j'ai défini son src à l'URL réelle.

10 votes

+1 : Je ne connaissais pas l'option allowTransparency jusqu'à maintenant. Merci :)

40voto

atomthegod Points 868
<style type="text/css">
body {background:none transparent;
}
</style>

qui pourrait fonctionner (si vous mettez le iframe) ainsi que

<iframe src="stuff.htm" allowtransparency="true">

3voto

Tropilac Points 43

Définissez la couleur d'arrière-plan de la src à none et autorisez la transparence.

[WITHIN SCR PAGE STYLE]
<style type="text/css">
    body
    {
        background:none transparent;
    }
</style>

[IFRAME]
<iframe src="#" allowtransparency="true">Error, iFrame failed to load.</iframe>

REMARQUE : Je code mon CSS un peu différemment de ce que font les autres.

1voto

Jacob Wyke Points 154

Pourquoi ne pas charger le cadre hors écran ou caché et l'afficher une fois le chargement terminé ? Vous pourriez afficher une icône de chargement à sa place pour que l'utilisateur sache immédiatement qu'elle est en cours de chargement.

1 votes

Parce qu'il n'existe aucun moyen fiable de savoir quand le chargement de l'iframe est terminé. La navigation dans une iframe se fait en définissant son attribut "href", et non par chargement à distance.

0 votes

Vous POURRIEZ, si vous utilisez setTimeout pour déclencher la visibilité après une courte période de temps ,donnant au cadre le temps de se charger... .... Ce n'est peut-être pas une solution, mais une solution de rechange possible...

0voto

WP Punk Points 968

Vous devez rendre le corps de l'iframe transparent. Cela fonctionne pour moi :

const iframe = document.createElement( 'iframe' );

iframe.onload = function() {
    const doc = iframe.contentWindow.document,
        head = doc.querySelector( 'head' ),
        style = doc.createElement( 'style' );

        style.setAttribute( 'type', 'text/css' );
        style.innerHTML = 'body { background: transparent!important; }';

        head.appendChild( style );
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X