oipage 1.6.0 → 1.7.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/.github/FUNDING.yml +11 -11
  2. package/AUTHORS.txt +6 -6
  3. package/CHANGELOG +144 -137
  4. package/LICENSE +20 -20
  5. package/README.md +95 -95
  6. package/bin/WebSocket/decodeWsFrame.js +43 -43
  7. package/bin/WebSocket/encodeWsFrame.js +28 -28
  8. package/bin/WebSocket/headersToJSON.js +26 -26
  9. package/bin/WebSocket/index.js +80 -80
  10. package/bin/data/mineTypes.json +104 -104
  11. package/bin/disk.js +42 -42
  12. package/bin/help.js +43 -43
  13. package/bin/intercept.js +15 -15
  14. package/bin/network.js +21 -21
  15. package/bin/run +115 -115
  16. package/bin/serve.d.ts +55 -55
  17. package/bin/serve.js +158 -158
  18. package/bin/template/404.html +186 -186
  19. package/bin/tools/deleteEmptyFolder.js +23 -23
  20. package/bin/tools/format.js +75 -75
  21. package/bin/tools/network.js +42 -42
  22. package/bin/tools/resolve404.js +83 -83
  23. package/bin/tools/resolveImport.js +88 -88
  24. package/bin/website-htmls/components/ui-select-file/index.html +7 -7
  25. package/bin/website-htmls/components/ui-select-file/index.js +37 -37
  26. package/bin/website-htmls/components/ui-select-file/index.scss +44 -44
  27. package/bin/website-htmls/dialogs/imageSize/index.html +54 -54
  28. package/bin/website-htmls/dialogs/imageSize/index.js +53 -53
  29. package/bin/website-htmls/dialogs/imageSize/index.scss +138 -138
  30. package/bin/website-htmls/dialogs/index.js +52 -52
  31. package/bin/website-htmls/images/addFile.svg +1 -1
  32. package/bin/website-htmls/images/img-to-pdf.svg +1 -1
  33. package/bin/website-htmls/index.html +17 -17
  34. package/bin/website-htmls/main.js +13 -13
  35. package/bin/website-htmls/pages/App/index.html +6 -6
  36. package/bin/website-htmls/pages/App/index.js +22 -22
  37. package/bin/website-htmls/pages/App/index.scss +43 -43
  38. package/bin/website-htmls/pages/appStore/index.html +24 -24
  39. package/bin/website-htmls/pages/appStore/index.js +19 -19
  40. package/bin/website-htmls/pages/appStore/index.scss +41 -41
  41. package/bin/website-htmls/pages/chart/index.html +8 -8
  42. package/bin/website-htmls/pages/chart/index.js +72 -72
  43. package/bin/website-htmls/pages/chart/index.scss +72 -72
  44. package/bin/website-htmls/pages/image-editor/index.html +27 -27
  45. package/bin/website-htmls/pages/image-editor/index.js +106 -106
  46. package/bin/website-htmls/pages/image-editor/index.scss +45 -45
  47. package/bin/website-htmls/pages/img-to-pdf/index.html +3 -3
  48. package/bin/website-htmls/pages/img-to-pdf/index.js +44 -44
  49. package/bin/website-htmls/pages/img-to-pdf/index.scss +4 -4
  50. package/bin/website-htmls/router.config.js +19 -19
  51. package/bin/website-htmls/styles/normalize.css +94 -94
  52. package/bin/website-plugins/intercept/chart.js +33 -33
  53. package/bin/website-plugins/intercept/head.js +8 -8
  54. package/bin/website-plugins/intercept/index.js +8 -8
  55. package/bin/website-plugins/intercept/oipage-vislite-intercept.js +33 -33
  56. package/bin/website-plugins/intercept/oipage-zipaper-intercept.js +39 -39
  57. package/bin/website-plugins/loader/index.js +11 -11
  58. package/bin/website-plugins/loader/oipage-html-loader.js +7 -7
  59. package/bin/website-plugins/loader/oipage-scss-loader.js +149 -149
  60. package/nodejs/animation/index.d.ts +19 -19
  61. package/nodejs/animation/index.js +104 -104
  62. package/nodejs/cmdlog/index.d.ts +20 -20
  63. package/nodejs/cmdlog/index.js +75 -75
  64. package/nodejs/disk/index.d.ts +47 -47
  65. package/nodejs/disk/index.js +165 -165
  66. package/nodejs/format/index.d.ts +29 -29
  67. package/nodejs/format/index.js +107 -107
  68. package/nodejs/json/index.d.ts +9 -9
  69. package/nodejs/json/index.js +206 -206
  70. package/nodejs/logform/index.d.ts +18 -18
  71. package/nodejs/logform/index.js +94 -94
  72. package/nodejs/reader/index.d.ts +32 -32
  73. package/nodejs/reader/index.js +20 -20
  74. package/nodejs/remote/index.d.ts +32 -0
  75. package/nodejs/remote/index.js +71 -0
  76. package/nodejs/throttle/index.d.ts +30 -30
  77. package/nodejs/throttle/index.js +50 -50
  78. package/package.json +43 -43
  79. package/web/XMLHttpRequest/index.d.ts +17 -17
  80. package/web/XMLHttpRequest/index.js +60 -60
  81. package/web/animation/index.d.ts +19 -19
  82. package/web/animation/index.js +104 -104
  83. package/web/format/index.d.ts +29 -29
  84. package/web/format/index.js +107 -107
  85. package/web/json/index.d.ts +9 -9
  86. package/web/json/index.js +206 -206
  87. package/web/onReady/index.d.ts +7 -7
  88. package/web/onReady/index.js +8 -8
  89. package/web/performChunk/index.d.ts +4 -4
  90. package/web/performChunk/index.js +19 -19
  91. package/web/reader/index.d.ts +32 -32
  92. package/web/reader/index.js +20 -20
  93. package/web/style/index.d.ts +21 -21
  94. package/web/style/index.js +19 -19
  95. package/web/throttle/index.d.ts +30 -30
  96. package/web/throttle/index.js +50 -50
