Зробіть Iframe відповідно до 100% залишкової висоти контейнера


260

Я хочу створити веб-сторінку з банером та рамкою. Я сподіваюсь, що кадр iframe може заповнити всю решту висоти сторінки та змінити її автоматично, коли браузер змінює розмір. Чи можна це зробити без написання коду Javascript, лише за допомогою CSS?

Я спробував встановити height:100%на iframe, результат досить близький, але iframe намагався заповнити всю висоту сторінки, включаючи 30pxвисоту банерного елемента div, тому я отримав непотрібну вертикальну смугу прокрутки. Це не ідеально.

Примітки до оновлення : Вибачте, що я не описував це питання, я спробував маржу CSS, атрибут padding на DIV, щоб успішно зайняти всю висоту нагадування веб-сторінки, але трюк не працював на iframe.

 <body>
    <div style="width:100%; height:30px; background-color:#cccccc;">Banner</div>
    <iframe src="http: //www.google.com.tw" style="width:100%; height:100%;"></iframe>
</body>

Будь-яка ідея цінується.

Відповіді:


236

Оновлення у 2019 році

TL; DR: Сьогодні найкращим варіантом є останній у цій відповіді - flexbox. Все це чудово підтримує і є роками. Ідіть за цим і не озирайтеся. Решта цієї відповіді залишається з історичних причин.


Хитрість полягає в тому, щоб зрозуміти, на що береться 100%. Читання специфікацій CSS може допомогти вам там.

Якщо зробити короткий короткий опис - є таке поняття, як "містить блок" - що не є необхідним батьківським елементом. Простіше кажучи, це перший елемент вгору за ієрархією, який має положення: відносне або положення: абсолютне. Або сам елемент тіла, якщо нічого іншого немає. Отже, коли ви говорите "ширина: 100%", вона перевіряє ширину "містить блоку" і встановлює ширину вашого елемента на однаковий розмір. Якщо там було щось інше, то ви можете отримати вміст "містить блок", який є більшим, ніж він сам (таким чином "переповнюється").

Висота працює так само. За одним винятком. Ви не можете отримати висоту до 100% вікна браузера. Елементом самого верхнього рівня, проти якого можна розрахувати 100%, є елемент body (або html? Не впевнений), який розтягується достатньо, щоб містити його вміст. Вказання висоти: 100% на неї не матиме ефекту, оскільки у нього немає "батьківського елемента", проти якого можна виміряти 100%. Само вікно не рахується. ;)

Щоб щось розтягнулося рівно на 100% вікна, у вас є два варіанти:

  1. Використовуйте JavaScript
  2. Не використовуйте DOCTYPE. Це не є хорошою практикою, але вона переводить браузери в "режим диваків", в якому ви можете робити висоту = "100%" на елементах, і це розтягне їх до розміру вікна. Зверніть увагу, що решту вашої сторінки, ймовірно, доведеться також змінити, щоб відповідати змінам ДОКТОМУ.

Оновлення: Я не впевнений, чи не помилявся я вже коли публікував це, але це, безумовно, застарів. Сьогодні ви можете це зробити у своєму таблицю стилів: html, body { height: 100% }і це фактично пошириться на весь ваш огляд. Навіть з ДОКТИПОМ. min-height: 100%також може бути корисним, залежно від вашої ситуації.

І я б не радив нікому більше створювати документ у режимі химерності, оскільки це викликає набагато більше головних болів, ніж їх вирішує. У кожному веб-переглядачі є різний режим диваків, тому ускладнювати перегляд вашої сторінки у веб-переглядачах стає на два порядки складніше. Використовуйте ДОКТИП. Завжди. Переважно один HTML5 - <!DOCTYPE html>. Це легко запам’ятати і працює як шарм у всіх браузерах, навіть у 10-річних.

Єдиний виняток - коли вам потрібно підтримати щось на зразок IE5 або щось подібне. Якщо ви там, то ви все одно на самому. Ці старовинні браузери сьогодні не схожі на браузери, і невеликі поради, які даються тут, допоможуть вам у них. З іншого боку, якщо ви там, вам, мабуть, просто доведеться підтримувати ОДИН вид браузера, який позбавляється від проблем із сумісністю.

Удачі!

