Полноэкранный 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%" />
Я имею в виду, действительно ли это займет высоту оставшейся страницы (так как есть еще один кадр сверху с фиксированной высотой 50px) Поддерживается ли это во всех основных браузерах (IE/Firefox/Safari) ?
также относительно полос прокрутки, хотя я говорю scrolling="no"
, Я вижу отключенные полосы прокрутки в Firefox...Как я полностью скрыть полосы прокрутки и установить высоту iframe автоматически?
9 ответов
вы можете использовать frameset как предыдущие состояния ответа, но если вы настаиваете на использовании iFrames, должны работать 2 следующих примера:
<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>
чтобы скрыть прокрутку с 2 альтернативами, как показано выше:
<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 со вторым примером:
<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% ширины и высоты что заставляет полосы прокрутки за пределами страницы, и поскольку тело не имеет полос прокрутки, можно не ожидать, что iframe превысит границы страницы. Это скрывает полосы прокрутки iFrame с полной шириной!
3 подхода для создания полноэкранного режима iframe
:
-
подход 1 - Viewport-процент длины
на поддерживаемые браузеры, вы можете использовать viewport-процент длины например
height: 100vh
.здесь
100vh
представляет высоту окна просмотра, а также100vw
представляет ширину.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>
-
подход 2-фиксированное позиционирование
этот подход довольно прямолинейный. Просто установите позиционирование
fixed
элемент и добавитьheight
/width
of100%
.iframe { position: fixed; background: #000; border: none; top: 0; right: 0; bottom: 0; left: 0; width: 100%; height: 100%; }
<iframe></iframe>
-
подход 3
для этого последнего метода просто установите
height
наbody
/html
/iframe
элементов100%
.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. Измените свой DOCTYPE на что-то менее строгое. Не используйте XHTML; это глупо. Просто используйте HTML 5 doctype, и вы хорошо:
<!doctype html>
2. Возможно, Вам потребуется убедиться (в зависимости от браузера), что родитель iframe имеет высоту. И его родитель. И его родитель. И т. д.:
html, body { height: 100%; }
я столкнулся с той же проблемой, я тянул iframe в div. Попробуйте это:
<iframe src="http://stackoverflow.com/" frameborder="0" scrolling="yes" seamless="seamless" style="display:block; width:100%; height:100vh;"></iframe>
высота установлена к 100vh которое стоит для высоты viewport. Кроме того, ширина может быть установлена в 100vw, хотя вы, вероятно, столкнетесь с проблемами, если исходный файл будет реагировать (ваш кадр станет очень широким).
это сработало очень хорошо для меня (только если содержимое 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>
<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>
дополнительно к ответу Akshit Soota: важно явно задать высоту каждого родительского элемента, а также таблицы и колонки Если:
<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>
сначала добавьте 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>