@@ -1,107 +1,107 @@
1
- import { defineElement } from "zipaper";
2
- import template from "./index.html";
3
- import style from "./index.scss";
4
- import { Canvas } from "vislite";
5
-
6
- export default defineElement({
7
- template,
8
- data() {
9
- return {
10
- painter: null,
11
- drawEl: null
12
- }
13
- },
14
- created() {
15
- this.drawEl = document.getElementById("drawId");
16
- this.painter = new Canvas(this.drawEl, {
17
- scale: 1
18
- }, 700, 400);
19
- },
20
- methods: {
21
- openImage(event, target) {
22
- let file = target.files[0];
23
- if (file) {
24
- let reader = new FileReader();
25
-
26
- reader.onload = () => {
27
- let image = new Image();
28
-
29
- image.onload = () => {
30
-
31
- // 调整画布大小
32
- this.painter = new Canvas(this.drawEl, {
33
- scale: 1
34
- }, image.width, image.height);
35
-
36
- // 绘制图片
37
- this.painter.clearRect(0, 0, image.width, image.height).drawImage(image, 0, 0, image.width, image.height);
38
- }
39
-
40
- image.src = reader.result;
41
- }
42
- reader.readAsDataURL(file);
43
- }
44
- },
45
- download(event, target) {
46
- let btn = document.createElement('a');
47
- btn.href = this.painter.__canvas.toDataURL("image/" + target.getAttribute("type"));
48
- btn.download = "图片." + target.getAttribute("type");
49
- btn.click();
50
- },
51
- changeSize(event, target) {
52
- let canvasInfo = this.painter.getInfo();
53
- this.$openDialog("imageSize", {
54
- title: target.innerText.trim(),
55
- width: canvasInfo.width,
56
- height: canvasInfo.height
57
- }).then(data => {
58
- if (data) {
59
- let base64 = this.painter.__canvas.toDataURL();
60
-
61
- // 调整画布大小
62
- this.painter = new Canvas(this.drawEl, {
63
- scale: 1
64
- }, data.width, data.height).clearRect(0, 0, data.width, data.height);
65
-
66
- if (target.innerText.trim() === "画布大小") {
67
-
68
- // 计算图片的对齐方式
69
-
70
- let _left, _top;
71
- let changeType = data.changeType.split('-');
72
-
73
- // 水平方向
74
- if (changeType[0] == 'left') {
75
- _left = 0;
76
- } else if (changeType[0] == 'right') {
77
- _left = data.width - canvasInfo.width;
78
- } else {
79
- _left = (data.width - canvasInfo.width) * 0.5;
80
- }
81
-
82
- // 垂直方向
83
- if (changeType[1] == 'top') {
84
- _top = 0;
85
- } else if (changeType[1] == 'bottom') {
86
- _top = data.height - canvasInfo.height;
87
- } else {
88
- _top = (data.height - canvasInfo.height) * 0.5;
89
- }
90
-
91
- const img = new Image();
92
- img.onload = () => {
93
- this.painter.getContext().drawImage(img, 0, 0, canvasInfo.width, canvasInfo.height, _left, _top, canvasInfo.width, canvasInfo.height);
94
- };
95
- img.src = base64;
96
-
97
- } else {
98
- this.painter.drawImage(base64, 0, 0, data.width, data.height);
99
- }
100
- }
101
- });
102
- }
103
- },
104
- style: {
105
- content: style
106
- }
1
+ import { defineElement } from "zipaper";
2
+ import template from "./index.html";
3
+ import style from "./index.scss";
4
+ import { Canvas } from "vislite";
5
+
6
+ export default defineElement({
7
+ template,
8
+ data() {
9
+ return {
10
+ painter: null,
11
+ drawEl: null
12
+ }
13
+ },
14
+ created() {
15
+ this.drawEl = document.getElementById("drawId");
16
+ this.painter = new Canvas(this.drawEl, {
17
+ scale: 1
18
+ }, 700, 400);
19
+ },
20
+ methods: {
21
+ openImage(event, target) {
22
+ let file = target.files[0];
23
+ if (file) {
24
+ let reader = new FileReader();
25
+
26
+ reader.onload = () => {
27
+ let image = new Image();
28
+
29
+ image.onload = () => {
30
+
31
+ // 调整画布大小
32
+ this.painter = new Canvas(this.drawEl, {
33
+ scale: 1
34
+ }, image.width, image.height);
35
+
36
+ // 绘制图片
37
+ this.painter.clearRect(0, 0, image.width, image.height).drawImage(image, 0, 0, image.width, image.height);
38
+ }
39
+
40
+ image.src = reader.result;
41
+ }
42
+ reader.readAsDataURL(file);
43
+ }
44
+ },
45
+ download(event, target) {
46
+ let btn = document.createElement('a');
47
+ btn.href = this.painter.__canvas.toDataURL("image/" + target.getAttribute("type"));
48
+ btn.download = "图片." + target.getAttribute("type");
49
+ btn.click();
50
+ },
51
+ changeSize(event, target) {
52
+ let canvasInfo = this.painter.getInfo();
53
+ this.$openDialog("imageSize", {
54
+ title: target.innerText.trim(),
55
+ width: canvasInfo.width,
56
+ height: canvasInfo.height
57
+ }).then(data => {
58
+ if (data) {
59
+ let base64 = this.painter.__canvas.toDataURL();
60
+
61
+ // 调整画布大小
62
+ this.painter = new Canvas(this.drawEl, {
63
+ scale: 1
64
+ }, data.width, data.height).clearRect(0, 0, data.width, data.height);
65
+
66
+ if (target.innerText.trim() === "画布大小") {
67
+
68
+ // 计算图片的对齐方式
69
+
70
+ let _left, _top;
71
+ let changeType = data.changeType.split('-');
72
+
73
+ // 水平方向
74
+ if (changeType[0] == 'left') {
75
+ _left = 0;
76
+ } else if (changeType[0] == 'right') {
77
+ _left = data.width - canvasInfo.width;
78
+ } else {
79
+ _left = (data.width - canvasInfo.width) * 0.5;
80
+ }
81
+
82
+ // 垂直方向
83
+ if (changeType[1] == 'top') {
84
+ _top = 0;
85
+ } else if (changeType[1] == 'bottom') {
86
+ _top = data.height - canvasInfo.height;
87
+ } else {
88
+ _top = (data.height - canvasInfo.height) * 0.5;
89
+ }
90
+
91
+ const img = new Image();
92
+ img.onload = () => {
93
+ this.painter.getContext().drawImage(img, 0, 0, canvasInfo.width, canvasInfo.height, _left, _top, canvasInfo.width, canvasInfo.height);
94
+ };
95
+ img.src = base64;
96
+
97
+ } else {
98
+ this.painter.drawImage(base64, 0, 0, data.width, data.height);
99
+ }
100
+ }
101
+ });
102
+ }
103
+ },
104
+ style: {
105
+ content: style
106
+ }
107
107
  })
@@ -1,46 +1,46 @@
1
- .image-editor-view {
2
- &>.menu {
3
- position: fixed;
4
- left: 50%;
5
- top: 5px;
6
- transform: translateX(-50%);
7
- white-space: nowrap;
8
-
9
- &>li {
10
- display: inline-block;
11
- background-color: #FF5722;
12
- color: white;
13
- margin: 0 5px;
14
- border-radius: 5px;
15
-
16
- &>label {
17
- line-height: 30px;
18
- padding: 0 5px;
19
- display: inline-block;
20
- cursor: pointer;
21
- }
22
-
23
- &:hover {
24
- text-decoration: underline;
25
- }
26
- }
27
- }
28
-
29
- &>.content {
30
- text-align: center;
31
- margin-top: 100px;
32
-
33
- #drawId {
34
- display: inline-block;
35
-
36
- &>canvas {
37
- background-image: url("./images/mosaic.png");
38
- outline: 2px solid #CDDC39;
39
- }
40
- }
41
- }
42
-
43
- &>.no-view {
44
- display: none;
45
- }
1
+ .image-editor-view {
2
+ &>.menu {
3
+ position: fixed;
4
+ left: 50%;
5
+ top: 5px;
6
+ transform: translateX(-50%);
7
+ white-space: nowrap;
8
+
9
+ &>li {
10
+ display: inline-block;
11
+ background-color: #FF5722;
12
+ color: white;
13
+ margin: 0 5px;
14
+ border-radius: 5px;
15
+
16
+ &>label {
17
+ line-height: 30px;
18
+ padding: 0 5px;
19
+ display: inline-block;
20
+ cursor: pointer;
21
+ }
22
+
23
+ &:hover {
24
+ text-decoration: underline;
25
+ }
26
+ }
27
+ }
28
+
29
+ &>.content {
30
+ text-align: center;
31
+ margin-top: 100px;
32
+
33
+ #drawId {
34
+ display: inline-block;
35
+
36
+ &>canvas {
37
+ background-image: url("./images/mosaic.png");
38
+ outline: 2px solid #CDDC39;
39
+ }
40
+ }
41
+ }
42
+
43
+ &>.no-view {
44
+ display: none;
45
+ }
46
46
  }
@@ -1,4 +1,4 @@
1
- <div class="img-to-pdf-view">
2
- <ui-select-file z-on:change="doChange" title="图片转PDF" tips="选择一张或多张图片后,可以把这些图片拼接成一个PDF文件" type="image"></ui-select-file>
3
- <iframe id="iframe"></iframe>
1
+ <div class="img-to-pdf-view">
2
+ <ui-select-file z-on:change="doChange" title="图片转PDF" tips="选择一张或多张图片后,可以把这些图片拼接成一个PDF文件" type="image"></ui-select-file>
3
+ <iframe id="iframe"></iframe>
4
4
  </div>
@@ -1,45 +1,45 @@
1
- import { defineElement, ref } from "zipaper"
2
- import template from "./index.html"
3
- import style from "./index.scss"
4
-
5
- export default defineElement({
6
- template,
7
- methods: {
8
- doChange(event) {
9
- let files = event.data, promises = [], iframeEl = document.getElementById("iframe");
10
-
11
- let template = "";
12
- for (let index = 0; index < files.length; index++) {
13
- let file = files[index];
14
-
15
- promises.push(new Promise(function (resolve) {
16
-
17
- let reader = new FileReader();
18
-
19
- reader.onload = function () {
20
-
21
- template += '<div style="display: flex;justify-content: center;align-items: center;height: 100vh;width: 100vw;"><img src="' + reader.result + '" style="max-width: 100vw;max-height: 100vh;"></img></div>';
22
- resolve("");
23
- }
24
- reader.readAsDataURL(file);
25
- }));
26
- }
27
-
28
- Promise.all(promises).then(function () {
29
- let iframeWindow = iframeEl.contentWindow;
30
- let iframeDocument = iframeEl.contentWindow?.document;
31
-
32
- iframeDocument.open();
33
- iframeDocument.write(`<style>body{margin:0px;}</style>` + template);
34
- iframeDocument.close();
35
-
36
- setTimeout(function () {
37
- iframeWindow.print();
38
- }, 500);
39
- });
40
- }
41
- },
42
- style: {
43
- content: style
44
- }
1
+ import { defineElement, ref } from "zipaper"
2
+ import template from "./index.html"
3
+ import style from "./index.scss"
4
+
5
+ export default defineElement({
6
+ template,
7
+ methods: {
8
+ doChange(event) {
9
+ let files = event.data, promises = [], iframeEl = document.getElementById("iframe");
10
+
11
+ let template = "";
12
+ for (let index = 0; index < files.length; index++) {
13
+ let file = files[index];
14
+
15
+ promises.push(new Promise(function (resolve) {
16
+
17
+ let reader = new FileReader();
18
+
19
+ reader.onload = function () {
20
+
21
+ template += '<div style="display: flex;justify-content: center;align-items: center;height: 100vh;width: 100vw;"><img src="' + reader.result + '" style="max-width: 100vw;max-height: 100vh;"></img></div>';
22
+ resolve("");
23
+ }
24
+ reader.readAsDataURL(file);
25
+ }));
26
+ }
27
+
28
+ Promise.all(promises).then(function () {
29
+ let iframeWindow = iframeEl.contentWindow;
30
+ let iframeDocument = iframeEl.contentWindow?.document;
31
+
32
+ iframeDocument.open();
33
+ iframeDocument.write(`<style>body{margin:0px;}</style>` + template);
34
+ iframeDocument.close();
35
+
36
+ setTimeout(function () {
37
+ iframeWindow.print();
38
+ }, 500);
39
+ });
40
+ }
41
+ },
42
+ style: {
43
+ content: style
44
+ }
45
45
  })
@@ -1,5 +1,5 @@
1
- .img-to-pdf-view {
2
- iframe {
3
- display: none;
4
- }
1
+ .img-to-pdf-view {
2
+ iframe {
3
+ display: none;
4
+ }
5
5
  }
@@ -1,20 +1,20 @@
1
- import { defineRouter } from "zipaper"
2
-
3
- export default defineRouter({
4
- routers: [{
5
- path: "/",
6
- redirect: "/appStore"
7
- }, {
8
- path: "/appStore",
9
- component: () => import("./pages/appStore/index.js"),
10
- }, {
11
- path: "/chart",
12
- component: () => import("./pages/chart/index.js"),
13
- }, {
14
- path: "/image-editor",
15
- component: () => import("./pages/image-editor/index.js"),
16
- }, {
17
- path: "/img-to-pdf",
18
- component: () => import("./pages/img-to-pdf/index.js"),
19
- }]
1
+ import { defineRouter } from "zipaper"
2
+
3
+ export default defineRouter({
4
+ routers: [{
5
+ path: "/",
6
+ redirect: "/appStore"
7
+ }, {
8
+ path: "/appStore",
9
+ component: () => import("./pages/appStore/index.js"),
10
+ }, {
11
+ path: "/chart",
12
+ component: () => import("./pages/chart/index.js"),
13
+ }, {
14
+ path: "/image-editor",
15
+ component: () => import("./pages/image-editor/index.js"),
16
+ }, {
17
+ path: "/img-to-pdf",
18
+ component: () => import("./pages/img-to-pdf/index.js"),
19
+ }]
20
20
  })
@@ -1,95 +1,95 @@
1
- /* 统一不同浏览器的基础样式 */
2
-
3
- html {
4
- /* 防止iPhone在坚屏转向横屏时放大文字 */
5
- -ms-text-size-adjust: 100%;
6
- -webkit-text-size-adjust: 100%;
7
- /* 统一行高 */
8
- line-height: 1.15;
9
- }
10
-
11
- button,
12
- input,
13
- select {
14
- /* 兼容部分手机下border不显示问题 */
15
- border: 1px solid #b2b2bd;
16
- }
17
-
18
- article,
19
- footer,
20
- header,
21
- nav,
22
- section {
23
- /* 修正旧浏览器未定义的块级元素 */
24
- display: block;
25
- }
26
-
27
- canvas,
28
- svg {
29
- /* 修正旧浏览器未定义的行内块元素 */
30
- display: inline-block;
31
- }
32
-
33
- * {
34
- /* 统一不同浏览器盒子尺寸计算方法 */
35
- box-sizing: border-box;
36
- }
37
-
38
- ::-ms-clear,
39
- ::-ms-reveal {
40
- /* 去掉IE浏览器输入框叉叉和眼睛 */
41
- display: none;
42
- }
43
-
44
- img {
45
- /* 针对火狐浏览器在img标签没有src时候的差异修复 */
46
- display: inline-block;
47
- }
48
-
49
- html {
50
- /* 设置默认字体为统一的安全字体 */
51
- font-family: sans-serif;
52
- }
53
-
54
- a {
55
- /* 默认去掉下划线 */
56
- text-decoration: none;
57
- }
58
-
59
- li {
60
- /* 去掉前置索引 */
61
- list-style-type: none;
62
- }
63
-
64
- ul,
65
- ol,
66
- li,
67
- p,
68
- h1,
69
- h2,
70
- h3,
71
- h4,
72
- h5,
73
- h6 {
74
- /* 去掉不喜欢的间距 */
75
- -webkit-margin-before: 0;
76
- -webkit-margin-after: 0;
77
- -webkit-padding-start: 0;
78
- /* 去掉不喜欢的间距,针对火狐浏览器等 */
79
- margin-block-end: 0;
80
- margin-block-start: 0;
81
- padding-inline-start: 0;
82
- /* 修改IE和其它浏览器不一致问题 */
83
- padding: 0;
84
- margin: 0;
85
- }
86
-
87
- body {
88
- /* 去掉默认的8px */
89
- margin: 0;
90
- }
91
-
92
- table {
93
- /* 设置默认表格边框合并为一个单一的边框 */
94
- border-collapse: collapse;
1
+ /* 统一不同浏览器的基础样式 */
2
+
3
+ html {
4
+ /* 防止iPhone在坚屏转向横屏时放大文字 */
5
+ -ms-text-size-adjust: 100%;
6
+ -webkit-text-size-adjust: 100%;
7
+ /* 统一行高 */
8
+ line-height: 1.15;
9
+ }
10
+
11
+ button,
12
+ input,
13
+ select {
14
+ /* 兼容部分手机下border不显示问题 */
15
+ border: 1px solid #b2b2bd;
16
+ }
17
+
18
+ article,
19
+ footer,
20
+ header,
21
+ nav,
22
+ section {
23
+ /* 修正旧浏览器未定义的块级元素 */
24
+ display: block;
25
+ }
26
+
27
+ canvas,
28
+ svg {
29
+ /* 修正旧浏览器未定义的行内块元素 */
30
+ display: inline-block;
31
+ }
32
+
33
+ * {
34
+ /* 统一不同浏览器盒子尺寸计算方法 */
35
+ box-sizing: border-box;
36
+ }
37
+
38
+ ::-ms-clear,
39
+ ::-ms-reveal {
40
+ /* 去掉IE浏览器输入框叉叉和眼睛 */
41
+ display: none;
42
+ }
43
+
44
+ img {
45
+ /* 针对火狐浏览器在img标签没有src时候的差异修复 */
46
+ display: inline-block;
47
+ }
48
+
49
+ html {
50
+ /* 设置默认字体为统一的安全字体 */
51
+ font-family: sans-serif;
52
+ }
53
+
54
+ a {
55
+ /* 默认去掉下划线 */
56
+ text-decoration: none;
57
+ }
58
+
59
+ li {
60
+ /* 去掉前置索引 */
61
+ list-style-type: none;
62
+ }
63
+
64
+ ul,
65
+ ol,
66
+ li,
67
+ p,
68
+ h1,
69
+ h2,
70
+ h3,
71
+ h4,
72
+ h5,
73
+ h6 {
74
+ /* 去掉不喜欢的间距 */
75
+ -webkit-margin-before: 0;
76
+ -webkit-margin-after: 0;
77
+ -webkit-padding-start: 0;
78
+ /* 去掉不喜欢的间距,针对火狐浏览器等 */
79
+ margin-block-end: 0;
80
+ margin-block-start: 0;
81
+ padding-inline-start: 0;
82
+ /* 修改IE和其它浏览器不一致问题 */
83
+ padding: 0;
84
+ margin: 0;
85
+ }
86
+
87
+ body {
88
+ /* 去掉默认的8px */
89
+ margin: 0;
90
+ }
91
+
92
+ table {
93
+ /* 设置默认表格边框合并为一个单一的边框 */
94
+ border-collapse: collapse;
95
95
  }