Оновлення 2: Ей, давно минуло! Через 6 років на сцені з'являються нові варіанти. У мене просто було обговорення в коментарях нижче, ось вам більше хитрощів, які працюють у сучасних браузерах.

Варіант 1 - абсолютне позиціонування. Приємно і чисто, коли знаєш точну висоту першої частини.

body, html {width: 100%; height: 100%; margin: 0; padding: 0}
.first-row {position: absolute;top: 0; left: 0; right: 0; height: 100px; background-color: lime;}
.second-row {position: absolute; top: 100px; left: 0; right: 0; bottom: 0; background-color: red }
.second-row iframe {display: block; width: 100%; height: 100%; border: none;}
<div class="first-row">
  <p>Some text</p>
  <p>And some more text</p>
</div>
<div class="second-row">
  <iframe src="https://jsfiddle.net/about"></iframe>
</div>

Деякі примітки - second-rowконтейнер необхідний , тому що bottom: 0і right: 0не працює на фреймів за якою - то причини. Щось із тим, щоб бути "заміненим" елементом. Але width: 100%і height: 100%працює просто чудово. display: blockпотрібен, оскільки це inlineза замовчуванням елемент, а пробіли починають створювати дивні переливи в іншому випадку.

Варіант 2 - таблиці. Працює, коли не знаєш висоти першої частини. Ви можете використовувати або фактичні <table>теги, або робити це на хитромудрий спосіб display: table. Я піду за останнім, тому що, здається, це в моді в наші дні.

body, html {width: 100%; height: 100%; margin: 0; padding: 0}
.row-container {display: table; empty-cells: show; border-collapse: collapse; width: 100%; height: 100%;}
.first-row {display: table-row; overflow: auto; background-color: lime;}
.second-row {display: table-row; height: 100%; background-color: red; overflow: hidden }
.second-row iframe {width: 100%; height: 100%; border: none; margin: 0; padding: 0; display: block;}
<div class="row-container">
  <div class="first-row">
    <p>Some text</p>
    <p>And some more text</p>
  </div>
  <div class="second-row">
    <iframe src="https://jsfiddle.net/about"></iframe>
  </div>
</div>

Деякі зауваження - overflow: autoгарантує, що рядок завжди містить весь його вміст. Інакше плаваючі елементи іноді можуть переповнюватись. На height: 100%другому ряду переконайтеся, що він розширюється настільки, наскільки може стискати перший ряд настільки ж маленьким, наскільки він стає.

Варіант 3 - флексбокс. Найчистіший з них, але з менш зоряною підтримкою браузера. IE10 знадобляться -ms-префікси для властивостей flexbox, і що-небудь менше взагалі не підтримуватиме його.

body, html {width: 100%; height: 100%; margin: 0; padding: 0}
.row-container {display: flex; width: 100%; height: 100%; flex-direction: column; background-color: blue; overflow: hidden;}
.first-row {background-color: lime; }
.second-row { flex-grow: 1; border: none; margin: 0; padding: 0; }
<div class="row-container">
  <div class="first-row">
    <p>Some text</p>
    <p>And some more text</p>
  </div>
  <iframe src="https://jsfiddle.net/about" class="second-row"></iframe>
</div>

Деякі зауваження - overflow: hiddenце тому, що iframe все ще генерує якесь переповнення навіть display: blockу цьому випадку. Це не видно в повноекранному режимі чи в редакторі фрагментів, але невелике вікно попереднього перегляду отримує додаткову панель прокрутки. Поняття не маю, що це, якщо рамки дивні.


@sproketboy Ну, це рекомендація W3C. І це навіть не найгірше, не довгий шлях.
Іван

Тож ми поміщаємо це в таблицю стилів сторінки IFrame або в таблицю стилів батьківської сторінки, яка містить IFrame?
Матіас Ліккегор Лоренцен

1
Це приголомшливо, дякую! Flexbox - найчистіший насправді, але таблиці також чудово навчаються і, здається, працюють без переливів: jsfiddle.net/dmitri14/1uqh3zgx/2
Дмитро Зайцев

1
Можливо, варто перенести останні оновлення до верхньої частини цієї відповіді. Мені довелося пройти всю справу, щоб дійти до найкращої відповіді, флексбокс.
прощення

2
@forgivenson - Досить правда. На початку цієї відповіді додано замітку.
Vilx-

68

