n20-common-lib 1.2.6 → 1.2.9

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 (202) hide show
  1. package/README.md +2 -2
  2. package/package.json +87 -87
  3. package/src/_qiankun/index.js +113 -113
  4. package/src/_qiankun/postMessage.js +48 -48
  5. package/src/assets/css/_coreLib.scss +35 -35
  6. package/src/assets/css/cl-anchor.scss +23 -23
  7. package/src/assets/css/cl-approve-card.scss +58 -58
  8. package/src/assets/css/cl-dialog.scss +99 -99
  9. package/src/assets/css/cl-drag-list.scss +22 -22
  10. package/src/assets/css/cl-empty.scss +10 -10
  11. package/src/assets/css/cl-expandable-pane.scss +26 -26
  12. package/src/assets/css/cl-expandable.scss +24 -24
  13. package/src/assets/css/cl-file-upload-table.scss +11 -11
  14. package/src/assets/css/cl-filter.scss +4 -4
  15. package/src/assets/css/cl-flow-step.scss +185 -185
  16. package/src/assets/css/cl-footer-box.scss +10 -10
  17. package/src/assets/css/cl-form-item.scss +454 -454
  18. package/src/assets/css/cl-general-card.scss +11 -11
  19. package/src/assets/css/cl-layout-aside.scss +88 -88
  20. package/src/assets/css/cl-layout-content.scss +16 -16
  21. package/src/assets/css/cl-layout-header.scss +73 -73
  22. package/src/assets/css/cl-layout-tabs.scss +87 -87
  23. package/src/assets/css/cl-layout.scss +97 -97
  24. package/src/assets/css/cl-login-temporary.scss +37 -37
  25. package/src/assets/css/cl-message.scss +75 -75
  26. package/src/assets/css/cl-more-tab.scss +98 -98
  27. package/src/assets/css/cl-nav-menu.scss +5 -5
  28. package/src/assets/css/cl-pagination.scss +65 -65
  29. package/src/assets/css/cl-secondary-tab.scss +39 -39
  30. package/src/assets/css/cl-showcolumn.scss +23 -23
  31. package/src/assets/css/cl-sifting.scss +51 -51
  32. package/src/assets/css/cl-statis.scss +42 -42
  33. package/src/assets/css/cl-step.scss +73 -73
  34. package/src/assets/css/cl-suspend.scss +19 -19
  35. package/src/assets/css/cl-tertiary-tab.scss +9 -9
  36. package/src/assets/css/cl-upload.scss +41 -41
  37. package/src/assets/css/cl-worn-pagination.scss +50 -50
  38. package/src/assets/css/el-button.scss +173 -173
  39. package/src/assets/css/el-table.scss +79 -79
  40. package/src/assets/css/element-variables.scss +1061 -1061
  41. package/src/assets/css/element.dev.scss +21 -21
  42. package/src/assets/css/font-icon.scss +27 -26
  43. package/src/assets/css/index.dev.scss +4 -4
  44. package/src/assets/css/index.scss +11 -11
  45. package/src/assets/css/normalize.scss +726 -726
  46. package/src/assets/css/rootvar.scss +139 -139
  47. package/src/assets/css/select.scss +25 -25
  48. package/src/assets/css/title-pop.scss +4 -4
  49. package/src/assets/getJsonc.js +50 -50
  50. package/src/assets/iconFont/demo.css +539 -0
  51. package/src/assets/iconFont/demo_index.html +1614 -0
  52. package/src/assets/iconFont/iconfont.css +263 -0
  53. package/src/assets/iconFont/iconfont.js +1 -0
  54. package/src/assets/iconFont/iconfont.json +443 -0
  55. package/src/assets/iconFont/iconfont.ttf +0 -0
  56. package/src/assets/iconFont/iconfont.woff +0 -0
  57. package/src/assets/iconFont/iconfont.woff2 +0 -0
  58. package/src/assets/realUrl.js +12 -12
  59. package/src/components/.DS_Store +0 -0
  60. package/src/components/Anchor/AnchorItem.vue +29 -29
  61. package/src/components/Anchor/index.vue +185 -185
  62. package/src/components/ApprovalButtons/index.vue +232 -232
  63. package/src/components/ApprovalCard/index.vue +128 -128
  64. package/src/components/ApprovalRecord/approvalImg.vue +39 -39
  65. package/src/components/ApprovalRecord/index.vue +59 -59
  66. package/src/components/Button/button-group.vue +150 -150
  67. package/src/components/Button/icon-group-button.vue +61 -61
  68. package/src/components/Button/index.vue +56 -56
  69. package/src/components/CascaderArea/index.vue +81 -81
  70. package/src/components/ContentLoading/index.vue +41 -41
  71. package/src/components/ContentNull/index.vue +19 -19
  72. package/src/components/DatePicker/index.vue +27 -27
  73. package/src/components/DatePicker/por.vue +169 -169
  74. package/src/components/Dialog/index.vue +26 -26
  75. package/src/components/Dialog/indexO.vue +116 -116
  76. package/src/components/DragList/index.vue +68 -68
  77. package/src/components/Empty/img/abnormal.svg +108 -108
  78. package/src/components/Empty/img/dispose.svg +71 -71
  79. package/src/components/Empty/img/empty.svg +57 -57
  80. package/src/components/Empty/img/general.svg +58 -58
  81. package/src/components/Empty/img/lock.svg +57 -57
  82. package/src/components/Empty/img/network.svg +59 -59
  83. package/src/components/Empty/img/relevant.svg +68 -68
  84. package/src/components/Empty/img/search.svg +72 -72
  85. package/src/components/Empty/index.vue +92 -92
  86. package/src/components/Expandable/index.vue +49 -49
  87. package/src/components/Expandable/main.vue +52 -52
  88. package/src/components/FileExportAsync/index.vue +174 -0
  89. package/src/components/FileUploadTable/index.vue +484 -484
  90. package/src/components/Filters/index.vue +369 -369
  91. package/src/components/Filters/indexO.vue +104 -104
  92. package/src/components/FlowStep/index.vue +68 -68
  93. package/src/components/FooterBox/index.vue +21 -21
  94. package/src/components/GeneralCard/index.vue +15 -15
  95. package/src/components/InputNumber/index.vue +153 -153
  96. package/src/components/InputNumber/numberRange.vue +47 -47
  97. package/src/components/InputSearch/index.vue +75 -75
  98. package/src/components/Layout/.DS_Store +0 -0
  99. package/src/components/Layout/AsideNav/index.vue +119 -144
  100. package/src/components/Layout/AsideNav/menuItem.vue +34 -0
  101. package/src/components/Layout/AsideNav/submenuTitle.vue +26 -0
  102. package/src/components/Layout/HeaderWrap/changePwd.vue +215 -215
  103. package/src/components/Layout/HeaderWrap/index.vue +348 -333
  104. package/src/components/Layout/HeaderWrap/noticePop.vue +300 -300
  105. package/src/components/Layout/SubContent/index.vue +131 -131
  106. package/src/components/Layout/TabsNav/index.vue +170 -170
  107. package/src/components/Layout/index.vue +529 -529
  108. package/src/components/Layout/utils.js +12 -12
  109. package/src/components/LoginTemporary/form.vue +537 -537
  110. package/src/components/LoginTemporary/index.vue +122 -122
  111. package/src/components/LoginTemporary/qrcode.vue +90 -90
  112. package/src/components/LoginTemporary/retrievePw.vue +28 -28
  113. package/src/components/LoginTemporary/utils.js +73 -73
  114. package/src/components/MicroApp/index.js +67 -67
  115. package/src/components/MicroFrame/index.vue +95 -95
  116. package/src/components/MoreTab/index.vue +232 -232
  117. package/src/components/NavMenu/index.vue +60 -60
  118. package/src/components/NstcG6Components/NstcDialog/NstcDialog.vue +184 -184
  119. package/src/components/PageLayout/page.vue +15 -15
  120. package/src/components/Pagination/index.vue +96 -96
  121. package/src/components/SecondaryTab/index.vue +58 -58
  122. package/src/components/SelectLazy/index.vue +75 -75
  123. package/src/components/SelectTree/SelectTreeLazy.vue +241 -241
  124. package/src/components/SelectTree/index.vue +205 -205
  125. package/src/components/ShowColumn/index.vue +204 -204
  126. package/src/components/Sifting/index.vue +99 -99
  127. package/src/components/Statis/index.vue +97 -97
  128. package/src/components/Statis/statisItem.vue +54 -54
  129. package/src/components/Statis/statisPopover.vue +55 -55
  130. package/src/components/Step/index.vue +38 -38
  131. package/src/components/Suspend/index.vue +72 -72
  132. package/src/components/Table/index.vue +179 -179
  133. package/src/components/Table/indexO.vue +149 -149
  134. package/src/components/Task/index.vue +26 -26
  135. package/src/components/TertiaryTab/index.vue +53 -53
  136. package/src/components/TimePicker/index.vue +28 -28
  137. package/src/components/Upload/index.vue +242 -242
  138. package/src/components/WornPagination/index.vue +73 -73
  139. package/src/directives/VClickOutside/index.js +19 -19
  140. package/src/directives/VHas/index.js +32 -32
  141. package/src/directives/VMove/index.js +42 -42
  142. package/src/directives/VTitle/index.js +64 -56
  143. package/src/directives/VTitle/tooltip.vue +21 -21
  144. package/src/index.js +225 -218
  145. package/src/plugins/CompatibleOld/index.js +57 -57
  146. package/src/plugins/Print/index.js +4 -4
  147. package/src/plugins/Print/print-js/.babelrc +12 -12
  148. package/src/plugins/Print/print-js/LICENSE +21 -21
  149. package/src/plugins/Print/print-js/README.md +98 -98
  150. package/src/plugins/Print/print-js/dist/print.css +96 -96
  151. package/src/plugins/Print/print-js/dist/print.js +990 -990
  152. package/src/plugins/Print/print-js/package.json +60 -60
  153. package/src/plugins/Print/print-js/src/index.d.ts +45 -45
  154. package/src/plugins/Print/print-js/src/index.js +10 -10
  155. package/src/plugins/Print/print-js/src/js/browser.js +33 -33
  156. package/src/plugins/Print/print-js/src/js/functions.js +103 -103
  157. package/src/plugins/Print/print-js/src/js/html.js +70 -70
  158. package/src/plugins/Print/print-js/src/js/image.js +48 -48
  159. package/src/plugins/Print/print-js/src/js/init.js +168 -168
  160. package/src/plugins/Print/print-js/src/js/json.js +109 -109
  161. package/src/plugins/Print/print-js/src/js/modal.js +62 -62
  162. package/src/plugins/Print/print-js/src/js/pdf.js +62 -62
  163. package/src/plugins/Print/print-js/src/js/print.js +102 -102
  164. package/src/plugins/Print/print-js/src/js/raw-html.js +15 -15
  165. package/src/plugins/Print/print-js/src/sass/index.scss +13 -13
  166. package/src/plugins/Print/print-js/src/sass/modules/_colors.scss +9 -9
  167. package/src/plugins/Print/print-js/src/sass/partials/_modal.scss +40 -40
  168. package/src/plugins/Print/print-js/src/sass/partials/_spinner.scss +45 -45
  169. package/src/plugins/Print/print.js +2 -2
  170. package/src/plugins/Print/print.scss +1 -1
  171. package/src/plugins/SetMenuTree/index.vue +41 -41
  172. package/src/plugins/SetMenuTree/logoIcon.vue +37 -37
  173. package/src/plugins/SetMenuTree/setmenutree.vue +427 -427
  174. package/src/plugins/SetMenuTree/utils.js +74 -74
  175. package/src/plugins/Sign/InfosecNetSignCNGAgent.min.js +2000 -2000
  176. package/src/plugins/Sign/index.js +65 -65
  177. package/src/plugins/Sign/sign.js +1 -1
  178. package/src/plugins/setTabsForSub.js +2 -2
  179. package/src/utils/auth.js +53 -53
  180. package/src/utils/axios.js +203 -203
  181. package/src/utils/downloadBlob.js +19 -19
  182. package/src/utils/forEachs.js +16 -16
  183. package/src/utils/getScrollContainer.js +43 -43
  184. package/src/utils/i18n/cn2hk.json +1270 -1270
  185. package/src/utils/i18n/index.js +54 -54
  186. package/src/utils/list2tree.js +36 -36
  187. package/src/utils/msgboxPor.js +26 -26
  188. package/src/utils/print.js +161 -161
  189. package/src/utils/relaNo.js +69 -69
  190. package/src/utils/repairElementUI.js +66 -66
  191. package/src/utils/urlToGo.js +82 -82
  192. package/style/css/normalize.scss +723 -726
  193. package/style/fonts/iconfont.022f36c4.woff2 +0 -0
  194. package/style/fonts/iconfont.4a1b2c93.woff +0 -0
  195. package/style/fonts/iconfont.a9febaa2.ttf +0 -0
  196. package/style/index.css +3 -2
  197. package/style/index.css.map +1 -1
  198. package/style/pageDemo/demo-1.vue +130 -131
  199. package/style/pageDemo/demo-2.vue +35 -35
  200. package/style/pageDemo/demo-3.vue +22 -22
  201. package/style/pageDemo/seeCode.js +20 -20
  202. package/style/server-config.jsonc +663 -596
