用于拖拽放置的前端代码
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <title>后台</title> <link rel="stylesheet" href="/static/layui/css/layui.css"> <script src="/static/jquery-1.11.3.min.js"></script> <link rel="stylesheet" href="/static/fontawesome/css/font-awesome.css"> <script src="/static/echarts.min.js"></script> <style type="text/css"> .layui_tool{height:50px;box-shadow:0px 0px 10px -5px #333;padding:10px 10px 10px 10px} .edit_page{position:relative;height:1200px;width:100%} .edit_page .box_area{position:absolute;left:0px;top:0px;z-index:1;box-shadow:0px 0px 5px -2px #333} .edit_page .box_area .drag{height:45px;} .edit_page .box_area .drag .drag_ico{float:left;height:45px;width:45px;cursor:move;line-height:35px;text-align:center;} .edit_page .box_area .drag .del_ico{float:right;height:45px;width:45px;cursor:pointer;line-height:35px;text-align:center;} .edit_page .box_area .html_area{padding:5px} .edit_page .btn_select select{padding:3px 5px;border:#C9C9C9 solid 1px;border-radius:3px;} .page_echart .html_area textarea{padding:3px 5px;border:#C9C9C9 solid 1px;border-radius:3px;min-width:400px;height:50px;margin-top:5px} .page_echart .page_echart_area{height:320px;width:450px;} .btn_textarea textarea{width:250px;} .layui-progress{width:300px;} .layui-form-label{width:170px} .layui-form-item{margin-bottom:0px} .layui-form-item .layui-input-inline{margin:0px;} .script_echart_area{display:none;} .sucai{display:none;} </style> </head> <body> <div class="layui_tool"> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="yulang(this)" style="background:#009688;color:#fff">预览</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="btn_xs()">迷你按钮</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="btn_sm()">小型按钮</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="page_upload()">上传文件</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="btn_input_text()">单行输入框</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="btn_textarea()">多行输入框</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="btn_input_date()">日期选择</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="btn_input_time()">时间选择</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="pagetxt()">网页纯文本</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="btn_checkbox()">复选框</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="btn_select()">下拉框</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="page_blockquote()">提示条</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="page_progress_bar()">进度条</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="page_timeline()">常规时间线</button> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs" onclick="page_echart()">数据可视化</button> </div> <div class="edit_page"></div> <div class="sucai"> <div class="box_area btn_xs"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area"> <button type="button" class="layui-btn layui-btn-primary layui-btn-xs contenteditable" contenteditable="true">迷你按钮</button> </div> </div> <div class="box_area btn_sm"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area"> <button type="button" class="layui-btn layui-btn-primary layui-btn-sm contenteditable" contenteditable="true">小型按钮</button> </div> </div> <div class="box_area btn_input_text"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area"> <div class="layui-form-item"> <label class="layui-form-label contenteditable" contenteditable="true">单行输入框</label> <div class="layui-input-inline"> <input type="text" name="username" lay-verify="required" placeholder="请输入" autocomplete="off" class="layui-input"> </div> </div> </div> </div> <div class="box_area btn_input_date"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area"> <div class="layui-inline"> <label class="layui-form-label contenteditable" contenteditable="true">日期选择</label> <div class="layui-input-inline"> <input type="date" class="layui-input" placeholder="yyyy"> </div> </div> </div> </div> <div class="box_area btn_input_time"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area"> <div class="layui-inline"> <label class="layui-form-label contenteditable" contenteditable="true">时间选择</label> <div class="layui-input-inline"> <input type="time" class="layui-input" placeholder="HH:ss"> </div> </div> </div> </div> <div class="box_area pagetxt"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area contenteditable" contenteditable="true">网页纯文本</div> </div> <div class="box_area btn_checkbox"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area" style="text-align:center;"><input type="checkbox" name="" title=""></div> </div> <div class="box_area btn_select"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area"> <div class="layui-inline"> <div class="layui-input-inline"> <select> <option>#value#</option> </select> </div> </div> </div> </div> <div class="box_area btn_textarea"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area"> <div class="layui-inline"> <label class="layui-form-label contenteditable" contenteditable="true">多行输入框</label> <div class="layui-input-inline"> <textarea placeholder="请输入" class="layui-textarea"></textarea> </div> </div> </div> </div> <div class="box_area page_blockquote"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area"> <blockquote class="layui-elem-quote contenteditable" contenteditable="true">长按空格可增加长度</blockquote> </div> </div> <div class="box_area page_progress_bar"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area"> <div class="layui-progress layui-progress-big" lay-showpercent="true"> <div class="layui-progress-bar" lay-percent="#value#" style="width:#value#;"><span class="layui-progress-text">#value#</span></div> </div> </div> </div> <div class="box_area page_timeline"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area contenteditable" contenteditable="true"> <ul class="layui-timeline"> <li class="layui-timeline-item"> <i class="layui-icon layui-timeline-axis"></i> <div class="layui-timeline-content layui-text"> <h3 class="layui-timeline-title">01月01日</h3> <p> 1、复制的时候要连球型的图标也一起复制进去 <br>2、在这段文本的最末端回车换行然后粘贴就可以,是这段文本而不是最后面的文本 </p> </div> </li> <li class="layui-timeline-item"> <i class="layui-icon layui-timeline-axis"></i> <div class="layui-timeline-content layui-text"> <div class="layui-timeline-title">过去</div> </div> </li> </ul> </div> </div> <div class="box_area page_upload"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area"> <div class="layui-inline"> <div class="layui-input-inline"> <label> <u>#value#</u> <input type="file" style="display:none"/> </label> </div> </div> </div> </div> <div class="box_area page_echart"> <div class="drag"> <div class="drag_ico fa fa-arrows"></div> <div class="del_ico fa fa-trash-o"></div> </div> <div class="html_area"> <div id="container_#value#" class="page_echart_area"></div> #script# </div> </div> </div> <textarea class="script_echart_area"> var dom = document.getElementById('#id_name#'); var myChart = echarts.init(dom, null, { renderer: 'canvas', useDirtyRect: false, }); var app = {}; var option; #script# if (option && typeof option === 'object') { myChart.setOption(option); } window.addEventListener('resize', myChart.resize); </textarea> <div class="css_area"></div> <script src="/static/layui/layui.all.js"></script> <script> page_is_edit=1; function yulang(this_obj){ if(page_is_edit==1){ $(this_obj).html('编辑'); let css_area = '<style>.edit_page .box_area .drag *{display:none;}.edit_page .box_area{box-shadow:none}</style>'; $('.css_area').html(css_area); $('.contenteditable').each(function(index, value){ $(value).attr({'contenteditable':false}); }); page_is_edit=0; }else{ $(this_obj).html('预览'); let css_area = ''; $('.css_area').html(css_area); $('.contenteditable').each(function(index, value){ $(value).attr({'contenteditable':true}); }); page_is_edit=1; } } //迷你按钮 function btn_xs(){ let html = $('.sucai .btn_xs').prop("outerHTML"); $('.edit_page').append(html); on_action(); } //小型按钮 function btn_sm(){ let html = $('.sucai .btn_sm').prop("outerHTML"); $('.edit_page').append(html); on_action(); } //单行输入框 function btn_input_text(){ let html = $('.sucai .btn_input_text').prop("outerHTML"); $('.edit_page').append(html); on_action(); } //日期选择 function btn_input_date(){ let html = $('.sucai .btn_input_date').prop("outerHTML"); $('.edit_page').append(html); on_action(); } //时间选择 function btn_input_time(){ let html = $('.sucai .btn_input_time').prop("outerHTML"); $('.edit_page').append(html); on_action(); } //网页纯文本 function pagetxt(){ layer.msg('纯文本不仅可以放文本还可以直接粘贴Word中的内容'); let html = $('.sucai .pagetxt').prop("outerHTML"); $('.edit_page').append(html); on_action(); } //复选框 function btn_checkbox(){ let html = $('.sucai .btn_checkbox').prop("outerHTML"); $('.edit_page').append(html); on_action(); } //下拉框 function btn_select(){ layer.prompt({title: '请输入默认值', formType:3}, function(pass, index){ layer.close(index); let html = $('.sucai .btn_select').prop("outerHTML"); html = html.replace('#value#',pass); $('.edit_page').append(html); on_action(); }); } //多行输入框 function btn_textarea(){ let html = $('.sucai .btn_textarea').prop("outerHTML"); $('.edit_page').append(html); on_action(); } //提示条 function page_blockquote(){ let html = $('.sucai .page_blockquote').prop("outerHTML"); $('.edit_page').append(html); on_action(); } //进度条 function page_progress_bar(){ layer.prompt({title: '请输入1到100之间的数字', formType:3}, function(pass, index){ layer.close(index); let html = $('.sucai .page_progress_bar').prop("outerHTML"); html = html.replaceAll('#value#',pass+'%'); $('.edit_page').append(html); on_action(); }); } //提示条 function page_timeline(){ let html = $('.sucai .page_timeline').prop("outerHTML"); $('.edit_page').append(html); on_action(); } //上传文件 function page_upload(){ layer.prompt({title: '请输入文本', formType:3}, function(pass, index){ layer.close(index); let html = $('.sucai .page_upload').prop("outerHTML"); html = html.replaceAll('#value#',pass); $('.edit_page').append(html); on_action(); }); } //数据可视化 function page_echart(){ layer.prompt({title: '请输入代码', formType:2, maxlength:9999}, function(codes, index){ layer.close(index); let html = $('.sucai .page_echart').prop("outerHTML");//复制素材 let idname = Math.floor(Math.random()*100+1)+''+Math.floor(Math.random()*100+1)+''+Math.floor(Math.random()*100+1)+''+Math.floor(Math.random()*100+1);//生成class名 html = html.replaceAll('#value#',idname);//替换class名 html = html.replaceAll('#script#','<div class="script_code_area"></div>');//替换标签 $('.edit_page').append(html); run_echart(codes,idname); on_action(); }); } //生成视图 function run_echart(script_code,id_name){ let temp_script_code= $('.script_echart_area').val();//公共js代码存放的容器 temp_script_code = temp_script_code.replaceAll('#id_name#','container_'+id_name); temp_script_code = temp_script_code.replaceAll('#script#',script_code); console.log(temp_script_code); eval(temp_script_code) $('#container_'+id_name).next(".script_code_area").html("<script>"+temp_script_code+"<\/script>");//写入代码 } $(".drag_ico").mousedown(function(){ $(this).parent().parent().mousemove(function(event){ $(this).css({"top":event.pageY-85,"left":event.pageX-15}); }); }); $(".drag_ico").mouseup(function(){ $(this).parent().parent().unbind('mousemove');//移除鼠标移动事件 }); $(".del_ico").click(function(){ $(this).parent().parent().remove();//移除元素 }); $(".box_area").mouseleave(function(){ $(this).unbind('mousemove');//移除鼠标移动事件 }); $(".box_area").mousedown(function(){ $(".box_area").each(function(){ $(this).css("z-index",1); }); let ceng = Number($(this).css("z-index"))+1; $(this).css("z-index",ceng); }); function on_action(){ $(".drag_ico").on("mousedown",function(){ $(this).parent().parent().mousemove(function(event){ $(this).css({"top":event.pageY-85,"left":event.pageX-15}); }); }); $(".drag_ico").on("mouseup",function(){ $(this).parent().parent().unbind('mousemove');//移除鼠标移动事件 }); $(".box_area").on("mouseleave",function(){ $(this).unbind('mousemove');//移除鼠标移动事件 }); $(".del_ico").on("click",function(){ $(this).parent().parent().remove();//移除元素 }); $(".box_area").on("mousedown",function(){ $(".box_area").each(function(){ $(this).css("z-index",1); }); let ceng = Number($(this).css("z-index"))+1; $(this).css("z-index",ceng); }); } </script> </body> </html>
标签:function,area,edit,前端,page,html,let,放置,拖拽 From: https://www.cnblogs.com/xhrs/p/16935859.html