Ми використовуємо JavaScript для вирішення цієї проблеми; ось джерело.


var buffer = 20; //scroll bar buffer
var iframe = document.getElementById('ifm');

function pageY(elem) {
    return elem.offsetParent ? (elem.offsetTop + pageY(elem.offsetParent)) : elem.offsetTop;
}

function resizeIframe() {
    var height = document.documentElement.clientHeight;
    height -= pageY(document.getElementById('ifm'))+ buffer ;
    height = (height < 0) ? 0 : height;
    document.getElementById('ifm').style.height = height + 'px';
}

// .onload doesn't work with IE8 and older.
if (iframe.attachEvent) {
    iframe.attachEvent("onload", resizeIframe);
} else {
    iframe.onload=resizeIframe;
}

window.onresize = resizeIframe;

Примітка: ifmце ідентифікатор iframe

pageY() створено Джоном Ресігом (автором jQuery)


49

Ще один спосіб зробити це - використовувати position: fixed;батьківський вузол.
Якщо я не помиляюся, position: fixed;прив’язує елемент до вікна перегляду, таким чином, як тільки ви дасте цей вузол width: 100%;та height: 100%;властивості, він перейде на весь екран. З цього моменту ви можете помістити <iframe>тег всередину нього і прокласти його на залишок місця (як по ширині, так і по висоті) за допомогою простої width: 100%; height: 100%;інструкції CSS.

Приклад коду


    body {
        margin: 0px;
        padding: 0px;
    }

    /* iframe's parent node */
    div#root {
        position: fixed;
        width: 100%;
        height: 100%;
    }

    /* iframe itself */
    div#root > iframe {
        display: block;
        width: 100%;
        height: 100%;
        border: none;
    }
   <html>
        <head>
            <title>iframe Test</title>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        </head>
        <body>
            <div id="root">
                <iframe src="http://stackoverflow.com/">
                    Your browser does not support inline frames.
                </iframe>
            </div>
        </body>
    </html>


1
Як це прийняти "залишився" висоту ..?
EricG

3
Я помітив, що вам також потрібно додати position: fixedдо iframe.
0xF

дякую, виправили висоту мого звіту про SSRS, самогубства уникли ще один день.
Майк D

1
немає смуг прокрутки
andrej

ідеально - ви могли б пояснити css '>' напр. div # root> iframe furtheras Я з ним незнайомий і не можу знайти посилання
Datadimension

40

Ось кілька сучасних підходів:



  • Підхід 2 - Flexbox підхід

    Приклад тут

    Встановіть displayзагальний батьківський елемент flexразом із flex-direction: column(якщо ви хочете, щоб елементи складалися один на одного). Потім встановіть flex-grow: 1дочірній iframeелемент для того, щоб він заповнив простір, що залишився.

    body {
        margin: 0;
    }
    .parent {
        display: flex;
        flex-direction: column;
        min-height: 100vh;
    }
    .parent .banner {
        background: #f00;
        width: 100%;
        height: 30px;
    }
    .parent iframe {
        background: #000;
        border: none;
        flex-grow: 1;
    }
    <div class="parent">
        <div class="banner"></div>
        <iframe></iframe>
    </div>

    Оскільки цей підхід має меншу підтримку 1 , я б запропонував перейти до вищезгаданого підходу.

1 Хоча це здається, що він працює в Chrome / FF, він не працює в IE (перший метод працює у всіх поточних браузерах).


3
І робота, і ІМО два варіанти, згадані тут, є найкращим підходом. Я вважаю за краще flexboxваріант, тому що з calcвами потрібно знати кількість місця, яке потрібно відняти vh. З flexboxпростим flex-grow:1це робить.
Кілмазінг

39

Ви можете це зробити DOCTYPE, але вам доведеться користуватися table. Заціни:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<style>
*{margin:0;padding:0}
html, body {height:100%;width:100%;overflow:hidden}
table {height:100%;width:100%;table-layout:static;border-collapse:collapse}
iframe {height:100%;width:100%}

