html5 跨iframe的拖拽实现移动端页面设计器

阅读更多

     背景:前一阶段做了一个移动页面设计器,拖拽组件、设计器界面、组件属性都在同一个界面,导致设计器(手机壳)中的页眉和页脚位置,尤其是页脚在设计器中没办法像在真正手机中,固定在页面下方。这是由于jqm把整个页面当成了一个容器,如果页眉页脚fixed,那么页眉页脚就会跑到整个页面的最上方和最下方,而不是在设计器中,所以只能把设计器(手机壳)部分改成iframe,这样,把一个jqm完整的页面结构放入其中,页眉页脚就显示正确了。因为这个设计器是通过拖拽组件的方式生成页面,所以就出现了跨iframe的拖拽。

   功能:拖拽组件生成对应组件的代码,并且可以在iframe这个容器中拖动组件进行排序。

    技术:jquery 1.10,jquery-ui 1.11,html5

 

    抛砖引玉:因为这是公司的项目,我在此只抛砖引玉,做一个小例子,页面比较丑,但是功能是实现了。现公司项目,我就不放我们的设计器界面了,我找一个别人网站的设计器的图挂上来,能更明白移动端设计器。

    此设计器网站:猛戳

html5 跨iframe的拖拽实现移动端页面设计器_第1张图片

    废话少说,show me the code!

    主页面:

   





主页面




  • 文本输入框

  • 文本

 

 

     iframe页面:

    





无标题文档








 

    draggable.js代码:

   

function Draggable(options){
	var options = options||{};
	var tag = options.dragTag||"LI";//目前只支持li
	tag = tag.toUpperCase();
	var $dest = $(options.destId);//拖拽放入的容器对象
	$dest.on("dragover", function(ev) {
		ev.preventDefault();
	});
	$dest.on("drop", function(ev) {
		ev.preventDefault();
		var df = ev.originalEvent.dataTransfer;
		var data = df.getData("Text");
		var el = ev.target;//目标对象
		var ctx = $(this).get(0);//当前容器
		if (data==""){
			return false;
		}
		do {
			var litem = document.createElement('li');
			var item = $(litem);
			var html = "";
			if (data=='input_type'){
				html = "";
			}else if (data=='label_type'){
				html = "";
			}
			$(item).addClass("liClass");
			$(item).html(html);
			if ($(this).children().length>0){//当前容器下有li
				if(tag === '' || el.nodeName == tag){//当前目标对象的tagName是LI
					if (el.nextElementSibling){//如果当前对象的下一个兄弟节点存在,那么就将当前拖拽的对象插入到这个兄弟节点的前面
						el.parentNode.insertBefore($(item).get(0),el.nextElementSibling);
					}else{//兄弟节点不存,那么直接append到容器中
						ctx.appendChild($(item).get(0));
					}
				}
			}else{//当前容器下没有li,直接append进这个容器中
				ctx.appendChild($(item).get(0));
			}
		}
		while(el !== ctx && (el = el.parentNode));//当前目标对象不是容器,那么就将当前目标对象的父级节点赋值给当前目标对象
	});
	$dest.sortable();//JQUERY UI sortable组件
	return (function(){
		
	})(options);
}

 

 

 

  • html5 跨iframe的拖拽实现移动端页面设计器_第2张图片
  • 大小: 153.1 KB
  • 拖拽设计器.rar (179.3 KB)
  • 下载次数: 999
  • 查看图片附件

你可能感兴趣的:(html5,跨iframe拖拽,页面设计器)