Vollbild-iFrame mit einer Höhe von 100 %

Lesezeit: 7 Minuten

Vollbild iFrame mit einer Hohe von 100
Kopenhagen

Wird iframe height=100% in allen Browsern unterstützt?

Ich verwende doctype als:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Wenn ich in meinem Iframe-Code sage:

<iframe src="https://stackoverflow.com/questions/5867985/xyz.pdf" width="100%" height="100%" />

Ich meine, wird es tatsächlich die Höhe der verbleibenden Seite einnehmen (da sich oben ein weiterer Rahmen mit einer festen Höhe von 50 Pixel befindet). Wird dies in allen gängigen Browsern (IE/Firefox/Safari) unterstützt?

Auch in Bezug auf Bildlaufleisten, obwohl ich sage scrolling="no"ich kann deaktivierte Bildlaufleisten in Firefox sehen … Wie kann ich Bildlaufleisten vollständig ausblenden und die Iframe-Höhe automatisch einstellen?

  • Sehen Sie, eigentlich habe ich nicht alle Browser installiert. Auch verschiedene Versionen.

    – Kopenhagen

    3. Mai 2011 um 10:22 Uhr

  • Sie können es auch in einem CSS-Validator versuchen.

    – Ruben

    3. Mai 2011 um 10:27 Uhr

  • Ja, das gibt keine Fehler/Warnungen … Aber meine Frage ist, wenden alle Browser tatsächlich 100% Höhe an?

    – Kopenhagen

    3. Mai 2011 um 10:29 Uhr

  • Für mich hat diese Antwort gut funktioniert: stackoverflow.com/questions/5272519/…

    – Zied Hamdi

    11. September 2014 um 18:34 Uhr

1646278328 494 Vollbild iFrame mit einer Hohe von 100
Axt

Sie könnten Frameset wie in der vorherigen Antwort angegeben verwenden, aber wenn Sie darauf bestehen, iFrames zu verwenden, sollten die beiden folgenden Beispiele funktionieren:

<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>

Eine 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>

Um das Scrollen mit 2 Alternativen wie oben gezeigt auszublenden:

<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 mit dem zweiten Beispiel:

<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>

Um die Bildlaufleisten des iFrame auszublenden, wird das übergeordnete Element erstellt overflow: hidden um Bildlaufleisten auszublenden, und der iFrame wird auf 150 % Breite und Höhe gebracht, was die Bildlaufleisten außerhalb der Seite zwingt, und da der Hauptteil keine Bildlaufleisten hat, kann man nicht erwarten, dass der Iframe die Grenzen der Seite überschreitet . Dadurch werden die Scrollbalken des iFrames mit voller Breite ausgeblendet!

  • Klingt gut..Nur eine Frage aber…Warum müssen wir style=”height:100%;width:100%;” verwenden? wenn wir sowieso sagen iframe height=”100%” width=”100%”

    – Kopenhagen

    3. Mai 2011 um 11:26 Uhr

  • Auch nur IE nimmt nicht 100% Höhe (nimmt ungefähr 200px ht) … FF und Safri nehmen die gesamte verbleibende Höhe.

    – Kopenhagen

    3. Mai 2011 um 12:19 Uhr

  • @Boris Zbarsky Ja, danke, dass du mich das wissen lässt! Ich habe den Beitrag jetzt aktualisiert!! @hmthr Ihre erste Frage zu den doppelten Tags ist, dass frühere Browser die Tags “height” und “width” verwenden, aber nicht gut mit den style-Tags funktionieren! Was den IE-Bug angeht, würde ich es vorziehen, wenn Sie in diesem Fall beim ersten Code bleiben.

    – Axt

    3. Mai 2011 um 15:01 Uhr

  • Damit der Iframe 100 % richtig verwendet, muss das übergeordnete Element 100 % betragen. In neueren Doctypes sind html und body tag nicht automatisch 100%ig. Als ich height:100% für HTML und Body hinzufügte, funktionierte es einwandfrei. Also, die richtige Antwort auf die Frage, denke ich, ist die Antwort von Rudie, außer dass ich meinen xhtml-Doctype behalten musste. Beachten Sie auch, dass die Überlaufregeln dann nicht erforderlich sind. Bildlaufleisten funktionieren dann wie vorgesehen – automatisch.

    – Spiralis

    2. November 2011 um 7:10 Uhr

  • FYI “HTML Tag. Wird in HTML5 nicht unterstützt.” – Ref. w3schools.com/tags/tag_frameset.asp.

    – Zeek2

    4. Dezember 2018 um 9:19 Uhr