.header {border-bottom:1px solid #000}
.content {height:100%}
</style>
</head>
<body>
<table>
    <tr><td class="header"><div><h1>Header</h1></div></td></tr>
    <tr><td class="content">
        <iframe src="http://google.com/" frameborder="0"></iframe></td></tr>
</table>
</body>
</html>

1
принаймні, він не потребує js !! але чи безпечно це в Інтернеті?
Алі Шакіба

1
Недоліком цього рішення є те, що html, body {overflow: hidden;} видалить прокрутки сторінки.
Алі Шакіба

Я намагаюся додати нижній колонтитул у вказаний вище код, але нижній колонтитул не відображається. чи можете ви допомогти.
Акшай Раут

18

Можливо, на це вже відповіли (кілька відповідей вище - "правильні" способи цього), але я подумав, що я також додам своє рішення.

Наш iFrame завантажений в div, отже мені знадобилося щось інше, а потім window.height. І бачачи, що наш проект вже в значній мірі покладається на jQuery, я вважаю це найелегантнішим рішенням:

$("iframe").height($("#middle").height());

Звичайно, "#middle" - ідентифікатор діва. Єдине зайве, що вам потрібно буде зробити, це згадати цю зміну розміру кожного разу, коли користувач змінює розмір вікна.

$(window).resize(function() {
    $("iframe").height($("#middle").height());
});

7

Ось що я зробив. У мене була така ж проблема і годинами шукали ресурси в Інтернеті.

<style type="text/css">
   html, body, div, iframe { margin:0; padding:0; height:100%; }
   iframe { position:fixed; display:block; width:100%; border:none; }
</style>

Я додав це до розділу голови.

Зверніть увагу, що мій кадр розміщений всередині середньої комірки таблиці, що містить 3 рядки та 1 стовпець.


Ваш код буде працювати тільки в TD, що містить IFRAME, має висоту: 100%. Він буде працювати, якщо таблиця міститься в елементі DIV, оскільки у вас є стиль, щоб усі диви мали висоту: 100%.
Микола Петканський

6

Код MichAdel працює для мене, але я вніс незначну модифікацію, щоб він працював належним чином.

function pageY(elem) {
    return elem.offsetParent ? (elem.offsetTop + pageY(elem.offsetParent)) : elem.offsetTop;
}
var buffer = 10; //scroll bar buffer
function resizeIframe() {
    var height = window.innerHeight || document.body.clientHeight || document.documentElement.clientHeight;
    height -= pageY(document.getElementById('ifm'))+ buffer ;
    height = (height < 0) ? 0 : height;
    document.getElementById('ifm').style.height = height + 'px';
}
window.onresize = resizeIframe;
window.onload = resizeIframe;

4

Це правильно, ви показуєте рамку зі 100% висотою щодо її контейнера: корпусу.

Спробуйте це:

<body>
  <div style="width:100%; height:30px; background-color:#cccccc;">Banner</div>
  <div style="width:100%; height:90%; background-color:transparent;">
    <iframe src="http: //www.google.com.tw" style="width:100%; height:100%;">
    </iframe> 
  </div>
</body>

Звичайно, змініть висоту другого дива на потрібну вам висоту.


8
30px + 90%! = 100%
stepancheg

1
міг використовувати calc (100% - 30 пікс.) замість 90%
Justin E

4

спробуйте наступне:

<iframe name="" src="" width="100%" style="height: 100em"/>

це працювало на мене


4
Не заповнює батьківську, просто ставить велику висоту на рамку iframe.
Бен

3

Ви можете зробити це за допомогою html / css так:

<body>
    <div style="width:100%; height:30px; background-color:#cccccc;">Banner</div>
    <iframe src="http: //www.google.com.tw" style="position:fixed;top:30px;bottom:0px;width:100%;"></iframe>
</body>

2

Нове у HTML5: Використовуйте calc (по висоті)

<html style="width:100%; height:100%; margin: 0px; padding: 0px;">
<body style="width:100%; height:100%; margin: 0px; padding: 0px;">
<div style="width:100%; height:30px; background-color:#cccccc;">Banner</div>
<iframe src="http://www.google.com.tw" style="width:100%; height: calc(100% - 30px);"></iframe>
</body>
</html>

2

Я використовував display: table для вирішення подібної проблеми. Це майже працює для цього, залишаючи невелику вертикальну смугу прокрутки. Якщо ви намагаєтесь заповнити цей гнучкий стовпець чимось іншим, ніж рамка iframe, це добре працює (ні

Візьміть наступний HTML

<body>
  <div class="outer">
    <div class="banner">Banner</div>
    <div class="iframe-container">
      <iframe src="http: //www.google.com.tw" style="width:100%; height:100%;border:0;"></iframe>
    </div>
  </div>
</body>

Змініть зовнішній розділ, щоб використовувати display: table та переконайтесь, що він має встановлені ширину та висоту.

.outer {
  display: table;
  height: 100%;
  width: 100%;
}

Зробіть банер рядком таблиці та встановіть його висоту відповідно до ваших уподобань:

.banner {
  display: table-row;
  height: 30px;
  background: #eee;
}

Додайте додатковий роздільник навколо свого рамки iframe (або будь-якого потрібного вам вмісту) і зробіть його рядком таблиці з висотою, встановленою на 100% (встановлення його висоти є критичним, якщо ви хочете вставити кадр iframe для заповнення висоти)

.iframe-container {
  display: table-row;
  height: 100%;
}

Нижче є jsfiddle, що показує це на роботі (без рамки, тому що це, здається, не працює у скрипці)

https://jsfiddle.net/yufceynk/1/


1

Я думаю, у вас тут є концептуальна проблема. Сказати: "Я намагався встановити висоту: 100% на iframe, результат досить близький, але iframe намагався заповнити всю сторінку" , ну коли "100%" не було рівним "цілому"?

Ви попросили iframe заповнити всю висоту свого контейнера (який є корпусом), але, на жаль, у блоці <div>, над яким ви попросили бути величиною 30 пікселів, розміщення є рівним на рівні блоку. Тож тепер для батьківського контейнера пропонується розмір до 100% + 30 пікселів> 100%! Отже, смуги прокрутки.

Я думаю, що ви маєте на увазі , що ви хочете, щоб iframe споживав те, що залишилося, як можуть кадри та комірки таблиці, тобто висота = "*". IIRC цього не існує.

На жаль, наскільки мені відомо, немає способу ефективно змішати / обчислити / відняти абсолютні та відносні одиниці, тому я думаю, що ви зведені до двох варіантів:

  1. Абсолютно розташуйте свій div, який витягне його з контейнера, щоб тільки рамка споживала його висоту. Це залишає перед вами всі інші проблеми, але, можливо, для того, що ви робите непрозорістю або вирівнюванням, було б добре.

  2. Крім того, вам потрібно вказати% висоти для діва та зменшити висоту iframe на стільки. Якщо абсолютна висота насправді така важлива, вам потрібно буде застосувати це до дочірнього елемента діла.


1

Випробувавши маршрут css деякий час, я закінчив написати щось досить базове у jQuery, яке зробило для мене роботу:

function iframeHeight() {
    var newHeight = $j(window).height();
    var buffer = 180;     // space required for any other elements on the page 
    var newIframeHeight = newHeight - buffer;
    $j('iframe').css('height',newIframeHeight);    //this will aply to all iframes on the page, so you may want to make your jquery selector more specific.
}

// When DOM ready
$(function() {
    window.onresize = iframeHeight;
}

Тестовано в IE8, Chrome, Firefox 3.6


1

Він буде працювати з наведеним нижче кодом

<iframe src="http: //www.google.com.tw"style="position: absolute; height: 100%; border: none"></iframe>

1

Аналогічна відповідь @MichAdel, але я використовую JQuery і більш елегантний.

<script type="text/javascript">
    $(document).ready(function() {
        var $iframe = $('#iframe_id')[0];

        // Calculate the total offset top of given jquery element
        function totalOffsetTop($elem) {
            return $elem.offsetTop + ($elem.offsetParent ? totalOffsetTop($elem.offsetParent) : 0);
        }

        function resizeIframe() {
            var height = window.innerHeight || document.body.clientHeight || document.documentElement.clientHeight;
            height -= totalOffsetTop($iframe);
            $iframe.height = Math.max(0, height) + 'px';
        }

        $iframe.onload = resizeIframe();
        window.onresize = resizeIframe;
    });
</script>

iframe_id ідентифікатор тегу iframe


0

Це можна зробити, вимірявши розмір тіла на подіях навантаження / зміни розміру та встановивши висоту (повна висота - висота банера).

Зауважте, що в даний час в IE8 Beta2 ви не можете зробити це завищеним, оскільки ця подія в даний час порушена в IE8 Beta2.


0

або ви можете піти в стару школу і, можливо, використовувати набір кадрів :

<frameset rows="30,*">
  <frame src="banner.swf"/>
  <frame src="inner.html" />
</frameset>

2
@vdbuilder: Ні, це лише дійсний pre-html5. Надіюсь, це все ще працює. ;-)
TJ Crowder

0

Хоча я згоден JS здається кращим варіантом, у мене є дещо робоче рішення CSS. Недоліком цього є те, що якщо вам доводиться часто додавати вміст у ваш HTML-документ iframe, вам доведеться за весь час адаптувати один відсоток.

Рішення:

Спробуйте не вказувати будь-яку висоту для BOTH ваших html-документів,

html, body, section, main-div {}

тоді лише кодуйте це:

#main-div {height:100%;}
#iframe {height:300%;}

зауважте: div повинен бути вашим основним розділом.

Це має відносно працювати. iframe дійсно обчислює 300% видимої висоти вікна. Якщо вміст HTML у другому документі (у кадрі) має висоту менше, ніж у 3 рази більше висоти браузера, він працює. Якщо вам не потрібно часто додавати вміст до цього документа, це постійне рішення, і ви можете просто знайти свій власний%, необхідний відповідно до висоти вмісту.

Це працює, тому що заважає другому HTML-документу (той, який вбудовується) успадковувати його висоту від батьківського html-документа. Це перешкоджає тому, що ми не вказали висоту для обох. Коли ми даємо% дитині, вона шукає свого батька, якщо ні, то вона бере її зміст. І тільки якщо інші контейнери не мають висоти, з того, що я спробував.


0

" Безшовний" " - це новий стандарт, спрямований на вирішення цієї проблеми:

http://www.w3schools.com/tags/att_iframe_seamless.asp

При призначенні цього атрибуту він видалить межі та смуги прокрутки та розмістить рамку iframe до її розміру вмісту. хоча він підтримується лише в Chrome та найновішому Safari

докладніше про це тут: HTML5 iFrame Безшовний атрибут


Безшовні атрибут видалено з специфікації HTML 5.
Ерік Штейнборн

0

Просте рішення jQuery

Використовуйте це в сценарії всередині iframed сторінки

$(function(){

    if(window != top){
        var autoIframeHeight = function(){
            var url = location.href;
            $(top.jQuery.find('iframe[src="'+ url +'"]')).css('height', $('body').height()+4);
        }
        $(window).on('resize',autoIframeHeight);
        autoIframeHeight();
    }

}

0

ви не можете встановити висоту iframe у%, оскільки висота тіла вашого батька не є 100%, тому зробіть висоту батьківського рівня 100%, а потім застосуйте висоту iframe 100%

For eg.
<html>
<head>
<style>
html,body{height:100%}
</style> 
</head>
<body>
<iframe src="http://www.quasarinfosystem.com" height="100%" width="100%" ></iframe>
</body>
</html>

0

Якщо у вас є доступ до вмісту завантаженої рамки iframe, ви можете повідомити її батьків змінити розмір кожного разу, коли він змінить розмір ..

    $(window).resize(function() {
        $(parent.document)
            .find("iframe")
            .css("height", $("body").css("height"));        
    }).trigger("resize");

Якщо у вас на сторінці є більше одного iframe, можливо, вам знадобиться використовувати id або інші розумні методи для поліпшення .find ("iframe"), щоб вибрати правильний.


0

Я думаю, що найкращий спосіб досягти цього сценарію, використовуючи позицію css. встановіть позицію відносно вашого батьківського поділу та позицію: абсолютну для вашої рамки iframe.

.container{
  width:100%;
  position:relative;
  height:500px;
}

iframe{
  position:absolute;
  width:100%;
  height:100%;
}
<div class="container">
  <iframe src="http://www.w3schools.com">
  <p>Your browser does not support iframes.</p>
 </iframe>
</div>

для інших видав прокладки та маржі зараз днів css3 calc () дуже просунутий і в основному сумісний з усіма браузерами.

перевірити calc ()


0

Чому б не зробити цього (з незначним регулюванням накладки / запасів кузова)

<script>
  var oF = document.getElementById("iframe1");
  oF.style.height = document.body.clientHeight - oF.offsetTop - 0;
</script>

Вам потрібно замінити -0з +'px'в кінці. Це працює на мобільному?
Дмитро Зайцев
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.