diff --git a/_server/css/editor_mobile.css b/_server/css/editor_mobile.css
new file mode 100644
index 00000000..f5681118
--- /dev/null
+++ b/_server/css/editor_mobile.css
@@ -0,0 +1,390 @@
+
+html, body, div, img {
+ margin: 0;
+ padding: 0;
+}
+
+body {
+ font-family: Roboto, "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "微软雅黑", Arial, sans-serif;;
+ background-color: #F5F5F5;
+}
+
+/* ::-webkit-scrollbar {
+ width: 5px;
+} */
+.main {
+ max-width: 100%;
+ min-height: 500px;
+ margin: 0 auto;
+}
+
+#left, #mid, #right {
+ border-radius: 2px;
+ box-sizing: border-box;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .14), 0 3px 1px -2px rgba(0, 0, 0, .2), 0 1px 5px 0 rgba(0, 0, 0, .12);
+}
+
+#left {
+ position: absolute;
+ left: 5px;
+ top: 10px;
+ width: 435px;
+ height: 630px;
+}
+
+#editArea {
+ position: absolute;
+ width: 100%;
+ height: 70%;
+ left: 0;
+ top: 0;
+ /* padding: 10px 5px; */
+ box-sizing: border-box;
+}
+
+#pout {
+ display: block;
+ width: 410px;
+ height: 100%;
+ box-sizing: border-box;
+ margin-left: 22px;
+ margin-top: 23px;
+ line-height: 20px;
+ font-size: 12.3px;
+ font-family: 'Lucida Console', Monaco, monospace;
+ white-space: pre;
+ border: 1px solid #ddd;
+ border-radius: 2px;
+ overflow: auto;
+}
+
+#editTip {
+ position: absolute;
+ width: 100%;
+ margin-bottom: 120px;
+ bottom: 0;
+ left: 10px;
+}
+
+#editArea p {
+ margin: 10px;
+ display: block;
+ width: 70%;
+ line-height: 20px;
+ text-align: left;
+ font-size: 14px;
+}
+
+#editTip .btn {
+ float: right;
+ margin-right: 20px;
+ margin-top: 5px;
+}
+
+#mid {
+ position: absolute;
+ left: 448px;
+ top: 10px;
+ width: 440px;
+ height: 630px;
+}
+
+.map {
+ position: absolute;
+ left: 20px;
+ top: 21px;
+ width: 416px;
+ height: 416px;
+}
+
+#mid .tools {
+ position: absolute;
+ width: 425px;
+ height: 180px;
+ left: 0;
+ bottom: 0;
+ border-top: 1px solid #ccc;
+ padding: 10px 5px;
+ margin-left: 8px;;
+ box-sizing: border-box;
+}
+
+#tip {
+ float: right;
+ width: 50%;
+ height: 95%;
+ padding: 5px 10px 10px 10px;
+ margin-right: 0;
+ box-sizing: border-box;
+ border: 1px solid #ccc;
+ border-radius: 2px;
+ font-size: 15px;
+ line-height: 14px;
+}
+
+.files {
+ width: 50%;
+ height: 120px;
+ /* padding: 10px; */
+ margin-top: 15px;
+}
+
+.input {
+ display: block;
+ max-width: 150px;
+ height: 20px;
+ padding: 6px 12px;
+ font-size: 14px;
+ margin-top: 10px;
+ color: #555;
+ background-color: #fff;
+ border: 1px solid #ccc;
+ border-radius: 3px;
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);
+}
+
+#bgSelect {
+ width: 50%;
+ height: 100px;
+ margin-top: 10px;
+}
+
+#bgSelect span {
+ /* display: block; */
+ font-size: 14px;
+ line-height: 30px;
+}
+
+#printOut {
+ margin-top: 10px;
+ height: 20px;
+
+}
+
+.btn {
+ width: 80px;
+ border-radius: 2px;
+ line-height: 30px;
+ margin: 0;
+ min-width: 50px;
+ padding: 0 5px;
+ display: inline-block;
+ margin-top: 5px;
+ font-size: 14px;
+ font-weight: 400;
+ /* text-transform: uppercase; */
+ letter-spacing: 0;
+ overflow: hidden;
+ cursor: pointer;
+ text-decoration: none;
+ text-align: center;
+ vertical-align: middle;
+ border: 0;
+ background: rgba(158, 158, 158, .2);
+ box-shadow: 0 1px 1px 0 rgba(0, 0, 0, .14), 0 2px 1px -1px rgba(0, 0, 0, .2), 0 1px 3px 0 rgba(0, 0, 0, .12);
+ color: #fff;
+ background-color: #26A69A;
+}
+
+.btn:hover {
+ background-color: #009688;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .14), 0 3px 1px -2px rgba(0, 0, 0, .2), 0 1px 5px 0 rgba(0, 0, 0, .12);
+}
+
+#right {
+ position: absolute;
+ left: 900px;
+ top: 10px;
+ width: 440px;
+ height: 630px;
+ /* border: 1px solid rgb(238, 13, 13); */
+}
+
+#iconLib {
+ position: absolute;
+ width: 435px;
+ height: 620px;
+ left: 5px;
+ top: 5px;
+ overflow: auto;
+}
+
+.egameCanvas {
+ position: absolute;
+}
+
+.gameCanvas {
+ position: absolute;
+}
+
+#dataSelection, .appendSelection {
+ position: absolute;
+ /* top:0;
+ left:320px; */
+ z-index: 75;
+ width: 26px;
+ height: 26px;
+ margin: 3px 0 0 3px;
+ padding: 0;
+ /* display: none; */
+ box-sizing: border-box;
+ background-color: rgba(255, 255, 255, 0.0);
+ border: 1px solid #000;
+ box-shadow: 0 0 0 2px #fff,
+ 0 0 0 3px #000;
+}
+
+.warnText {
+ color: #D50000;
+ font-weight: 700;
+ font-size: 14px;
+ line-height: 1.2em;
+}
+
+.infoText {
+ color: #2196F3;
+}
+
+.successText {
+ color: #00897B;
+ line-height: 1.2em;
+}
+
+table, td {
+ border: 1px solid #fff;
+ color: #fff;
+ cursor: crosshair;
+}
+
+table.col {
+ position: relative;
+
+ text-align: center;
+ border-collapse: collapse;
+}
+
+table.col td {
+ background-color: #4DB6AC;
+}
+
+#arrColMark td {
+ width: 16px;
+}
+
+#arrColMark {
+ top: 2px;
+ left: 36px;
+ width: 385px;
+ height: 16px;
+ font-size: 13px;
+}
+
+#mapColMark {
+ top: 2px;
+ left: 19px;
+ width: 418px;
+ height: 16px;
+ font-size: 13px;
+}
+
+#mapColMark td {
+ width: 29px;
+}
+
+#mapColMark td:hover .colBlock {
+ position: absolute;
+ top: 19px;
+ height: 416px;
+ width: 32px;
+ z-index: 100;
+ background-color: rgba(38, 166, 154, .5);
+}
+
+table.row {
+ position: relative;
+ text-align: right;
+ vertical-align: middle;
+ border-collapse: collapse;
+}
+
+table.row td {
+ background-color: #4C221B;
+}
+
+#arrRowMark {
+ top: 5px;
+ left: 2px;
+ width: 16px;
+ height: 262px;
+ font-size: 12px;
+}
+
+#mapRowMark {
+ top: 1px;
+ left: 2px;
+ width: 16px;
+ height: 416px;
+ font-size: 12px;
+}
+
+#mapRowMark td {
+ height: 29px;
+}
+
+#mapRowMark td:hover .rowBlock {
+ position: absolute;
+ left: 18px;
+ height: 32px;
+ width: 416px;
+ z-index: 100;
+ background-color: rgba(76, 34, 27, .5);
+}
+
+#menuDiv * { margin: 0; padding: 0; }
+#midMenu{
+ background: #fff;
+ border-color: #ccc #666 #666 #ccc;
+ border-style: solid;
+ border-width: 1px;
+ cursor: default;
+ font: normal 13px Arial, sans-serif;
+ margin: 0;
+ outline: none;
+ padding: 4px 0;
+ position: absolute;
+ overflow-y: auto;
+ overflow-x: hidden;
+ max-height: 100%;
+ z-index: 101;
+
+ border-radius: 4px;
+}
+#midMenu .menuitem{
+ color: #000;
+ font: normal 13px Arial, sans-serif;
+ list-style: none;
+ margin: 0;
+ padding: 4px 7em 4px 28px;
+ white-space: nowrap;
+
+ /* padding-left: 12px; */
+
+ /* padding-right: 20px; */
+}
+#midMenu .menuitem:hover{
+ background-color: #d6e9f8;
+ border-color: #d6e9f8;
+ border-style: dotted;
+ border-width: 1px 0;
+ padding-bottom: 3px;
+ padding-top: 3px;
+}
+#midMenu .menuitem-content{
+ color: #000;
+ font: normal 13px Arial, sans-serif;
+}
+
+/* for vue dom */
+[v-cloak] {
+ display: none !important;
+}
diff --git a/_server/css/editor_mode_mobile.css b/_server/css/editor_mode_mobile.css
new file mode 100644
index 00000000..2cb2e95a
--- /dev/null
+++ b/_server/css/editor_mode_mobile.css
@@ -0,0 +1,227 @@
+.leftTab {
+ border-radius: 2px;
+ box-sizing: border-box;
+ box-shadow: 0 2px 2px 0 rgba(0, 0, 0, .14), 0 3px 1px -2px rgba(0, 0, 0, .2), 0 1px 5px 0 rgba(0, 0, 0, .12);
+}
+
+.leftTab {
+ overflow: auto;
+ position: absolute;
+ height: 630px;
+}
+
+.leftTab > * {
+ margin: 2.5px 5px;
+}
+
+.leftTab > :first-child {
+ margin-top: 5px;
+}
+
+.leftTab > :last-child {
+ margin-bottom: 5px;
+}
+
+.leftTab {
+ left: 5px;
+ top: 10px;
+ width: 435px;
+}
+
+.leftTab .leftTabHeader {
+ position: fixed;
+ top: 15px;
+ left: 15px;
+}
+
+.leftTab .leftTabContent {
+ padding-top: 50px;
+}
+
+#appendPicSelection span {
+ position: absolute;
+ font-size: 11px;
+ -webkit-text-stroke: 1px red;
+ text-shadow: black 1px 0, black 0 1px, black -1px 0, black 0 -1px;
+}
+
+#left6 {
+ left: 5px;
+ top: 5px;
+ z-index: 200;
+ position: fixed;
+ background-color: rgb(245, 245, 245);
+ width: 100%;
+ height: 100%;
+ overflow: hidden;
+}
+
+#left6 #blocklyArea {
+ float: left;
+ width: 60%;
+ height: 95%;
+}
+
+#left6 #blocklyDiv {
+ position: relative;
+}
+
+#left6 .CodeMirror {
+ border: 1px solid #eee;
+ float: left;
+ height: 95%;
+ width: 35%;
+}
+
+#left6 #codeArea {
+ width: 99.5%;
+ height: 15.4em;
+ overflow: y; /* resize:none; */
+}
+
+#left7 {
+ /* height: 440px; width: 375px;float:left; */
+ left: 5px;
+ top: 5px;
+ z-index: 200;
+ position: fixed;
+ background-color: rgb(245, 245, 245);
+ width: 100%;
+ height: 100%;
+}
+
+#left7 .CodeMirror {
+ /* border-top: 1px solid black;
+ border-bottom: 1px solid black; */
+ border: 1px solid #eee;
+ font-size: 14px;
+ height: 95%;
+ width: 95%;
+}
+
+.etable table,
+.etable table td {
+ color: #000;
+ cursor: auto;
+}
+
+/* copy from github-css https://github.com/sindresorhus/github-markdown-css */
+.etable table {
+ border-spacing: 0;
+ border-collapse: collapse;
+}
+
+.etable table {
+ margin-top: 0;
+ margin-bottom: 16px;
+}
+
+.etable table {
+ display: block;
+ width: 100%;
+ overflow: auto;
+}
+
+.etable table th {
+ font-weight: 600;
+}
+
+.etable table th,
+.etable table td {
+ padding: 6px 13px;
+ border: 1px solid #dfe2e5;
+}
+
+.etable table tr {
+ background-color: #fff;
+ border-top: 1px solid #c6cbd1;
+}
+
+.etable table tr:nth-child(2n) {
+ background-color: #f6f8fa;
+}
+
+/* copy end --------------------------------------------- */
+
+.etable tr {
+ width: 100%
+}
+
+.etable tr > :nth-child(1) {
+ width: 20%
+}
+
+.etable tr > :nth-child(2) {
+ width: 20%
+}
+
+.etable tr > :nth-child(3) {
+ width: 60%
+}
+
+.etable table {
+ overflow: visible;
+}
+
+.etable tr:not(:first-child) > :last-child:hover {
+ border: 1px solid rgb(87, 198, 232);
+ box-shadow: 0px 0px 3px rgb(87, 198, 232);
+}
+
+.etable tr:not(:first-child) > :nth-child(2):hover,
+.etable tr:not(:first-child) > :nth-child(1):hover {
+ border: 1px solid rgb(87, 232, 198);
+ box-shadow: 0px 0px 3px rgb(87, 232, 198);
+}
+
+.etable tr:not(:first-child) > :last-child {
+ margin: 0;
+ padding: 0;
+ height: 100%;
+ width: 100%;
+ position: relative;
+}
+
+div.etableInputDiv {
+ position: absolute;
+ padding: 5px 0 0 5px;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+}
+
+.etableInputDiv > * {
+ margin: 0;
+ padding: 0;
+ height: 100%;
+ width: 100%;
+ background-color: rgba(255, 255, 255, 0);
+ border: none;
+}
+
+.etableInputDiv input[type="text"] {
+
+}
+
+.etableInputDiv input[type="checkbox"] {
+ width: 16px;
+ height: 16px;
+ position: absolute;
+ left: 50%;
+ top: 50%;
+ margin-left: -8px;
+ margin-top: -8px;
+}
+
+.etableInputDiv select {
+
+}
+
+.etableInputDiv textarea {
+ resize: none;
+}
+
+.etableInputDiv textarea:hover {
+ margin: -5px;
+}
diff --git a/editor-mobile.html b/editor-mobile.html
new file mode 100644
index 00000000..6222b821
--- /dev/null
+++ b/editor-mobile.html
@@ -0,0 +1,474 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
事件编辑器
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 语法检查
+
+
+
+
+
+
+
+
+
+
请稍后...
+
+
+
![]()
+
+
+
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
![]()
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+