J'ai vu ce problème sur le Web, et toutes les solutions suggérées ne fonctionnent pas pour moi, alors j'ai pensé venir ici.
J'ai une page qui a un iframe. Le haut de la page est un menu déroulant, le reste de la page est l'iframe. Comme tout le monde le sait, l’idée est que le menu reste immobile et que la sélection de menu lance une application dans l’iframe. Le contenu de l'iframe devrait défiler, mais la page dans son ensemble ne devrait pas.
J'ai essayé de placer l'iframe width=height=100%
dans un élément de table unique également avec width=height=100%
, mais j'obtiens deux barres de défilement si la fenêtre est trop courte verticalement.
Aucune suggestion?
Je pense que je ne me suis pas bien expliqué. Je souhaite conserver la barre de défilement dans l'iframe en tant qu'auto, mais je ne souhaite jamais une barre de défilement pour l'ensemble de la page . le navigateur n'a pas besoin de faire une barre de défilement car l'iframe ne doit jamais dépasser du bas de la zone d'affichage.
MIS À JOUR:
DEMO:http://jsbin.com/ewomi3/3/edit
HTML
<table border=0 cellspacing=0 cellpadding=0 id="hold_my_iframe">
<iframe src="http://www.w3schools.com/css/tryit.asp?filename=trycss_overflow" width=100% height=100% marginwidth=0 marginheight=0 frameborder=0></iframe>
</table>
CSS
* { margin:0 padding:0 }
body { margin:0; padding:0; text-align:center }
#hold_my_iframe { padding:0px; margin:0 auto; width:100%; height:100% }
NOTE: J'ai enfin compris ce que vous voulez! Utilisez la balise table
au lieu d'une balise div
comme conteneur! Voir la démo et en profiter!
définissez css overflow sur hidden, quel que soit le cadre dont vous souhaitez supprimer les barres de défilement ...
overflow:hidden
Je sais que c'était un peu vieux, mais voici ce que j'ai fait pour ma page:
J'avais une page avec juste un iFrame, et je voulais qu'elle prenne toute la page, alors j'ai utilisé
<iframe style="height:100%;width:100%" src="..."></iframe>
Après avoir ajouté la suppression de remplissage/marge/bordure appropriée, j'ai eu le problème de double barre de défilement que vous avez décrit. À l'aide de la fonctionnalité d'inspection de Chrome, j'ai découvert que le corps de la page avait une longueur d'environ 5 pixels par rapport à l'iframe. Je viens donc de modifier le code de l'iframe:
<iframe style="height:100%;width:100%;margin-bottom:-5px;" src="..."></iframe>
Ce margin-bottom:-5px;
corrige le problème pour moi.
Pour ceux qui ont encore ce problème de double barre de défilement, il suffit d’envelopper l’iframe avec un élément overflow: hidden, puis d’ajouter une hauteur de 100% au code HTML, au corps, à l’iframe et à l’enveloppe.
http://jsfiddle.net/KZ5wz/ (Je ne sais pas pourquoi le résultat ne s'affiche pas correctement dans JsFiddle, mais cela fonctionne comme un charme dans ma machine)
<style type="text/css">
body {margin:0; overflow: hidden;}
iframe {border: none;}
</style>
<body>
<iframe height="100%" width="100%" src="yourframe1.html"></iframe>
<iframe src="yourframe2.html" width="100%" height="100%"></iframe>
</body>
Les exigences sont claires:
Ma solution est très simple:
overflow:hidden;
.height: calc ( 100% - 120px );
. Le wrapper autour de l'iframe peut être une div ou une table avec une largeur de 100% et une hauteur de 100%.Voici mon exemple avec la hauteur de l'iframe définie sur 80% (de la fenêtre):
body {
overflow: hidden;
}
#hold_my_iframe {
padding:0px; margin:0 auto; width: 100%; height: 100%; overflow:scroll;
}
<table border="0" cellspacing="0" cellpadding="0" id="hold_my_iframe">
<iframe src="http:/example.com/my-iframed-page.php"
width="100%" height="80%"
marginwidth="0" marginheight="0" frameborder="0"></iframe>
</table>
Retirer corps {taille: 100%; }
Voyant que cette question est toujours sans réponse, je me suis dit que je mettrais mes dix sous. Je me demandais si vous aviez joué avec les paramètres display:block
/display:inline
. Si vous ne comprenez pas bien votre question, je ne sais pas exactement comment procéder, mais je pense que vous voudrez peut-être modifier votre iframe
pour afficher inline
.
Eh bien, la question est ancienne, mais j'avais aujourd'hui le même problème et aucune des réponses n'a résolu mon problème. Pour les pages internes (même domaine) uniquement, deux barres de défilement verticales sont également apparues. Un pour naviguer sur la page chargée (correcte) et un autre pour ajuster un peu la hauteur de la zone iframe (!) ... Avec les pages sources externes, cela semble bien fonctionner.
La façon dont j'ai résolu ce problème était d'ajouter une classe au corps de la page interne à charger, comme ceci
<body class="internalPage">
et mettre ce qui suit dans mon fichier CSS
body.internalPage{height: 99.5%;}
J'espère que cela aidera quelqu'un à l'avenir.
J'ai résolu mon problème de double barre de défilement en attribuant dynamiquement la hauteur d'iframe.