@neatui/css 4.0.2 → 4.2.0

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.
package/GUIDE.md CHANGED
@@ -137,7 +137,7 @@ npm install @neatui/css @neatui/vue
137
137
 
138
138
  ## 尺寸系统
139
139
 
140
- 从3.x升级时,同名尺寸类不保证保持原值。请按 [4.0尺寸迁移指南](./MIGRATION-4.0.md) 的旧值表进行迁移。
140
+ 从3.x升级时,同名尺寸类不保证保持原值。请按 [4.0尺寸迁移指南](./MIGRATION-4.0.md) 的旧值表进行迁移。从4.0升级到4.1时,按 [4.1尺寸迁移指南](./MIGRATION-4.1.md) 检查 `*m`、`*l` 档位。
141
141
 
142
142
  ### 核心概念:S/M/L 矩阵
143
143
 
@@ -191,16 +191,16 @@ xl → 5.5em
191
191
 
192
192
  中型容器段:
193
193
  w-xs*m // 18em
194
- w-xl*m // 38em
194
+ w-xl*m // 28em
195
195
 
196
196
  大型容器段:
197
- w-xs*l // 42em
198
- w-xl*l // 82em
197
+ w-xs*l // 30em
198
+ w-xl*l // 70em
199
199
  ```
200
200
 
201
201
  `w/h` 的 `*s/*m/*l` 是分段档位,不是乘法。4.0 起不再生成 `w-sm+` 这类宽高增量类。
202
202
 
203
- **覆盖范围**: 0-82em (0-1312px @ 16px),共 45 种宽高尺寸
203
+ **覆盖范围**: 0-70em (0-1120px @ 16px),共 45 种宽高尺寸
204
204
 
205
205
  ### 应用于各属性
206
206
 
package/MIGRATION-4.0.md CHANGED
@@ -85,6 +85,21 @@ mob:w-ll 20em -> mob:w-ss*m 20em
85
85
  | `*m` | 5 | 5.5 | 6 | 6.5 | 7 | 7.5 | 8 | 8.5 | 9 | 9.5 | 10 |
86
86
  | `*l` | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
87
87
 
88
+ ### 早期 3.x 遗留的 `fs-xxs`
89
+
90
+ 早期 3.x 曾生成 `fs-xxs`;后期 3.x 将字号收敛为 `fs-xs ~ fs-xl` 时从
91
+ CSS 源码移除了该档位,但下游项目中仍可能保留大量 `fs-xxs`。迁移时必须显式搜索,
92
+ 不能因为最终 3.x 源码中已经没有该类就跳过:
93
+
94
+ | 早期 3.x 类名 | 旧值 | 4.0 类名 | 新值 | 结果 |
95
+ |---|---:|---|---:|---|
96
+ | `fs-xxs` | 0.7rem | `fs-xs` | 0.6875rem | 近似,-0.0125rem |
97
+ | `fs-xxs+` | 0.75rem | `fs-ss` | 0.75rem | 精确 |
98
+ | `fs-xxs*` | 1.4rem | `fs-lm` | 1.375rem | 近似,-0.025rem |
99
+
100
+ `fs-xxs-sub`、伪元素变体和响应式前缀使用同一数值映射。例如
101
+ `mob:fs-xxs` 应迁移为 `mob:fs-xs`。
102
+
88
103
  | 3.x 类名 | 旧值 | 4.0 类名 | 新值 | 结果 |
89
104
  |---|---:|---|---:|---|
90
105
  | `fs-xs` | 0.8rem | `fs-sm` | 0.8125rem | 近似,+0.0125rem |
@@ -135,7 +150,7 @@ mob:w-ll 20em -> mob:w-ss*m 20em
135
150
 
136
151
  ## 检查清单
137
152
 
138
- 1. 搜索所有字号及宽高类,包括动态字符串和响应式前缀。
153
+ 1. 搜索所有字号及宽高类,包括动态字符串和响应式前缀;必须单独搜索早期 3.x 遗留的 `fs-xxs`、`fs-xxs+`、`fs-xxs*`。
139
154
  2. 根据3.x表计算旧值。
140
155
  3. 优先选择4.0精确同值档位。
141
156
  4. 没有精确值时记录差值并进行视觉确认。
@@ -0,0 +1,75 @@
1
+ # NeatUI CSS 4.1 迁移指南
2
+
3
+ 4.1 调整了宽高尺寸系统的中型与大型容器段,使常用表单和弹窗宽度获得更细的档位。类名没有删除,但同名 `*m`、`*l` 类的实际值发生了变化,升级时必须检查布局。
4
+
5
+ 以下变化同时适用于响应式前缀,以及 `w / min-w / max-w / h / min-h / max-h` 六组属性。基础段和 `*s` 段保持不变。
6
+
7
+ ## 4.0.0 → 4.1.0 对照表
8
+
9
+ 单位均为 `em`;括号内为根字号或当前元素字号为 `16px` 时的参考像素值。
10
+
11
+ | 档位 | 4.0.0 | 4.1.0 | 变化 |
12
+ |---|---:|---:|---:|
13
+ | `xs*m` | 18em(288px) | 18em(288px) | 不变 |
14
+ | `ss*m` | 20em(320px) | 19em(304px) | -1em(-16px) |
15
+ | `sm*m` | 22em(352px) | 20em(320px) | -2em(-32px) |
16
+ | `sl*m` | 24em(384px) | 21em(336px) | -3em(-48px) |
17
+ | `ms*m` | 26em(416px) | 22em(352px) | -4em(-64px) |
18
+ | `mm*m` | 28em(448px) | 23em(368px) | -5em(-80px) |
19
+ | `ml*m` | 30em(480px) | 24em(384px) | -6em(-96px) |
20
+ | `ls*m` | 32em(512px) | 25em(400px) | -7em(-112px) |
21
+ | `lm*m` | 34em(544px) | 26em(416px) | -8em(-128px) |
22
+ | `ll*m` | 36em(576px) | 27em(432px) | -9em(-144px) |
23
+ | `xl*m` | 38em(608px) | 28em(448px) | -10em(-160px) |
24
+ | `xs*l` | 42em(672px) | 30em(480px) | -12em(-192px) |
25
+ | `ss*l` | 46em(736px) | 34em(544px) | -12em(-192px) |
26
+ | `sm*l` | 50em(800px) | 38em(608px) | -12em(-192px) |
27
+ | `sl*l` | 54em(864px) | 42em(672px) | -12em(-192px) |
28
+ | `ms*l` | 58em(928px) | 46em(736px) | -12em(-192px) |
29
+ | `mm*l` | 62em(992px) | 50em(800px) | -12em(-192px) |
30
+ | `ml*l` | 66em(1056px) | 54em(864px) | -12em(-192px) |
31
+ | `ls*l` | 70em(1120px) | 58em(928px) | -12em(-192px) |
32
+ | `lm*l` | 74em(1184px) | 62em(992px) | -12em(-192px) |
33
+ | `ll*l` | 78em(1248px) | 66em(1056px) | -12em(-192px) |
34
+ | `xl*l` | 82em(1312px) | 70em(1120px) | -12em(-192px) |
35
+
36
+ ## 保持 4.0.0 实际尺寸
37
+
38
+ 如果升级后必须尽量保持原来的实际宽高,不要保留同名类;应按目标值重新选择 4.1.0 档位。下表列出能够精确对应的常用迁移:
39
+
40
+ | 4.0.0 类名 | 旧值 | 4.1.0 类名 | 新值 | 结果 |
41
+ |---|---:|---|---:|---|
42
+ | `*-ss*m` | 20em | `*-sm*m` | 20em | 精确 |
43
+ | `*-sm*m` | 22em | `*-ms*m` | 22em | 精确 |
44
+ | `*-sl*m` | 24em | `*-ml*m` | 24em | 精确 |
45
+ | `*-ms*m` | 26em | `*-lm*m` | 26em | 精确 |
46
+ | `*-mm*m` | 28em | `*-xl*m` | 28em | 精确 |
47
+ | `*-ml*m` | 30em | `*-xs*l` | 30em | 精确 |
48
+ | `*-lm*m` | 34em | `*-ss*l` | 34em | 精确 |
49
+ | `*-xl*m` | 38em | `*-sm*l` | 38em | 精确 |
50
+ | `*-xs*l` | 42em | `*-sl*l` | 42em | 精确 |
51
+ | `*-ss*l` | 46em | `*-ms*l` | 46em | 精确 |
52
+ | `*-sm*l` | 50em | `*-mm*l` | 50em | 精确 |
53
+ | `*-sl*l` | 54em | `*-ml*l` | 54em | 精确 |
54
+ | `*-ms*l` | 58em | `*-ls*l` | 58em | 精确 |
55
+ | `*-mm*l` | 62em | `*-lm*l` | 62em | 精确 |
56
+ | `*-ml*l` | 66em | `*-ll*l` | 66em | 精确 |
57
+ | `*-ls*l` | 70em | `*-xl*l` | 70em | 精确 |
58
+
59
+ 这里的 `*` 表示保留原属性前缀。例如:
60
+
61
+ ```text
62
+ w-ss*m -> w-sm*m
63
+ max-w-xl*m -> max-w-sm*l
64
+ mob:min-h-ms*l -> mob:min-h-ls*l
65
+ ```
66
+
67
+ 4.0.0 中实际使用的 `32 / 36 / 74 / 78 / 82em` 在 4.1.0 中没有精确档位。遇到这些值时,应根据布局选择相邻档位并进行视觉回归;不要仅按档位名称迁移。
68
+
69
+ ## 检查清单
70
+
71
+ 1. 搜索 `*m`、`*l` 宽高类,包括动态字符串和响应式前缀。
72
+ 2. 确认同名类缩小后,表单、弹窗、侧栏和固定高度区域是否仍符合预期。
73
+ 3. 需要保持旧尺寸时,按实际 `em` 值选择新的档位。
74
+ 4. 检查 `w / min-w / max-w / h / min-h / max-h` 六组属性。
75
+ 5. 编译 CSS,并在常用桌面与移动视口进行视觉回归。
@@ -289,6 +289,11 @@ $cos: 'main', 'text', 'read', 'note', 'idle', 'case', 'line', 'info', 'well', 'w
289
289
  color: currentColor;
290
290
  box-shadow: inset 0 0 0 1px currentColor;
291
291
  }
292
+
293
+ &[ui-form-clean~='empty'] {
294
+ opacity: 0 !important;
295
+ pointer-events: none !important;
296
+ }
292
297
  }
293
298
  [ui-form] {
294
299
  &:hover {
package/core/trim.scss CHANGED
@@ -30,32 +30,98 @@ $dimension-s: (
30
30
 
31
31
  $dimension-m: (
32
32
  xs: 18,
33
- ss: 20,
34
- sm: 22,
35
- sl: 24,
36
- ms: 26,
37
- mm: 28,
38
- ml: 30,
39
- ls: 32,
40
- lm: 34,
41
- ll: 36,
42
- xl: 38,
33
+ ss: 19,
34
+ sm: 20,
35
+ sl: 21,
36
+ ms: 22,
37
+ mm: 23,
38
+ ml: 24,
39
+ ls: 25,
40
+ lm: 26,
41
+ ll: 27,
42
+ xl: 28,
43
43
  );
44
44
 
45
45
  $dimension-l: (
46
- xs: 42,
47
- ss: 46,
48
- sm: 50,
49
- sl: 54,
50
- ms: 58,
51
- mm: 62,
52
- ml: 66,
53
- ls: 70,
54
- lm: 74,
55
- ll: 78,
56
- xl: 82,
46
+ xs: 30,
47
+ ss: 34,
48
+ sm: 38,
49
+ sl: 42,
50
+ ms: 46,
51
+ mm: 50,
52
+ ml: 54,
53
+ ls: 58,
54
+ lm: 62,
55
+ ll: 66,
56
+ xl: 70,
57
57
  );
58
58
 
59
+ $_spacing-scale: (
60
+ no: 0em,
61
+ xs: 1px,
62
+ ss: 0.25em,
63
+ sm: 0.5em,
64
+ sl: 0.75em,
65
+ ms: 1em,
66
+ mm: 1.5em,
67
+ ml: 2em,
68
+ ls: 2.5em,
69
+ lm: 3em,
70
+ ll: 4em,
71
+ xl: 5em,
72
+ );
73
+
74
+ $_radius-scale: (
75
+ no: 0em,
76
+ xs: 0.1em,
77
+ ss: 0.2em,
78
+ sm: 0.3em,
79
+ sl: 0.4em,
80
+ ms: 0.5em,
81
+ mm: 0.6em,
82
+ ml: 0.7em,
83
+ ls: 0.8em,
84
+ lm: 0.9em,
85
+ ll: 1em,
86
+ xl: 1.2em,
87
+ );
88
+
89
+ @mixin _spacing-properties($properties, $value, $important: false) {
90
+ @each $property in $properties {
91
+ @if $important {
92
+ #{$property}: $value !important;
93
+ } @else {
94
+ #{$property}: $value;
95
+ }
96
+ }
97
+ }
98
+
99
+ @mixin _spacing-utility($media, $prefix, $size, $value, $properties, $children: true) {
100
+ .#{$media}#{$prefix}-#{$size} {
101
+ @include _spacing-properties($properties, $value, true);
102
+ }
103
+
104
+ @if $children {
105
+ html body .#{$media}#{$prefix}-#{$size}-sub > *,
106
+ .#{$media}#{$prefix}-#{$size}-sun > * > * {
107
+ @include _spacing-properties($properties, $value);
108
+ }
109
+ }
110
+ }
111
+
112
+ @mixin _margin-edge-reset($media, $prefix, $size, $property, $pseudo) {
113
+ .#{$media}#{$prefix}-#{$size}-sub > *:#{$pseudo},
114
+ .#{$media}#{$prefix}-#{$size}-sun > * > *:#{$pseudo} {
115
+ #{$property}: 0;
116
+ }
117
+ }
118
+
119
+ @mixin _row-spacing($media, $prefix, $size, $value, $properties) {
120
+ [ui-row].#{$media}#{$prefix}-#{$size}-sub {
121
+ @include _spacing-properties($properties, -($value));
122
+ }
123
+ }
124
+
59
125
  @mixin dimension-scale($media, $prefix, $property) {
60
126
  .#{$media}#{$prefix}-no {
61
127
  #{$property}: 0;
@@ -85,99 +151,62 @@ $dimension-l: (
85
151
  @mixin trim($media: "") {
86
152
  $size: (no, xs, ss, sm, sl, ms, mm, ml, ls, lm, ll, xl);
87
153
 
88
- // 栅格
89
- $col_base: 0;
90
- $col_unit: em;
91
- @each $sz in $size {
92
- @if ($sz == xs) {
93
- $col_base: 1;
94
- $col_unit: px;
95
- } @else {
96
- $col_unit: em;
97
- }
98
-
99
- // 栅格系统配套
100
- [ui-row] {
101
- // 左右内边距
102
- &.#{$media}n-#{$sz}-sub,
103
- &.#{$media}nx-#{$sz}-sub,
104
- &.#{$media}nl-#{$sz}-sub {
105
- margin-left: -$col_base + $col_unit;
106
- }
107
- &.#{$media}n-#{$sz}-sub,
108
- &.#{$media}nx-#{$sz}-sub,
109
- &.#{$media}nr-#{$sz}-sub {
110
- margin-right: -$col_base + $col_unit;
111
- }
112
-
113
- // 上下内边距
114
- &.#{$media}n-#{$sz}-sub,
115
- &.#{$media}ny-#{$sz}-sub,
116
- &.#{$media}nt-#{$sz}-sub {
117
- margin-top: -$col_base + $col_unit;
118
- }
119
- &.#{$media}n-#{$sz}-sub,
120
- &.#{$media}ny-#{$sz}-sub,
121
- &.#{$media}nb-#{$sz}-sub {
122
- margin-bottom: -$col_base + $col_unit;
123
- }
124
- }
125
-
126
- @if ($sz == xs) {
127
- $col_base: 0;
128
- }
129
- @if ($col_base < 1) {
130
- $col_base: $col_base + 0.25;
131
- } @else if($col_base >= 3) {
132
- $col_base: $col_base + 1;
133
- } @else {
134
- $col_base: $col_base + 0.5;
135
- }
154
+ // 栅格负边距补偿:总项 < 轴向 < 单边
155
+ @each $sz, $value in $_spacing-scale {
156
+ @include _row-spacing(
157
+ $media,
158
+ "n",
159
+ $sz,
160
+ $value,
161
+ (margin-top, margin-right, margin-bottom, margin-left)
162
+ );
163
+ }
164
+ @each $sz, $value in $_spacing-scale {
165
+ @include _row-spacing($media, "nx", $sz, $value, (margin-left, margin-right));
166
+ @include _row-spacing($media, "ny", $sz, $value, (margin-top, margin-bottom));
167
+ }
168
+ @each $sz, $value in $_spacing-scale {
169
+ @include _row-spacing($media, "nt", $sz, $value, (margin-top,));
170
+ @include _row-spacing($media, "nr", $sz, $value, (margin-right,));
171
+ @include _row-spacing($media, "nb", $sz, $value, (margin-bottom,));
172
+ @include _row-spacing($media, "nl", $sz, $value, (margin-left,));
136
173
  }
137
174
 
138
- // 圆角
139
- $br_base: 0;
175
+ // 圆角:总项 < 双角 < 单角
140
176
  .#{$media}r-full {
141
177
  border-radius: 10000em;
142
178
  }
143
- @each $sz in $size {
144
- // 四角
179
+ @each $sz, $value in $_radius-scale {
145
180
  .#{$media}r-#{$sz} {
146
- border-radius: #{$br_base}em;
181
+ border-radius: $value;
147
182
  }
148
- // 上面
183
+ }
184
+ @each $sz, $value in $_radius-scale {
149
185
  .#{$media}r-t-#{$sz} {
150
- border-radius: #{$br_base}em #{$br_base}em 0 0;
186
+ border-top-left-radius: $value;
187
+ border-top-right-radius: $value;
151
188
  }
152
- // 下面
153
189
  .#{$media}r-b-#{$sz} {
154
- border-radius: 0 0 #{$br_base}em #{$br_base}em;
190
+ border-bottom-right-radius: $value;
191
+ border-bottom-left-radius: $value;
155
192
  }
156
- // 左上
193
+ }
194
+ @each $sz, $value in $_radius-scale {
157
195
  .#{$media}r-lt-#{$sz} {
158
- border-top-left-radius: #{$br_base}em;
196
+ border-top-left-radius: $value;
159
197
  }
160
- // 右上
161
198
  .#{$media}r-rt-#{$sz} {
162
- border-top-right-radius: #{$br_base}em;
199
+ border-top-right-radius: $value;
163
200
  }
164
- // 左下
165
201
  .#{$media}r-lb-#{$sz} {
166
- border-bottom-left-radius: #{$br_base}em;
202
+ border-bottom-left-radius: $value;
167
203
  }
168
- // 右下
169
204
  .#{$media}r-rb-#{$sz} {
170
- border-bottom-right-radius: #{$br_base}em;
171
- }
172
-
173
- @if ($br_base <1) {
174
- $br_base: $br_base + 0.1;
175
- } @else {
176
- $br_base: $br_base + 0.2;
205
+ border-bottom-right-radius: $value;
177
206
  }
178
207
  }
179
208
 
180
- // 边距
209
+ // 偏移量
181
210
  $base: 0;
182
211
  $unit: em;
183
212
  @each $sz in $size {
@@ -188,7 +217,6 @@ $dimension-l: (
188
217
  $unit: em;
189
218
  }
190
219
 
191
- // 偏移量
192
220
  .#{$media}o {
193
221
  &l-#{$sz} {
194
222
  left: $base + $unit;
@@ -231,213 +259,6 @@ $dimension-l: (
231
259
  }
232
260
  }
233
261
 
234
- // 内边距
235
- .#{$media}n {
236
- &l,
237
- &x,
238
- & {
239
- &-#{$sz} {
240
- @at-root {
241
- & {
242
- padding-left: $base + $unit !important;
243
- }
244
-
245
- html body &-sub > *,
246
- &-sun > * > * {
247
- padding-left: $base + $unit;
248
- }
249
- }
250
- }
251
- }
252
-
253
- &r,
254
- &x,
255
- & {
256
- &-#{$sz} {
257
- @at-root {
258
- & {
259
- padding-right: $base + $unit !important;
260
- }
261
-
262
- html body &-sub > *,
263
- &-sun > * > * {
264
- padding-right: $base + $unit;
265
- }
266
- }
267
- }
268
- }
269
-
270
- &t,
271
- &y,
272
- & {
273
- &-#{$sz} {
274
- @at-root {
275
- & {
276
- padding-top: $base + $unit !important;
277
- }
278
-
279
- html body &-sub > *,
280
- &-sun > * > * {
281
- padding-top: $base + $unit;
282
- }
283
- }
284
- }
285
- }
286
-
287
- &b,
288
- &y,
289
- & {
290
- &-#{$sz} {
291
- @at-root {
292
- & {
293
- padding-bottom: $base + $unit !important;
294
- }
295
-
296
- html body &-sub > *,
297
- &-sun > * > * {
298
- padding-bottom: $base + $unit;
299
- }
300
- }
301
- }
302
- }
303
- }
304
-
305
- // 外边距
306
- .#{$media}m {
307
- &l,
308
- &x,
309
- & {
310
- &-#{$sz} {
311
- @at-root {
312
- & {
313
- margin-left: $base + $unit !important;
314
- }
315
-
316
- html body &-sub > *,
317
- &-sun > * > * {
318
- margin-left: $base + $unit;
319
- }
320
- }
321
-
322
- // 子集
323
- &-sub > *,
324
- &-sun > * > * {
325
- &:first-child {
326
- margin-left: 0;
327
- }
328
- }
329
- }
330
- }
331
-
332
- &r,
333
- &x,
334
- & {
335
- &-#{$sz} {
336
- @at-root {
337
- & {
338
- margin-right: $base + $unit !important;
339
- }
340
-
341
- html body &-sub > *,
342
- &-sun > * > * {
343
- margin-right: $base + $unit;
344
- }
345
- }
346
-
347
- // 子集
348
- &-sub > *,
349
- &-sun > * > * {
350
- &:last-child {
351
- margin-right: 0;
352
- }
353
- }
354
- }
355
- }
356
-
357
- &t,
358
- &y,
359
- & {
360
- &-#{$sz} {
361
- @at-root {
362
- & {
363
- margin-top: $base + $unit !important;
364
- }
365
-
366
- html body &-sub > *,
367
- &-sun > * > * {
368
- margin-top: $base + $unit;
369
- }
370
- }
371
- }
372
- }
373
-
374
- &b,
375
- &y,
376
- & {
377
- &-#{$sz} {
378
- @at-root {
379
- & {
380
- margin-bottom: $base + $unit !important;
381
- }
382
-
383
- html body &-sub > *,
384
- &-sun > * > * {
385
- margin-bottom: $base + $unit;
386
- }
387
- }
388
- }
389
- }
390
- }
391
- .#{$media}-m {
392
- &l,
393
- &x,
394
- & {
395
- &-#{$sz} {
396
- @at-root {
397
- & {
398
- margin-left: -($base + $unit) !important;
399
- }
400
- }
401
- }
402
- }
403
-
404
- &r,
405
- &x,
406
- & {
407
- &-#{$sz} {
408
- @at-root {
409
- & {
410
- margin-right: -($base + $unit) !important;
411
- }
412
- }
413
- }
414
- }
415
-
416
- &t,
417
- &y,
418
- & {
419
- &-#{$sz} {
420
- @at-root {
421
- & {
422
- margin-top: -($base + $unit) !important;
423
- }
424
- }
425
- }
426
- }
427
-
428
- &b,
429
- &y,
430
- & {
431
- &-#{$sz} {
432
- @at-root {
433
- & {
434
- margin-bottom: -($base + $unit) !important;
435
- }
436
- }
437
- }
438
- }
439
- }
440
-
441
262
  @if ($sz == xs) {
442
263
  $base: 0;
443
264
  }
@@ -450,6 +271,76 @@ $dimension-l: (
450
271
  }
451
272
  }
452
273
 
274
+ // 内边距:总项 < 轴向 < 单边
275
+ @each $sz, $value in $_spacing-scale {
276
+ @include _spacing-utility(
277
+ $media,
278
+ "n",
279
+ $sz,
280
+ $value,
281
+ (padding-top, padding-right, padding-bottom, padding-left)
282
+ );
283
+ }
284
+ @each $sz, $value in $_spacing-scale {
285
+ @include _spacing-utility($media, "nx", $sz, $value, (padding-left, padding-right));
286
+ @include _spacing-utility($media, "ny", $sz, $value, (padding-top, padding-bottom));
287
+ }
288
+ @each $sz, $value in $_spacing-scale {
289
+ @include _spacing-utility($media, "nt", $sz, $value, (padding-top,));
290
+ @include _spacing-utility($media, "nr", $sz, $value, (padding-right,));
291
+ @include _spacing-utility($media, "nb", $sz, $value, (padding-bottom,));
292
+ @include _spacing-utility($media, "nl", $sz, $value, (padding-left,));
293
+ }
294
+
295
+ // 外边距:总项 < 轴向 < 单边
296
+ @each $sz, $value in $_spacing-scale {
297
+ @include _spacing-utility(
298
+ $media,
299
+ "m",
300
+ $sz,
301
+ $value,
302
+ (margin-top, margin-right, margin-bottom, margin-left)
303
+ );
304
+ @include _margin-edge-reset($media, "m", $sz, margin-left, first-child);
305
+ @include _margin-edge-reset($media, "m", $sz, margin-right, last-child);
306
+ }
307
+ @each $sz, $value in $_spacing-scale {
308
+ @include _spacing-utility($media, "mx", $sz, $value, (margin-left, margin-right));
309
+ @include _margin-edge-reset($media, "mx", $sz, margin-left, first-child);
310
+ @include _margin-edge-reset($media, "mx", $sz, margin-right, last-child);
311
+ @include _spacing-utility($media, "my", $sz, $value, (margin-top, margin-bottom));
312
+ }
313
+ @each $sz, $value in $_spacing-scale {
314
+ @include _spacing-utility($media, "mt", $sz, $value, (margin-top,));
315
+ @include _spacing-utility($media, "mr", $sz, $value, (margin-right,));
316
+ @include _margin-edge-reset($media, "mr", $sz, margin-right, last-child);
317
+ @include _spacing-utility($media, "mb", $sz, $value, (margin-bottom,));
318
+ @include _spacing-utility($media, "ml", $sz, $value, (margin-left,));
319
+ @include _margin-edge-reset($media, "ml", $sz, margin-left, first-child);
320
+ }
321
+
322
+ // 负外边距:总项 < 轴向 < 单边
323
+ @each $sz, $value in $_spacing-scale {
324
+ @include _spacing-utility(
325
+ $media,
326
+ "-m",
327
+ $sz,
328
+ -($value),
329
+ (margin-top, margin-right, margin-bottom, margin-left),
330
+ false
331
+ );
332
+ }
333
+ @each $sz, $value in $_spacing-scale {
334
+ @include _spacing-utility($media, "-mx", $sz, -($value), (margin-left, margin-right), false);
335
+ @include _spacing-utility($media, "-my", $sz, -($value), (margin-top, margin-bottom), false);
336
+ }
337
+ @each $sz, $value in $_spacing-scale {
338
+ @include _spacing-utility($media, "-mt", $sz, -($value), (margin-top,), false);
339
+ @include _spacing-utility($media, "-mr", $sz, -($value), (margin-right,), false);
340
+ @include _spacing-utility($media, "-mb", $sz, -($value), (margin-bottom,), false);
341
+ @include _spacing-utility($media, "-ml", $sz, -($value), (margin-left,), false);
342
+ }
343
+
453
344
  // 宽度
454
345
  @include dimension-scale($media, "w", width);
455
346
  @include dimension-scale($media, "min-w", min-width);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neatui/css",
3
- "version": "4.0.2",
3
+ "version": "4.2.0",
4
4
  "description": "neatui",
5
5
  "main": "./neatui.scss",
6
6
  "license": "MIT",