Iframe
не reziable в Firefox. Тогда я решил поставить его в div
и размер, что вместо того, чтобы:Изменить размер iframe & textarea в обратном направлении
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Resizable Iframe & Textarea</title>
<style>
#top, #bottom {
width:300px;
height:200px;
border:1px solid #ccc;
padding:10px;
}
#top {
overflow:auto;
resize:vertical;
}
iframe, textarea {
display:block;
width:100%;
height:100%;
margin:0;
border:0;
padding:0;
resize:none;
background:#ccc;
}
</style>
</head>
<body>
<div id="parent">
<div id="top">
<iframe name="myFrame" src="about:blank"></iframe>
</div>
<div id="bottom">
<textarea></textarea>
</div>
</div>
<script>
var parent = document.getElementById("parent").style.height;
var top = document.getElementById("top").style.height;
var bottom = document.getElementById("bottom").style.height;
window.frames["myFrame"].onresize = function() {
bottom = parent - top;
}
</script>
</body>
</html>
Демо: http://jsfiddle.net/RainLover/EY4mR/
Вот что я хотел бы достичь: когда я увеличить верхний div
, нижний div
должен получить меньше (и наоборот), поэтому размер родителя div
остается фиксированным.
Примечание: нет frameset
или плагин jQuery, пожалуйста! Все, что мне нужно, - это простой подход JavaScript для расчета и изменения нижней границы div
, как только я изменяю размер div
.
Спасибо!
Обновление: свойство CSSize resize не поддерживается: IE11 вообще не понимает его, а в Chrome/Safari/Opera вы можете только увеличить элемент, а не изменять его размер. Поэтому я решил изменить свой подход, и вместо ручка изменения размера пользовательского интерфейса используйте ползунок. Интересно, если вы могли бы рассмотреть мой код и дайте мне знать, что вы думаете:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Resize</title>
<style>
textarea,
iframe {
display: block;
width: 300px;
height: 200px;
margin: 0;
border: 0;
padding: 0;
}
textarea {
background: green;
resize: none;
}
iframe {
background: blue;
}
</style>
</head>
<body>
<input id="slide" oninput="resize();" type="range" min="0" max="400" value="200">
<textarea id="textarea"></textarea>
<iframe id="iframe"></iframe>
<script>
var slide = document.getElementById("slide");
var textarea = document.getElementById("textarea");
var iframe = document.getElementById("iframe");
function resize() {
var slideValue = slide.value;
textarea.style.height = slideValue + "px";
iframe.style.height = 400 - slideValue + "px";
}
</script>
</body>
</html>
Демо: http://jsfiddle.net/RainLover/EY4mR/24/
Спасибо за ответ, но это не похоже на работу, если вы добавите реальный источник, например, http://www.example.com/, в 'iframe'. – Mori
Это связано с [политикой того же происхождения] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript). Вам не разрешено обнаруживать 'onresize' в стороннем окне. – Teemu
Я только что обновил свой код. Не могли бы вы взглянуть? Благодаря! – Mori