Jquery UI可resize – 调整放在iframe上的div的大小

如果你查看这个jsbin: http ://jsbin.com/efosed/5/edit并按“Run with JS”,将会有一个可以用jquery uiresize的div。 一切都像预期的那样工作。 div被放置在“全屏”iframe上。 在链接示例中,此iframe具有: display: none

如果我修改它以display: block ,并重新运行脚本,则reziable插件会有一些奇怪的行为。 你可以在这里试试: http : //jsbin.com/efosed/6/edit 。 它不会正确处理鼠标事件。 可能是什么原因,我该如何解决?

你必须实现自己的逻辑来修复iframe。 一种解决方案是在iframe上添加div:

DEMO

 $(function() { $('#resizable').resizable({ start: function(event, ui) { $('
') .css({ width:'100%', height: '100%', position: "absolute", opacity: "0.001", zIndex: 1000 }) .appendTo("body"); }, stop: function(event, ui) { $('.ui-resizable-iframeFix').remove() } }); });

对于支持CSS属性pointer-events 现代浏览器 ,有一个更好的解决方案,请参阅代码和jsbin:

DEMO

 $(function() { $('#resizable').resizable({ start: function(event, ui) { $('iframe').css('pointer-events','none'); }, stop: function(event, ui) { $('iframe').css('pointer-events','auto'); } }); }); 

你可以做得更简单:

使用Javascript

 $(function() { $('#resizable').resizable({ start: function(event, ui) { $(this).addClass('freeze') }, stop: function(event, ui) { $(this).removeClass('freeze') } }); }); 

CSS

 #resizable.freeze iframe { pointer-events: none; } 

仅CSS方法

.ui-resizable-resizing iframe {pointer-events:none; }

每当您resize时,都会添加ui-resizable-resizing类。