Как изменить размер iframe при изменении размера родительского окна
Я не думаю, что это не другой вопрос "изменить размер iframe в соответствии с уровнем контента".
Я действительно хочу динамически изменять размер iframe в соответствии с изменением размера родительского окна. Для поклонников JS Fiddle у меня есть пример здесь
Для тех, кто хочет посмотреть код на SO:
<div id="content">
<iframe src="http://www.apple.com"
name="frame2"
id="frame2"
frameborder="0"
marginwidth="0"
marginheight="0"
scrolling="auto"
allowtransparency="false">
</iframe>
</div>
<div id="block"></div>
<div id="header"></div>
<div id="footer"></div>
CSS
body {
margin: 0px;
padding-top: 78px;
padding-right: 0px;
padding-bottom: 25px;
padding-left: 0px;
min-height: 0px;
height: auto;
text-align: center;
background-color: lightblue;
overflow:hidden;
}
div#header {
top: 0px;
left: 0px;
width: 100%;
height: 85px;
min-width: 1000px;
overflow: hidden;
background-color: darkblue;
}
div#footer {
bottom: 0px;
left: 0px;
width: 100%;
height: 25px;
min-width: 1000px;
background-color: darkblue;
}
iframe#frame2 {
margin: 40px;
position: fixed;
top: 80px;
left: 0px;
width: 200px;
bottom: 25px;
min-width: 200px;
}
div#block {
background-color: lightgreen;
margin: 40px;
position: fixed;
top: 80px;
left: 350px;
width: 200px;
bottom: 25px;
min-width: 200px;
}
@media screen {
body > div#header {
position: fixed;
}
body > div#footer {
position: fixed;
}
}
Там может быть немного странного CSS - я собрал его вместе с фактической страницей. Извинения.
Как вы можете видеть, зеленый цвет div динамически меняет высоту соответственно при изменении размера окна. Я хотел бы узнать, можно ли это сделать с iframe слева от div.
Может ли это сделать только CSS?
Ответы
Ответ 1
Я создал новый jsfiddle, который доставит вам то, что вам нужно в raw css. Я не тестировал кросс-браузер широко, особенно в IE. Я бы ожидал поддержки в IE8 и 9, но не решался бы сказать, что 7 будет работать без икоты.
Соответствующие изменения:
/* This contains the iframe and sets a new stacking context */
div#content {
position: fixed;
top: 80px;
left: 40px;
bottom: 25px;
min-width: 200px;
background: black;
/* DEBUG: If the iframe doesn't cover the whole space,
it'll show through as black. */
}
/* Position the iframe inside the new stacking context
to take up the whole space */
div#content iframe {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
height: 100%;
width: 100%;
}
Ответ 2
Я думаю, что это делает то, что вам нужно.
Сначала я завернул iframe в div и установил ширину и высоту iframe на 100%.
HTML
<div id="frameContainer"><iframe src="http://www.apple.com" name="frame2" id="frame2" frameborder="0" marginwidth="0" marginheight="0" scrolling="auto" onload="" allowtransparency="false"></iframe></div>
CSS
#frameContainer {
margin: 40px;
position: fixed;
top: 80px;
left: 0px;
width: 200px;
bottom: 25px;
min-width: 200px;
}
iframe#frame2 { width: 100%; height:100% }
Затем я добавил следующий код jQuery.
jsFiddle
$(function() {
var widthRatio = $('#frameContainer').width() / $(window).width();
$(window).resize(function() {
$('#frameContainer').css({width: $(window).width() * widthRatio});
});
});
Ответ 3
Вы можете установить ширину и высоту элемента iframe на основе процентов. Здесь пример, где ширина составляет 75% и будет динамически изменяться при увеличении/уменьшении ширины окна вашего браузера: http://jsfiddle.net/fallen888/pkjEB/
Ответ 4
Это сработало для меня:
div#content iframe {width: 100%}