@@ -1,726 +1,723 @@
1
- $--font-size-base: 14px !default;
2
- $--border-color-base: #dcdfe6 !default;
3
- $--border-radius-base: 4px !default;
4
- $--input-width: 224px !default;
5
-
6
- // 项目中可以直接使用
7
- // .input-w {width: $--input-width;}
8
- // .button-4em{min-width: 72px;}
9
- /* 格式化样式
10
- ---------------- */
11
- html {
12
- height: 100%;
13
- }
14
- body {
15
- height: 100%;
16
- font-size: $--font-size-base;
17
- }
18
- li {
19
- list-style: none;
20
- }
21
- a {
22
- color: inherit;
23
- text-decoration: none;
24
- }
25
- iframe {
26
- border: 0;
27
- outline: none;
28
- }
29
-
30
- /* 滚动条样式
31
- --------------- */
32
- ::-webkit-scrollbar {
33
- width: 6px;
34
- height: 6px;
35
- }
36
-
37
- ::-webkit-scrollbar-button {
38
- width: 0;
39
- height: 0;
40
- }
41
-
42
- ::-webkit-scrollbar-corner {
43
- background-color: transparent;
44
- }
45
-
46
- ::-webkit-scrollbar-thumb,
47
- ::-webkit-scrollbar-track {
48
- border-color: transparent;
49
- border-style: solid;
50
- border-radius: 3px;
51
- }
52
-
53
- ::-webkit-scrollbar-thumb {
54
- min-height: 28px;
55
- background-color: rgba(0, 0, 0, 0.07);
56
- border-width: 0;
57
- border-radius: 3px;
58
- }
59
-
60
- ::-webkit-scrollbar-thumb:hover {
61
- background-color: rgba(0, 0, 0, 0.2);
62
- }
63
-
64
- ::-webkit-scrollbar-thumb:active {
65
- background-color: rgba(0, 0, 0, 0.25);
66
- }
67
-
68
- ::-webkit-scrollbar-track:hover {
69
- background-color: rgba(0, 0, 0, 0.03);
70
- }
71
-
72
- ::-webkit-scrollbar-track:active {
73
- background-color: rgba(0, 0, 0, 0.03);
74
- }
75
-
76
- :root {
77
- --client-height: calc(100vh - 116px);
78
- }
79
-
80
- /* 内外边距
81
- --------------- */
82
- @mixin set-pm($m, $p) {
83
- .p-a#{$m} {
84
- padding: $p;
85
- }
86
-
87
- .p-t#{$m} {
88
- padding-top: $p;
89
- }
90
-
91
- .p-b#{$m} {
92
- padding-bottom: $p;
93
- }
94
-
95
- .p-l#{$m} {
96
- padding-left: $p;
97
- }
98
-
99
- .p-r#{$m} {
100
- padding-right: $p;
101
- }
102
-
103
- .m-a#{$m} {
104
- margin: $p;
105
- }
106
-
107
- .m-t#{$m} {
108
- margin-top: $p;
109
- }
110
-
111
- .m-b#{$m} {
112
- margin-bottom: $p;
113
- }
114
-
115
- .m-l#{$m} {
116
- margin-left: $p;
117
- }
118
-
119
- .m-r#{$m} {
120
- margin-right: $p;
121
- }
122
- }
123
-
124
- /* 内外边距 */
125
- .m-l-auto {
126
- margin-left: auto !important;
127
- }
128
- .m-r-auto {
129
- margin-right: auto !important;
130
- }
131
- .m-lr-auto {
132
- margin-left: auto !important;
133
- margin-right: auto !important;
134
- }
135
- @include set-pm('', 12px !important);
136
- @include set-pm('-xl', 32px !important);
137
- @include set-pm('-lg', 24px !important);
138
- @include set-pm('-m', 16px !important);
139
- @include set-pm('-s', 8px !important);
140
- @include set-pm('-b', 6px !important);
141
- @include set-pm('-ss', 4px !important);
142
- @include set-pm('-0', 0 !important);
143
-
144
- /* 内外边距
145
- --------------- */
146
- @mixin pm-fn($n) {
147
- .pa-#{$n} {
148
- padding: #{$n}px;
149
- }
150
- .pt-#{$n} {
151
- padding-top: #{$n}px;
152
- }
153
- .pl-#{$n} {
154
- padding-left: #{$n}px;
155
- }
156
- .pr-#{$n} {
157
- padding-right: #{$n}px;
158
- }
159
- .pb-#{$n} {
160
- padding-bottom: #{$n}px;
161
- }
162
- .px-#{$n} {
163
- padding-left: #{$n}px;
164
- padding-right: #{$n}px;
165
- }
166
- .py-#{$n} {
167
- padding-top: #{$n}px;
168
- padding-bottom: #{$n}px;
169
- }
170
- .ma-#{$n} {
171
- margin: #{$n}px;
172
- }
173
- .mt-#{$n} {
174
- margin-top: #{$n}px;
175
- }
176
- .ml-#{$n} {
177
- margin-left: #{$n}px;
178
- }
179
- .mr-#{$n} {
180
- margin-right: #{$n}px;
181
- }
182
- .mb-#{$n} {
183
- margin-bottom: #{$n}px;
184
- }
185
- .mx-#{$n} {
186
- margin-left: #{$n}px;
187
- margin-right: #{$n}px;
188
- }
189
- .py-#{$n} {
190
- margin-top: #{$n}px;
191
- margin-bottom: #{$n}px;
192
- }
193
- }
194
-
195
- @include pm-fn(0);
196
- @include pm-fn(2);
197
- @include pm-fn(4);
198
- @include pm-fn(6);
199
- @include pm-fn(8);
200
- @include pm-fn(10);
201
- @include pm-fn(12);
202
- @include pm-fn(14);
203
-
204
- /* 浮动布局
205
- --------------- */
206
- .left,
207
- .float-left {
208
- float: left;
209
- }
210
-
211
- .right,
212
- .float-right {
213
- float: right;
214
- }
215
-
216
- .overflow {
217
- height: auto;
218
- overflow: hidden;
219
- }
220
-
221
- .overflow-y {
222
- overflow-y: auto;
223
- }
224
- .overflow-x {
225
- overflow-x: auto;
226
- }
227
-
228
- // 清除浮动
229
- .overflow-clear {
230
- &:after {
231
- content: '';
232
- display: block;
233
- clear: both;
234
- }
235
- }
236
- /* 清除左侧浮动,将元素放置在任何先前的左浮动元素的下方 */
237
- .clear-left {
238
- clear: left;
239
- }
240
- /* 清除右侧浮动,将元素放置在任何先前的右浮动元素的下方 */
241
- .clear-right {
242
- clear: right;
243
- }
244
-
245
- /* 行内块元素水平垂直对齐方式
246
- --------------- */
247
- .b-center {
248
- text-align: center;
249
- & > * {
250
- display: inline-block;
251
- vertical-align: bottom;
252
- }
253
- }
254
-
255
- .b-vertical {
256
- font-size: 0;
257
- & > * {
258
- vertical-align: middle;
259
- display: inline-block;
260
- font-size: 14px;
261
- }
262
- &:before {
263
- content: '';
264
- vertical-align: middle;
265
- display: inline-block;
266
- width: 0;
267
- height: 100%;
268
- }
269
- }
270
-
271
- /* 文字居中
272
- --------------- */
273
- .text {
274
- &-c {
275
- text-align: center !important;
276
- }
277
- &-l {
278
- text-align: left !important;
279
- }
280
- &-r {
281
- text-align: right !important;
282
- }
283
- &-lr {
284
- text-align: justify;
285
- text-justify: inter-word;
286
- }
287
- &-ellipsis {
288
- white-space: nowrap;
289
- overflow: hidden;
290
- text-overflow: ellipsis;
291
- }
292
- }
293
-
294
- /* 弹性盒模型
295
- --------------- */
296
- .flex-box {
297
- display: flex;
298
- }
299
- .flex-column {
300
- display: flex;
301
- flex-direction: column;
302
- }
303
-
304
- .flex-box > *,
305
- .flex-column > * {
306
- flex: none;
307
- }
308
-
309
- .flex {
310
- &-v {
311
- align-items: center;
312
- }
313
- &-s {
314
- align-items: flex-start;
315
- }
316
- &-e {
317
- align-items: flex-end;
318
- }
319
- &-l {
320
- justify-content: flex-start;
321
- }
322
- &-r {
323
- justify-content: flex-end;
324
- }
325
- &-c {
326
- justify-content: center;
327
- }
328
- &-lr {
329
- justify-content: space-between;
330
- }
331
- &-sa {
332
- justify-content: space-around;
333
- }
334
- }
335
-
336
- .flex-item {
337
- flex: auto;
338
- }
339
-
340
- @for $n from 0 to 10 {
341
- .flex-#{$n} {
342
- flex: $n $n auto;
343
- }
344
- }
345
-
346
- /* 旋转图标90度
347
- -------------- */
348
- .rotate90 {
349
- display: inline-block;
350
- transform: rotate(90deg);
351
- cursor: pointer;
352
- }
353
-
354
- /* 清除背景色
355
- -------------- */
356
- .bg {
357
- &-none {
358
- background: none !important;
359
- }
360
- }
361
-
362
- /* 阴影 */
363
- .box-shadow {
364
- box-shadow: 0px 4px 16px 0px rgba($--color-black, 0.1);
365
- }
366
- .box-shadow-mini {
367
- box-shadow: 0px 2px 8px 0px rgba($--color-black, 0.08);
368
- }
369
- .page-footer-shadow {
370
- position: relative;
371
- height: 38px;
372
- margin-bottom: -12px;
373
- &::before {
374
- content: '';
375
- pointer-events: none;
376
- position: absolute;
377
- top: 0px;
378
- height: 100%;
379
- left: -12px;
380
- right: -12px;
381
- box-shadow: 0px -2px 6px 0px rgba($--color-black, 0.08);
382
- }
383
- }
384
-
385
- .page-button-shadow {
386
- position: relative;
387
- height: 44px;
388
- margin-bottom: -12px;
389
- &::before {
390
- content: '';
391
- pointer-events: none;
392
- position: absolute;
393
- top: 0px;
394
- height: 100%;
395
- left: -12px;
396
- right: -12px;
397
- box-shadow: 0px -2px 6px 0px rgba($--color-black, 0.08);
398
- }
399
- }
400
-
401
- /* 边框
402
- -------------- */
403
- .bd {
404
- &-none {
405
- border: none !important;
406
- }
407
- &-a {
408
- border: 1px solid $--border-color-base;
409
- }
410
- &-t {
411
- border-top: 1px solid $--border-color-base;
412
- }
413
- &-l {
414
- border-left: 1px solid $--border-color-base;
415
- }
416
- &-r {
417
- border-right: 1px solid $--border-color-base;
418
- }
419
- &-b {
420
- border-bottom: 1px solid $--border-color-base;
421
- }
422
- }
423
- .bd-rs {
424
- border-radius: $--border-radius-base;
425
- }
426
-
427
- /* 设置弹窗内容区内边距
428
- -------------- */
429
- .el-dialog__wrapper {
430
- &.p-a-0 {
431
- .el-dialog__body {
432
- padding: 0;
433
- }
434
- }
435
- &.p-t-0 {
436
- .el-dialog__body {
437
- padding-top: 0;
438
- }
439
- }
440
- &.p-b-0 {
441
- .el-dialog__body {
442
- padding-bottom: 0;
443
- }
444
- }
445
- }
446
-
447
- /* 通用字号
448
- -------------- */
449
- .font-size-base {
450
- font-size: var(--font-size-base);
451
- }
452
- .font-size-small {
453
- font-size: var(--font-size-small);
454
- }
455
-
456
- /* 通用颜色
457
- -------------- */
458
- .color-primary {
459
- color: var(--color-primary) !important;
460
- }
461
- .color-success {
462
- color: var(--color-success);
463
- }
464
- .color-warning {
465
- color: var(--color-warning);
466
- }
467
- .color-danger {
468
- color: var(--color-danger);
469
- }
470
- .color-placeholder {
471
- color: var(--color-text-placeholder);
472
- }
473
-
474
- .linear-grad {
475
- background: var(--background-linear-gradient);
476
- }
477
-
478
- .color-white {
479
- color: white;
480
- }
481
- .color-ccc {
482
- color: #ccc;
483
- }
484
- .color-999 {
485
- color: #999;
486
- }
487
- .color-666 {
488
- color: #666;
489
- }
490
- .color-333 {
491
- color: #333;
492
- }
493
-
494
- /* 鼠标默认样式
495
- --------------- */
496
- .cursor-d {
497
- cursor: default;
498
- }
499
- /* 鼠标小手
500
- --------------- */
501
- .pointer {
502
- cursor: pointer;
503
- }
504
-
505
- /* 鼠标禁止
506
- ---------------- */
507
- .cursor-not {
508
- cursor: not-allowed;
509
- }
510
-
511
- /* 字重
512
- --------------- */
513
- .font {
514
- &-w600 {
515
- font-weight: var(--font-weight-primary);
516
- }
517
- }
518
-
519
- /* 字号
520
- --------------- */
521
- .f-s {
522
- &-s {
523
- /* 12号字 */
524
- font-size: var(--font-size-small);
525
- }
526
- &-b {
527
- /* 14号字 */
528
- font-size: var(--font-size-base);
529
- }
530
- &-m {
531
- /* 16号字 */
532
- font-size: var(--font-size-medium);
533
- }
534
- &-l {
535
- /* 18号 */
536
- font-size: var(--font-size-large);
537
- }
538
- &-xl {
539
- font-size: var(--font-size-extra-large);
540
- }
541
- }
542
-
543
- /* 宽高范围是 60-1000
544
- ---------------- */
545
- $list: 45, 60, 80, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290,
546
- 300, 400, 500, 600, 700, 800, 900, 1000;
547
- @each $n in $list {
548
- .w-#{$n} {
549
- width: #{$n}px !important;
550
- }
551
- .h-#{$n} {
552
- height: #{$n}px !important;
553
- }
554
- }
555
-
556
- /* 宽百分比 */
557
- @for $i from 1 through 10 {
558
- .w-#{$i}0p {
559
- width: #{$i + '0%'} !important;
560
- }
561
- }
562
-
563
- .n20-page-content {
564
- overflow-y: auto;
565
- overflow-x: hidden;
566
- }
567
-
568
- /* 边框圆角
569
- -------------- */
570
- .b {
571
- &-r {
572
- border-radius: 50%;
573
- }
574
- &-r-4 {
575
- border-radius: 4px;
576
- }
577
- &-r-5 {
578
- border-radius: 5px;
579
- }
580
- &-r-6 {
581
- border-radius: 6px;
582
- }
583
- &-r-7 {
584
- border-radius: 7px;
585
- }
586
- &-r-8 {
587
- border-radius: 8px;
588
- }
589
- &-r-9 {
590
- border-radius: 9px;
591
- }
592
- &-r-10 {
593
- border-radius: 10px;
594
- }
595
- }
596
-
597
- /* 垂直对齐
598
- --------------- */
599
- .align {
600
- &-baseline {
601
- vertical-align: baseline; // 将一个元素的基线与其父元素的基线对齐。
602
- }
603
- &-top {
604
- vertical-align: top; // 将一个元素的顶部和它的子代与整个行的顶部对齐。
605
- }
606
- &-middle {
607
- vertical-align: middle; // 将元素的中间与基线加父元素的一半高度对齐。
608
- }
609
- &-bottom {
610
- vertical-align: bottom; // 将一个元素的底部和它的子代与整个行的底部对齐。
611
- }
612
- &-text-top {
613
- vertical-align: text-top; // 使元素的顶部与父元素的字体顶部对齐。
614
- }
615
- &-text-bottom {
616
- vertical-align: text-bottom; // 使元素的底部与父元素的字体底部对齐。
617
- }
618
- }
619
-
620
- /* 本文选择 */
621
-
622
- .select {
623
- &-none {
624
- user-select: none; // 防止选择元素及其子元素中的文本。
625
- }
626
- &-text {
627
- user-select: text; // 允许选择元素及其子元素中的文本。
628
- }
629
- &-all {
630
- user-select: all; // 在用户点击时自动选择元素中的所有文本。
631
- }
632
- &-auto {
633
- user-select: auto; // 使用默认的浏览器行为来选择文本
634
- }
635
- }
636
-
637
- /* 文本溢出显示省略号 */
638
- .truncate {
639
- overflow: hidden;
640
- text-overflow: ellipsis;
641
- white-space: nowrap;
642
- }
643
-
644
- /* 本文转换 */
645
- /* 使用 uppercase 功能类对文本进行大写转换 */
646
- .uppercase {
647
- text-transform: uppercase;
648
- }
649
- /* 使用 lowercase 功能类对文本进行小写转换 */
650
- .lowercase {
651
- text-transform: lowercase;
652
- }
653
- /* 使用 capitalize 功能类对文本进行首字母大写转换 */
654
- .capitalize {
655
- text-transform: capitalize;
656
- }
657
-
658
- /* 下划线 */
659
- .underline {
660
- text-decoration: underline;
661
- }
662
- /* 删除线 */
663
- .line-through {
664
- text-decoration: line-through;
665
- }
666
- /* 移除文本装饰 */
667
- .no-underline {
668
- text-decoration: none;
669
- }
670
-
671
- /* 动画 */
672
- .animate {
673
- &-none {
674
- animation: none;
675
- }
676
- &-spin {
677
- animation: spin 1s linear infinite;
678
- }
679
- &-ping {
680
- animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
681
- }
682
- &-pulse {
683
- animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
684
- }
685
- &-bounce {
686
- animation: bounce 1s infinite;
687
- }
688
- }
689
-
690
- @keyframes spin {
691
- from {
692
- transform: rotate(0deg);
693
- }
694
- to {
695
- transform: rotate(360deg);
696
- }
697
- }
698
- @keyframes ping {
699
- 75%,
700
- 100% {
701
- transform: scale(2);
702
- opacity: 0;
703
- }
704
- }
705
-
706
- @keyframes pulse {
707
- 0%,
708
- 100% {
709
- opacity: 1;
710
- }
711
- 50% {
712
- opacity: 0.5;
713
- }
714
- }
715
-
716
- @keyframes bounce {
717
- 0%,
718
- 100% {
719
- transform: translateY(-25%);
720
- animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
721
- }
722
- 50% {
723
- transform: translateY(0);
724
- animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
725
- }
726
- }
1
+ $--font-size-base: 14px !default;
2
+ $--border-color-base: #dcdfe6 !default;
3
+ $--border-radius-base: 4px !default;
4
+ $--input-width: 224px !default;
5
+
6
+ /* 格式化样式
7
+ ---------------- */
8
+ html {
9
+ height: 100%;
10
+ }
11
+ body {
12
+ height: 100%;
13
+ font-size: $--font-size-base;
14
+ }
15
+ li {
16
+ list-style: none;
17
+ }
18
+ a {
19
+ color: inherit;
20
+ text-decoration: none;
21
+ }
22
+ iframe {
23
+ border: 0;
24
+ outline: none;
25
+ }
26
+
27
+ /* 滚动条样式
28
+ --------------- */
29
+ ::-webkit-scrollbar {
30
+ width: 6px;
31
+ height: 6px;
32
+ }
33
+
34
+ ::-webkit-scrollbar-button {
35
+ width: 0;
36
+ height: 0;
37
+ }
38
+
39
+ ::-webkit-scrollbar-corner {
40
+ background-color: transparent;
41
+ }
42
+
43
+ ::-webkit-scrollbar-thumb,
44
+ ::-webkit-scrollbar-track {
45
+ border-color: transparent;
46
+ border-style: solid;
47
+ border-radius: 3px;
48
+ }
49
+
50
+ ::-webkit-scrollbar-thumb {
51
+ min-height: 28px;
52
+ background-color: rgba(0, 0, 0, 0.07);
53
+ border-width: 0;
54
+ border-radius: 3px;
55
+ }
56
+
57
+ ::-webkit-scrollbar-thumb:hover {
58
+ background-color: rgba(0, 0, 0, 0.2);
59
+ }
60
+
61
+ ::-webkit-scrollbar-thumb:active {
62
+ background-color: rgba(0, 0, 0, 0.25);
63
+ }
64
+
65
+ ::-webkit-scrollbar-track:hover {
66
+ background-color: rgba(0, 0, 0, 0.03);
67
+ }
68
+
69
+ ::-webkit-scrollbar-track:active {
70
+ background-color: rgba(0, 0, 0, 0.03);
71
+ }
72
+
73
+ :root {
74
+ --client-height: calc(100vh - 116px);
75
+ }
76
+
77
+ /* 内外边距
78
+ --------------- */
79
+ @mixin set-pm($m, $p) {
80
+ .p-a#{$m} {
81
+ padding: $p;
82
+ }
83
+
84
+ .p-t#{$m} {
85
+ padding-top: $p;
86
+ }
87
+
88
+ .p-b#{$m} {
89
+ padding-bottom: $p;
90
+ }
91
+
92
+ .p-l#{$m} {
93
+ padding-left: $p;
94
+ }
95
+
96
+ .p-r#{$m} {
97
+ padding-right: $p;
98
+ }
99
+
100
+ .m-a#{$m} {
101
+ margin: $p;
102
+ }
103
+
104
+ .m-t#{$m} {
105
+ margin-top: $p;
106
+ }
107
+
108
+ .m-b#{$m} {
109
+ margin-bottom: $p;
110
+ }
111
+
112
+ .m-l#{$m} {
113
+ margin-left: $p;
114
+ }
115
+
116
+ .m-r#{$m} {
117
+ margin-right: $p;
118
+ }
119
+ }
120
+
121
+ /* 内外边距 */
122
+ .m-l-auto {
123
+ margin-left: auto !important;
124
+ }
125
+ .m-r-auto {
126
+ margin-right: auto !important;
127
+ }
128
+ .m-lr-auto {
129
+ margin-left: auto !important;
130
+ margin-right: auto !important;
131
+ }
132
+ @include set-pm('', 12px !important);
133
+ @include set-pm('-xl', 32px !important);
134
+ @include set-pm('-lg', 24px !important);
135
+ @include set-pm('-m', 16px !important);
136
+ @include set-pm('-s', 8px !important);
137
+ @include set-pm('-b', 6px !important);
138
+ @include set-pm('-ss', 4px !important);
139
+ @include set-pm('-0', 0 !important);
140
+
141
+ /* 内外边距
142
+ --------------- */
143
+ @mixin pm-fn($n) {
144
+ .pa-#{$n} {
145
+ padding: #{$n}px;
146
+ }
147
+ .pt-#{$n} {
148
+ padding-top: #{$n}px;
149
+ }
150
+ .pl-#{$n} {
151
+ padding-left: #{$n}px;
152
+ }
153
+ .pr-#{$n} {
154
+ padding-right: #{$n}px;
155
+ }
156
+ .pb-#{$n} {
157
+ padding-bottom: #{$n}px;
158
+ }
159
+ .px-#{$n} {
160
+ padding-left: #{$n}px;
161
+ padding-right: #{$n}px;
162
+ }
163
+ .py-#{$n} {
164
+ padding-top: #{$n}px;
165
+ padding-bottom: #{$n}px;
166
+ }
167
+ .ma-#{$n} {
168
+ margin: #{$n}px;
169
+ }
170
+ .mt-#{$n} {
171
+ margin-top: #{$n}px;
172
+ }
173
+ .ml-#{$n} {
174
+ margin-left: #{$n}px;
175
+ }
176
+ .mr-#{$n} {
177
+ margin-right: #{$n}px;
178
+ }
179
+ .mb-#{$n} {
180
+ margin-bottom: #{$n}px;
181
+ }
182
+ .mx-#{$n} {
183
+ margin-left: #{$n}px;
184
+ margin-right: #{$n}px;
185
+ }
186
+ .py-#{$n} {
187
+ margin-top: #{$n}px;
188
+ margin-bottom: #{$n}px;
189
+ }
190
+ }
191
+
192
+ @include pm-fn(0);
193
+ @include pm-fn(2);
194
+ @include pm-fn(4);
195
+ @include pm-fn(6);
196
+ @include pm-fn(8);
197
+ @include pm-fn(10);
198
+ @include pm-fn(12);
199
+ @include pm-fn(14);
200
+
201
+ /* 浮动布局
202
+ --------------- */
203
+ .left,
204
+ .float-left {
205
+ float: left;
206
+ }
207
+
208
+ .right,
209
+ .float-right {
210
+ float: right;
211
+ }
212
+
213
+ .overflow {
214
+ height: auto;
215
+ overflow: hidden;
216
+ }
217
+
218
+ .overflow-y {
219
+ overflow-y: auto;
220
+ }
221
+ .overflow-x {
222
+ overflow-x: auto;
223
+ }
224
+
225
+ // 清除浮动
226
+ .overflow-clear {
227
+ &:after {
228
+ content: '';
229
+ display: block;
230
+ clear: both;
231
+ }
232
+ }
233
+ /* 清除左侧浮动,将元素放置在任何先前的左浮动元素的下方 */
234
+ .clear-left {
235
+ clear: left;
236
+ }
237
+ /* 清除右侧浮动,将元素放置在任何先前的右浮动元素的下方 */
238
+ .clear-right {
239
+ clear: right;
240
+ }
241
+
242
+ /* 行内块元素水平垂直对齐方式
243
+ --------------- */
244
+ .b-center {
245
+ text-align: center;
246
+ & > * {
247
+ display: inline-block;
248
+ vertical-align: bottom;
249
+ }
250
+ }
251
+
252
+ .b-vertical {
253
+ font-size: 0;
254
+ & > * {
255
+ vertical-align: middle;
256
+ display: inline-block;
257
+ font-size: 14px;
258
+ }
259
+ &:before {
260
+ content: '';
261
+ vertical-align: middle;
262
+ display: inline-block;
263
+ width: 0;
264
+ height: 100%;
265
+ }
266
+ }
267
+
268
+ /* 文字居中
269
+ --------------- */
270
+ .text {
271
+ &-c {
272
+ text-align: center !important;
273
+ }
274
+ &-l {
275
+ text-align: left !important;
276
+ }
277
+ &-r {
278
+ text-align: right !important;
279
+ }
280
+ &-lr {
281
+ text-align: justify;
282
+ text-justify: inter-word;
283
+ }
284
+ &-ellipsis {
285
+ white-space: nowrap;
286
+ overflow: hidden;
287
+ text-overflow: ellipsis;
288
+ }
289
+ }
290
+
291
+ /* 弹性盒模型
292
+ --------------- */
293
+ .flex-box {
294
+ display: flex;
295
+ }
296
+ .flex-column {
297
+ display: flex;
298
+ flex-direction: column;
299
+ }
300
+
301
+ .flex-box > *,
302
+ .flex-column > * {
303
+ flex: none;
304
+ }
305
+
306
+ .flex {
307
+ &-v {
308
+ align-items: center;
309
+ }
310
+ &-s {
311
+ align-items: flex-start;
312
+ }
313
+ &-e {
314
+ align-items: flex-end;
315
+ }
316
+ &-l {
317
+ justify-content: flex-start;
318
+ }
319
+ &-r {
320
+ justify-content: flex-end;
321
+ }
322
+ &-c {
323
+ justify-content: center;
324
+ }
325
+ &-lr {
326
+ justify-content: space-between;
327
+ }
328
+ &-sa {
329
+ justify-content: space-around;
330
+ }
331
+ }
332
+
333
+ .flex-item {
334
+ flex: auto;
335
+ }
336
+
337
+ @for $n from 0 to 10 {
338
+ .flex-#{$n} {
339
+ flex: $n $n auto;
340
+ }
341
+ }
342
+
343
+ /* 旋转图标90度
344
+ -------------- */
345
+ .rotate90 {
346
+ display: inline-block;
347
+ transform: rotate(90deg);
348
+ cursor: pointer;
349
+ }
350
+
351
+ /* 清除背景色
352
+ -------------- */
353
+ .bg {
354
+ &-none {
355
+ background: none !important;
356
+ }
357
+ }
358
+
359
+ /* 阴影 */
360
+ .box-shadow {
361
+ box-shadow: 0px 4px 16px 0px rgba($--color-black, 0.1);
362
+ }
363
+ .box-shadow-mini {
364
+ box-shadow: 0px 2px 8px 0px rgba($--color-black, 0.08);
365
+ }
366
+ .page-footer-shadow {
367
+ position: relative;
368
+ height: 38px;
369
+ margin-bottom: -12px;
370
+ &::before {
371
+ content: '';
372
+ pointer-events: none;
373
+ position: absolute;
374
+ top: 0px;
375
+ height: 100%;
376
+ left: -12px;
377
+ right: -12px;
378
+ box-shadow: 0px -2px 6px 0px rgba($--color-black, 0.08);
379
+ }
380
+ }
381
+
382
+ .page-button-shadow {
383
+ position: relative;
384
+ height: 44px;
385
+ margin-bottom: -12px;
386
+ &::before {
387
+ content: '';
388
+ pointer-events: none;
389
+ position: absolute;
390
+ top: 0px;
391
+ height: 100%;
392
+ left: -12px;
393
+ right: -12px;
394
+ box-shadow: 0px -2px 6px 0px rgba($--color-black, 0.08);
395
+ }
396
+ }
397
+
398
+ /* 边框
399
+ -------------- */
400
+ .bd {
401
+ &-none {
402
+ border: none !important;
403
+ }
404
+ &-a {
405
+ border: 1px solid $--border-color-base;
406
+ }
407
+ &-t {
408
+ border-top: 1px solid $--border-color-base;
409
+ }
410
+ &-l {
411
+ border-left: 1px solid $--border-color-base;
412
+ }
413
+ &-r {
414
+ border-right: 1px solid $--border-color-base;
415
+ }
416
+ &-b {
417
+ border-bottom: 1px solid $--border-color-base;
418
+ }
419
+ }
420
+ .bd-rs {
421
+ border-radius: $--border-radius-base;
422
+ }
423
+
424
+ /* 设置弹窗内容区内边距
425
+ -------------- */
426
+ .el-dialog__wrapper {
427
+ &.p-a-0 {
428
+ .el-dialog__body {
429
+ padding: 0;
430
+ }
431
+ }
432
+ &.p-t-0 {
433
+ .el-dialog__body {
434
+ padding-top: 0;
435
+ }
436
+ }
437
+ &.p-b-0 {
438
+ .el-dialog__body {
439
+ padding-bottom: 0;
440
+ }
441
+ }
442
+ }
443
+
444
+ /* 通用字号
445
+ -------------- */
446
+ .font-size-base {
447
+ font-size: var(--font-size-base);
448
+ }
449
+ .font-size-small {
450
+ font-size: var(--font-size-small);
451
+ }
452
+
453
+ /* 通用颜色
454
+ -------------- */
455
+ .color-primary {
456
+ color: var(--color-primary) !important;
457
+ }
458
+ .color-success {
459
+ color: var(--color-success);
460
+ }
461
+ .color-warning {
462
+ color: var(--color-warning);
463
+ }
464
+ .color-danger {
465
+ color: var(--color-danger);
466
+ }
467
+ .color-placeholder {
468
+ color: var(--color-text-placeholder);
469
+ }
470
+
471
+ .linear-grad {
472
+ background: var(--background-linear-gradient);
473
+ }
474
+
475
+ .color-white {
476
+ color: white;
477
+ }
478
+ .color-ccc {
479
+ color: #ccc;
480
+ }
481
+ .color-999 {
482
+ color: #999;
483
+ }
484
+ .color-666 {
485
+ color: #666;
486
+ }
487
+ .color-333 {
488
+ color: #333;
489
+ }
490
+
491
+ /* 鼠标默认样式
492
+ --------------- */
493
+ .cursor-d {
494
+ cursor: default;
495
+ }
496
+ /* 鼠标小手
497
+ --------------- */
498
+ .pointer {
499
+ cursor: pointer;
500
+ }
501
+
502
+ /* 鼠标禁止
503
+ ---------------- */
504
+ .cursor-not {
505
+ cursor: not-allowed;
506
+ }
507
+
508
+ /* 字重
509
+ --------------- */
510
+ .font {
511
+ &-w600 {
512
+ font-weight: var(--font-weight-primary);
513
+ }
514
+ }
515
+
516
+ /* 字号
517
+ --------------- */
518
+ .f-s {
519
+ &-s {
520
+ /* 12号字 */
521
+ font-size: var(--font-size-small);
522
+ }
523
+ &-b {
524
+ /* 14号字 */
525
+ font-size: var(--font-size-base);
526
+ }
527
+ &-m {
528
+ /* 16号字 */
529
+ font-size: var(--font-size-medium);
530
+ }
531
+ &-l {
532
+ /* 18号 */
533
+ font-size: var(--font-size-large);
534
+ }
535
+ &-xl {
536
+ font-size: var(--font-size-extra-large);
537
+ }
538
+ }
539
+
540
+ /* 宽高范围是 60-1000
541
+ ---------------- */
542
+ $list: 45, 60, 80, 100, 110, 120, 130, 140, 150, 160, 170, 180, 190, 200, 210, 220, 230, 240, 250, 260, 270, 280, 290,
543
+ 300, 400, 500, 600, 700, 800, 900, 1000;
544
+ @each $n in $list {
545
+ .w-#{$n} {
546
+ width: #{$n}px !important;
547
+ }
548
+ .h-#{$n} {
549
+ height: #{$n}px !important;
550
+ }
551
+ }
552
+
553
+ /* 宽百分比 */
554
+ @for $i from 1 through 10 {
555
+ .w-#{$i}0p {
556
+ width: #{$i + '0%'} !important;
557
+ }
558
+ }
559
+
560
+ .n20-page-content {
561
+ overflow-y: auto;
562
+ overflow-x: hidden;
563
+ }
564
+
565
+ /* 边框圆角
566
+ -------------- */
567
+ .b {
568
+ &-r {
569
+ border-radius: 50%;
570
+ }
571
+ &-r-4 {
572
+ border-radius: 4px;
573
+ }
574
+ &-r-5 {
575
+ border-radius: 5px;
576
+ }
577
+ &-r-6 {
578
+ border-radius: 6px;
579
+ }
580
+ &-r-7 {
581
+ border-radius: 7px;
582
+ }
583
+ &-r-8 {
584
+ border-radius: 8px;
585
+ }
586
+ &-r-9 {
587
+ border-radius: 9px;
588
+ }
589
+ &-r-10 {
590
+ border-radius: 10px;
591
+ }
592
+ }
593
+
594
+ /* 垂直对齐
595
+ --------------- */
596
+ .align {
597
+ &-baseline {
598
+ vertical-align: baseline; // 将一个元素的基线与其父元素的基线对齐。
599
+ }
600
+ &-top {
601
+ vertical-align: top; // 将一个元素的顶部和它的子代与整个行的顶部对齐。
602
+ }
603
+ &-middle {
604
+ vertical-align: middle; // 将元素的中间与基线加父元素的一半高度对齐。
605
+ }
606
+ &-bottom {
607
+ vertical-align: bottom; // 将一个元素的底部和它的子代与整个行的底部对齐。
608
+ }
609
+ &-text-top {
610
+ vertical-align: text-top; // 使元素的顶部与父元素的字体顶部对齐。
611
+ }
612
+ &-text-bottom {
613
+ vertical-align: text-bottom; // 使元素的底部与父元素的字体底部对齐。
614
+ }
615
+ }
616
+
617
+ /* 本文选择 */
618
+
619
+ .select {
620
+ &-none {
621
+ user-select: none; // 防止选择元素及其子元素中的文本。
622
+ }
623
+ &-text {
624
+ user-select: text; // 允许选择元素及其子元素中的文本。
625
+ }
626
+ &-all {
627
+ user-select: all; // 在用户点击时自动选择元素中的所有文本。
628
+ }
629
+ &-auto {
630
+ user-select: auto; // 使用默认的浏览器行为来选择文本
631
+ }
632
+ }
633
+
634
+ /* 文本溢出显示省略号 */
635
+ .truncate {
636
+ overflow: hidden;
637
+ text-overflow: ellipsis;
638
+ white-space: nowrap;
639
+ }
640
+
641
+ /* 本文转换 */
642
+ /* 使用 uppercase 功能类对文本进行大写转换 */
643
+ .uppercase {
644
+ text-transform: uppercase;
645
+ }
646
+ /* 使用 lowercase 功能类对文本进行小写转换 */
647
+ .lowercase {
648
+ text-transform: lowercase;
649
+ }
650
+ /* 使用 capitalize 功能类对文本进行首字母大写转换 */
651
+ .capitalize {
652
+ text-transform: capitalize;
653
+ }
654
+
655
+ /* 下划线 */
656
+ .underline {
657
+ text-decoration: underline;
658
+ }
659
+ /* 删除线 */
660
+ .line-through {
661
+ text-decoration: line-through;
662
+ }
663
+ /* 移除文本装饰 */
664
+ .no-underline {
665
+ text-decoration: none;
666
+ }
667
+
668
+ /* 动画 */
669
+ .animate {
670
+ &-none {
671
+ animation: none;
672
+ }
673
+ &-spin {
674
+ animation: spin 1s linear infinite;
675
+ }
676
+ &-ping {
677
+ animation: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite;
678
+ }
679
+ &-pulse {
680
+ animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
681
+ }
682
+ &-bounce {
683
+ animation: bounce 1s infinite;
684
+ }
685
+ }
686
+
687
+ @keyframes spin {
688
+ from {
689
+ transform: rotate(0deg);
690
+ }
691
+ to {
692
+ transform: rotate(360deg);
693
+ }
694
+ }
695
+ @keyframes ping {
696
+ 75%,
697
+ 100% {
698
+ transform: scale(2);
699
+ opacity: 0;
700
+ }
701
+ }
702
+
703
+ @keyframes pulse {
704
+ 0%,
705
+ 100% {
706
+ opacity: 1;
707
+ }
708
+ 50% {
709
+ opacity: 0.5;
710
+ }
711
+ }
712
+
713
+ @keyframes bounce {
714
+ 0%,
715
+ 100% {
716
+ transform: translateY(-25%);
717
+ animation-timing-function: cubic-bezier(0.8, 0, 1, 1);
718
+ }
719
+ 50% {
720
+ transform: translateY(0);
721
+ animation-timing-function: cubic-bezier(0, 0, 0.2, 1);
722
+ }
723
+ }