3 Ansätze zum Erstellen eines Vollbilds iframe:


  • Ansatz 1 – Viewport-Prozentlängen

    Im unterstützte Browserkönnen Sie verwenden Viewport-Prozentlängen wie zum Beispiel height: 100vh.

    Woher 100vh stellt die Höhe des Ansichtsfensters dar, und ebenso 100vw stellt die Breite dar.

    Beispiel hier

    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>

  • Ansatz 2 – Feste Positionierung

    Dieser Ansatz ist ziemlich geradlinig. Stellen Sie einfach die Positionierung des ein fixed Element und füge a hinzu height/width von 100%.

    Beispiel hier

    iframe {
        position: fixed;
        background: #000;
        border: none;
        top: 0; right: 0;
        bottom: 0; left: 0;
        width: 100%;
        height: 100%;
    }
    <iframe></iframe>

  • Ansatz 3

    Legen Sie für diese letzte Methode einfach die height des body/html/iframe Elemente zu 100%.

    Beispiel hier

    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>

  • Am Ende habe ich eine Variation von Option 1 verwendet … Ich habe width: 100% und height: 100vh verwendet, weil die Quelle, die ich gezogen habe, ziemlich breit war und der iframe in einem div enthalten ist. Hervorragende Lösung. Danke.

    – Nicht Jay

    30. Juli 2015 um 14:34 Uhr

  • Hinzufügen display: block hat den Trick gemacht, um eine doppelte Bildlaufleiste zu verhindern

    – KavenG

    18. Juni 2017 um 15:51 Uhr


  • Einen weiteren Ansatz finden Sie hier (use padding-top: 100%; /* 1:1 Aspect Ratio */): w3schools.com/howto/howto_css_responsive_iframes.asp

    – Pavlo Olijinyk

    26. April 2021 um 12:01 Uhr

Vollbild iFrame mit einer Hohe von 100
Nicht Jay

Ich bin auf das gleiche Problem gestoßen, ich habe einen iframe in ein div gezogen. Versuche dies:

<iframe src="http://stackoverflow.com/" frameborder="0" scrolling="yes" seamless="seamless" style="display:block; width:100%; height:100vh;"></iframe>

Die Höhe ist auf 100vh eingestellt, was für Viewport Height steht. Außerdem könnte die Breite auf 100vw eingestellt werden, obwohl Sie wahrscheinlich auf Probleme stoßen werden, wenn die Quelldatei reagiert (Ihr Rahmen wird sehr breit).

  • Seamless wird meines Wissens in keinem Browser unterstützt

    – Visual Bean

    17. August 2015 um 7:25 Uhr


  • Nachdem ich mehr Zeit damit verbracht habe, mit diesem Problem herumzuspielen, als ich zugeben möchte, ist dies GENAU das, was ich brauchte. Außer dass ich anstelle einer Website eine andere HTML-Datei verwendet habe, die eine geringfügige Anpassung der Ansichtsfensterhöhe erforderte, und jetzt kann es losgehen. Danke!

    – Thomas Jacobs

    27. Januar 2020 um 21:43 Uhr

  • Ich habe mit dieser Lösung eine doppelte Bildlaufleiste erhalten, aber ansonsten hat es funktioniert

    – Ogglas

    17. September 2021 um 15:43 Uhr

1646278328 498 Vollbild iFrame mit einer Hohe von 100
Rudi

1. Ändern Sie Ihren DOCTYPE in einen weniger strengen. Verwenden Sie kein XHTML; Es ist dumm. Verwenden Sie einfach den HTML 5-Doctype und gut ist:

<!doctype html>

2. Möglicherweise müssen Sie sicherstellen (abhängig vom Browser), dass das übergeordnete Element des Iframes eine Höhe hat. Und sein Elternteil. Und sein Elternteil. Etc:

html, body { height: 100%; }

1646278329 35 Vollbild iFrame mit einer Hohe von 100
Iwan

Das hat bei mir sehr gut funktioniert (nur wenn iframe-Content aus der gleiche Domäne):

<script type="text/javascript">
function calcHeight(iframeElement){
    var the_height=  iframeElement.contentWindow.document.body.scrollHeight;
    iframeElement.height=  the_height;
}
</script>
<iframe src="https://stackoverflow.com/questions/5867985/./page.html" onLoad="calcHeight(this);" frameborder="0" scrolling="no" id="the_iframe" width="100%" ></iframe>

  • Dies funktioniert nur, wenn die iframe src befindet sich auf derselben Domäne wie die übergeordnete Seite, andernfalls erhalten Sie einen Fehler mit verweigerter Berechtigung contentWindow.document.

    – Wolfjuk

    4. November 2012 um 13:04 Uhr


  • Es hat ein wenig gedauert, bis dies in WordPress funktionierte, ich habe gerade einen Shortcode in meinem Plugin hinzugefügt. KLAPPT WUNDERBAR.

    – Andy

    10. März 2014 um 16:59 Uhr

  • Es klappt. Das Problem ist jedoch, dass die Höhe nicht bei jedem inneren Iframe-Postback neu berechnet wird. Gibt es eine Problemumgehung?

    – Behrouz.M

    2. August 2015 um 7:33 Uhr

1646278329 932 Vollbild iFrame mit einer Hohe von 100
khoa

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>

  • Dies funktioniert nur, wenn die iframe src befindet sich auf derselben Domäne wie die übergeordnete Seite, andernfalls erhalten Sie einen Fehler mit verweigerter Berechtigung contentWindow.document.

    – Wolfjuk

    4. November 2012 um 13:04 Uhr


  • Es hat ein wenig gedauert, bis dies in WordPress funktionierte, ich habe gerade einen Shortcode in meinem Plugin hinzugefügt. KLAPPT WUNDERBAR.

    – Andy

    10. März 2014 um 16:59 Uhr

  • Es klappt. Das Problem ist jedoch, dass die Höhe nicht bei jedem inneren Iframe-Postback neu berechnet wird. Gibt es eine Problemumgehung?

    – Behrouz.M

    2. August 2015 um 7:33 Uhr

1646278329 655 Vollbild iFrame mit einer Hohe von 100
blueDexter

<iframe src="http://youraddress.com" style="width: 100%; height: 100vh;">

</iframe>

919180cookie-checkVollbild-iFrame mit einer Höhe von 100 %

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy