Iframe plein écran d'une hauteur de 100%
Est iframe height=100% pris en charge dans tous les navigateurs?
j'utilise doctype comme:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
dans mon code iframe, si je dis:
<iframe src="xyz.pdf" width="100%" height="100%" />
je veux dire Va-t-il réellement prendre la hauteur de la page restante (comme il ya un autre cadre sur le dessus avec une hauteur fixe de 50px) Cette option est-elle prise en charge par tous les principaux navigateurs (IE/Firefox/Safari) ?
aussi en ce qui concerne scrollbars, même si je dis scrolling="no"
, Je peux voir des barres de défibrillation désactivées dans Firefox...Comment puis-je cacher complètement les barres de défilement et régler la hauteur iframe automatiquement?
9 réponses
vous pouvez utiliser frameset comme l'indique la réponse précédente mais si vous insistez sur l'utilisation d'iFrames, les 2 exemples suivants devraient fonctionner:
<body style="margin:0px;padding:0px;overflow:hidden">
<iframe src="http://www.youraddress.com" frameborder="0" style="overflow:hidden;height:100%;width:100%" height="100%" width="100%"></iframe>
</body>
une alternative:
<body style="margin:0px;padding:0px;overflow:hidden">
<iframe src="http://www.youraddress.com" frameborder="0" style="overflow:hidden;overflow-x:hidden;overflow-y:hidden;height:100%;width:100%;position:absolute;top:0px;left:0px;right:0px;bottom:0px" height="100%" width="100%"></iframe>
</body>
pour masquer le défilement avec 2 variantes comme indiqué ci-dessus:
<body style="margin:0px;padding:0px;overflow:hidden">
<iframe src="http://www.youraddress.com" frameborder="0" style="overflow:hidden;height:150%;width:150%" height="150%" width="150%"></iframe>
</body>
Hack avec le second exemple:
<body style="margin:0px;padding:0px;overflow:hidden">
<iframe src="http://www.youraddress.com" frameborder="0" style="overflow:hidden;overflow-x:hidden;overflow-y:hidden;height:150%;width:150%;position:absolute;top:0px;left:0px;right:0px;bottom:0px" height="150%" width="150%"></iframe>
</body>
Pour masquer les barres de défilement de l'iFrame, le parent est overflow: hidden
cacher les barres de défilement et de l'iFrame est fait pour aller jusqu'à 150% de la largeur et de la hauteur ce qui oblige les barres de défilement en dehors de la page et puisque le corps n'a pas de barres de défilement que l'on ne peut attendre de l'iframe à dépasser les limites de la page. Cela cache les barres de défilement de l'iFrame avec la pleine largeur!
3 approches pour créer un fullscreen iframe
:
-
approche 1 - Viewport-longueurs en pourcentage
Dans navigateurs pris en charge , vous pouvez utiliser viewport pourcentage des longueurs comme
height: 100vh
.où
100vh
représente la hauteur du viewport, et de même100vw
représente la largeur.body { margin: 0; /* Reset default margin */ } iframe { display: block; /* iframes are inline by default */ background: #000; border: none; /* Reset default border */ height: 100vh; /* Viewport-relative units */ width: 100vw; }
<iframe></iframe>
-
approche 2-positionnement fixe
cette approche est assez simple. Il suffit de régler le positionnement de l'élément
fixed
et Ajouter unheight
/width
de100%
.iframe { position: fixed; background: #000; border: none; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%; }
<iframe></iframe>
-
approche 3
Pour cette dernière méthode, il suffit de régler le
height
de labody
/html
/iframe
les éléments de100%
.html, body { height: 100%; margin: 0; /* Reset default margin on the body element */ } iframe { display: block; /* iframes are inline by default */ background: #000; border: none; /* Reset default border */ width: 100%; height: 100%; }
<iframe></iframe>
1. Changez votre DOCTYPE pour quelque chose de moins strict. N'utilisez pas XHTML, c'est idiot. Il suffit D'utiliser le HTML 5 doctype et vous êtes bon:
<!doctype html>
2. Vous pourriez avoir besoin pour s'assurer (dépend du navigateur) que l'iframe parent a une hauteur. Et son parent. Et son parent. Etc:
html, body { height: 100%; }
j'ai rencontré le même problème, je tirais une iframe dans une div. Essayez ceci:
<iframe src="http://stackoverflow.com/" frameborder="0" scrolling="yes" seamless="seamless" style="display:block; width:100%; height:100vh;"></iframe>
la hauteur est réglée à 100vh qui représente la hauteur de viewport. En outre, la largeur peut être réglée à 100vw, bien que vous allez probablement rencontrer des problèmes si le fichier source est responsive (votre cadre va devenir très large).
cela a très bien fonctionné pour moi (seulement si le contenu iframe provient du même domaine ):
<script type="text/javascript">
function calcHeight(iframeElement){
var the_height= iframeElement.contentWindow.document.body.scrollHeight;
iframeElement.height= the_height;
}
</script>
<iframe src="./page.html" onLoad="calcHeight(this);" frameborder="0" scrolling="no" id="the_iframe" width="100%" ></iframe>
<iframe src="" style="top:0;left: 0;width:100%;height: 100%; position: absolute; border: none"></iframe>
body {
margin: 0; /* Reset default margin */
}
iframe {
display: block; /* iframes are inline by default */
background: #000;
border: none; /* Reset default border */
height: 100vh; /* Viewport-relative units */
width: 100vw;
}
<iframe></iframe>
S'ajoute à la réponse de Akshit Soota: il est important de définir explicitement la hauteur de chaque élément parent, aussi du tableau et colonne s'il y a lieu:
<body style="margin: 0px; padding:0px; height: 100%; overflow:hidden; ">
<form id="form1" runat="server" style=" height: 100%">
<div style=" height: 100%">
<table style="width: 100%; height: 100%" cellspacing="0" cellpadding="0">
<tr>
<td valign="top" align="left" height="100%">
<iframe style="overflow:hidden;height:100%;width:100%;margin: 0px; padding:0px;"
width="100%" height="100%" frameborder="0" scrolling="no"
src="http://www.youraddress.com" ></iframe>
</td>
vous ajoutez d'abord css
html,body{
height:100%;
}
ce sera le html:
<div style="position:relative;height:100%;max-width:500px;margin:auto">
<iframe src="xyz.pdf" frameborder="0" width="100%" height="100%">
<p>Your browser does not support iframes.</p>
</iframe>
</div>