Полноэкранный iframe с высотой 100%

Поддерживается ли высота iframe = 100% во всех браузерах?

Я использую doctype как:

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

В моем iframe-коде, если я скажу:

<iframe src="xyz.pdf" width="100%" height="100%" />

Я имею в виду, будет ли он фактически занимать высоту оставшейся страницы (так как есть еще один кадр сверху с фиксированной высотой 50 пикселей) Поддерживается ли это во всех основных браузерах (IE/Firefox/Safari)?

Также в отношении полос прокрутки, хотя я говорю scrolling="no", я могу видеть отключенные полосы прокрутки в Firefox... Как полностью скрыть полосы прокрутки и автоматически установить высоту iframe?

Ответ 1

Вы можете использовать набор фреймов в качестве предыдущих состояний ответа, но если вы настаиваете на использовании iFrames, следующие два примера должны работать:

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

Альтернатива:

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

Чтобы скрыть прокрутку с двумя альтернативами, как показано выше:

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

Взломать второй пример:

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

Чтобы скрыть полосы прокрутки iFrame, родительский элемент сделан overflow: hidden, чтобы скрыть полосы прокрутки, и iFrame сделана для того, чтобы увеличить ширину и высоту до 150%, что заставляет полосы прокрутки за пределами страницы, и поскольку тело doesn У вас нет полос прокрутки, нельзя ожидать, что iframe будет превышать границы страницы. Это скрывает полосы прокрутки iFrame с полной шириной!

Ответ 2

3 подходит для создания полноэкранного iframe:


Ответ 3

1. Измените свой DOCTYPE на что-то менее строгое. Не используйте XHTML; это глупо. Просто используйте HTML-тип doctype, и вы хорошо:

<!doctype html>

2. Возможно, вам потребуется убедиться (в зависимости от браузера), что родитель iframe имеет высоту. И его родитель. И его родитель. Etc:

html, body { height: 100%; }

Ответ 4

Это работало очень хорошо для меня (только если содержимое iframe происходит из того же домена):

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

Ответ 5

Я столкнулся с той же проблемой, я потянул iframe в div. Попробуйте следующее:

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

Высота установлена ​​на 100vh, что означает высоту видового экрана. Кроме того, ширина может быть установлена ​​равной 100vw, хотя вы, вероятно, столкнетесь с проблемами, если исходный файл реагирует (ваш кадр станет очень широким).

Ответ 6

<iframe src="" style="top:0;left: 0;width:100%;height: 100%; position: absolute; border: none"></iframe>

Ответ 7

Сначала вы добавляете css

html,body{
height:100%;
}

Это будет 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>

Ответ 8

Дополнительно к ответу Акшита Сота: это importand, чтобы явно установить высоту каждого родительского элемента, а также таблицы и столбца, если таковые имеются:

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

Ответ 9

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>

Ответ 10

Вот краткий код. Для определения текущей высоты окна используется метод jquery. При загрузке iFrame он устанавливает высоту iframe так же, как и текущее окно. Затем, чтобы обрабатывать изменение размера страницы, тег body имеет обработчик события onresize, который устанавливает высоту iframe всякий раз, когда документ изменяется.

<html>
<head>
    <title>my I frame is as tall as your page</title>
     <script type="text/javascript" src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
</head>
<body onresize="$('#iframe1').attr('height', $(window).height());" style="margin:0;" >
    <iframe id="iframe1" src="yourpage.html" style="width:100%;"  onload="this.height=$(window).height();"></iframe>
</body>
</html>

здесь рабочий образец: http://jsbin.com/soqeq/1/

Ответ 11

Другой способ создания жидкостного полноэкранного экрана iframe:


Встроенное видео заполняет всю область viewport при загрузке страницы

Хороший подход для целевых страниц с видео или любым встроенным контентом. У вас может быть любой дополнительный контент ниже встроенного видео, который отображается при прокрутке страницы вниз.

Пример:

CSS и HTML-код.

body {
    margin: 0;
    background-color: #E1E1E1;
}
header {
    width: 100%;
    height: 56vw;
    max-height: 100vh;
}
.embwrap {
    width: 100%;
    height: 100%;
    display: table;
}
.embwrap .embcell {
    width: auto;
    background-color: black;
    display: table-cell;
    vertical-align: top;
}
.embwrap .embcell .ifrwrap {
    height: 100%;
    width: 100%;
    display: inline-table;
    background-color: black;
}

.embwrap .embcell .ifrwrap iframe {
    height: 100%;
    width: 100%;
}
<header>
  <div class="embwrap">
    <div class="embcell">
      <div class="ifrwrap">
        <iframe webkitallowfullscreen="true" mozallowfullscreen="true" allowfullscreen="true" allowtransparency="true" scrolling="no" frameborder="0" width="1920" height="1440" src="http://www.youtube.com/embed/5SIgYp3XTMk?autoplay=0&amp;modestbranding=1&amp;iv_load_policy=3&amp;showsearch=0&amp;rel=1&amp;controls=1&amp;showinfo=1&amp;fs=1"></iframe>
      </div>
    </div>
  </div>
</header>
<article>
  <div style="margin:30px; text-align: justify;">
    <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis lorem orci, rhoncus ut tellus non, pharetra consequat risus. </p>
    <p>Mauris aliquet egestas odio, sit amet sagittis tellus scelerisque in. Fusce in mauris vel turpis ornare placerat non vel purus. Sed in lobortis </p>
  </div>
</article>

Ответ 12

http://embedresponsively.com/

Это отличный ресурс, и он работал очень хорошо, несколько раз я его использовал. Создает следующий код....

<style>
.embed-container { position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden; max-width: 100%; } 
.embed-container iframe, .embed-container object, .embed-container embed { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
</style>
<div class='embed-container'>
<iframe src='http://player.vimeo.com/video/66140585' frameborder='0' webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
</div>

Ответ 13

Только это сработало для меня (но для "того же домена" ):

function MakeIframeFullHeight(iframeElement){
    iframeElement.style.width   = "100%";
    var ifrD = iframeElement.contentDocument || iframeElement.contentWindow.document;
    var mHeight = parseInt( window.getComputedStyle( ifrD.documentElement).height );  // Math.max( ifrD.body.scrollHeight, .. offsetHeight, ....clientHeight,
    var margins = ifrD.body.style.margin + ifrD.body.style.padding + ifrD.documentElement.style.margin + ifrD.documentElement.style.padding;
    if(margins=="") { margins=0;  ifrD.body.style.margin="0px"; }
    (function(){
       var interval = setInterval(function(){
        if(ifrD.readyState  == 'complete' ){
            iframeElement.style.height  = (parseInt(window.getComputedStyle( ifrD.documentElement).height) + margins+1) +"px";
            setTimeout( function(){ clearInterval(interval); }, 1000 );
        } 
       },1000)
    })();
}

вы можете использовать либо:

MakeIframeFullHeight(document.getElementById("iframe_id"));

или

<iframe .... onload="MakeIframeFullHeight(this);" ....