このグループプロジェクトがあり、特定のiframe
のサイズを変更できるように割り当てられました。私は先週から多くのフォーラムの投稿を読んできましたが、iframe
自体はサイズ変更できないことがわかりました。
iframe
をサイズ変更可能にする方法はありますか?
これは、次のように純粋なCSSで実行できます。
iframe {
height: 300px;
width: 300px;
resize: both;
overflow: auto;
}
高さと幅を必要な最小サイズに設定します。縮小するのではなく、拡大するだけです。
ライブの例: https://jsfiddle.net/xpeLja5t/
この手法には IEを除くすべての主要なブラウザーで良好なサポート があります。
次の手順により、iframeのサイズを変更できます。
サイズ変更用のdivを作成します。例えば:
<div class="resizable"></div>
Divのスタイルにスタイルタグを適用します。
.ui-resizable-helper {
border: 1px dotted gray;
}
.resizable {
display: block;
width: 400px;
height: 400px;
padding: 30px;
border: 2px solid gray;
overflow: hidden;
position: relative;
}
iframe {
width: 100%;
height: 100%;
}
JQueryとjQuery UIを含める
<link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/themes/start/jquery-ui.css"rel="stylesheet" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
Resizable
を実行します
$(function () {
$(".resizable").resizable({
animate: true,
animateEasing: 'swing',
animateDuration: 500
});
});
JQuery UIを使用...
HTML:
<div class="resizable" style="width: 200px; height: 200px;">
<iframe src="http://www.example.com/" style="width: 100%; height: 100%;"></iframe>
</div>
JavaScript:
$(".resizable").resizable({
start: function(event, ui) {
ui.element.append($("<div/>", {
id: "iframe-barrier",
css: {
position: "absolute",
top: 0,
right: 0,
bottom: 0,
left: 0,
"z-index": 10
}
}));
},
stop: function(event, ui) {
$("#iframe-barrier", ui.element).remove();
},
resize: function(event, ui) {
$("iframe", ui.element).width(ui.size.width).height(ui.size.height);
}
});
jsFiddle: http://jsfiddle.net/B5vHQ/97/
説明:
JQuery UIのresizable
プラグインはiframeで直接機能しないため、iframeをdivでラップし、代わりにdivのサイズを変更します。上記のコードのresize
イベントにより、iframeがdivに合わせてサイズ変更されます。
ただし、この方法には追加の問題があります-iframeは、マウス移動イベントを親要素に渡しません。これを回避するために、start
およびstop
イベントは、サイズ変更中にiframeを別の要素で覆い、resizable
プラグインがマウスの動きを正しく追跡できるようにします。
何らかの理由で、サイズ変更を機能させるには、ラッパーdivに明示的なサイズを指定する必要があります。ほとんどの場合、これはiframeが同じサイズセットを必要とすることを意味するため、最初からdivのサイズと一致します。
あなたがまだ解決策を見つけていない場合、私は成功しました:
Jquery:
$("#my-div-frame-wrapper").resizable({
alsoResize : '#myframe'
});
HTML:
<div id="my-div-frame-wrapper">
<iframe id="myframe"></iframe>
</div>
私はそれが役立つことを願っています
私はあなたの解決策を見つけました:
HTML:
<div id="resizable" class="ui-widget-content"
style="border-style:solid; height:400px; width:400px">
<h3 class="ui-widget-header">Resizable</h3>
<iframe src="test.aspx" id="myfr" scrolling="no"
frameborder="0" marginheight="0" marginwidth="0" >
Your Browser Do not Support Iframe
</iframe>
</div>
JQUERY:
$(function() {
$("#resizable").resizable();
$("#resizable").resizable({
resize: function(event, ui) {
$("#myfr").css({ "height": ui.size.height,"width":ui.size.width});
}
});
});
私が見つけた最良の解決策は、iframeの幅と高さを100%に設定し、divタグ内にiframeを配置することです。これは、CKEditorなどのツールで見られる基本的なソリューションです。
たとえば、 ユタの開示サイト でそれを行うjQueryダイアログがいくつかあります。レポートまたはorのステートメントをクリックすると、iframeを含むポップアップダイアログが表示されます。それが役に立てば幸い。
非常に簡単、
最初 -
jqueryを追加し、 jquery-ui -
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
その後-
<script>
$(function() {
$( "#resizable" ).resizable();
});
</script>
最後-
<div id="resizable" class="ui-widget-content">
<h3 class="ui-widget-header">Resizable</h3>
</div>
完了しました!
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>jQuery UI Resizable - Default functionality</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
<style>
#resizable { width: 150px; height: 150px; padding: 0.5em; }
#resizable h3 { text-align: center; margin: 0; }
</style>
<script>
$(function() {
$( "#resizable" ).resizable();
});
</script>
</head>
<body>
<div id="resizable" class="ui-widget-content">
<h3 class="ui-widget-header">Resizable</h3>
</div>
</body>
</html>