@neatui/css 5.1.9 → 5.1.11
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/CHANGELOG.md +67 -0
- package/GUIDE.md +36 -13
- package/README.md +6 -0
- package/components/table/table@d.scss +23 -8
- package/core/grid.scss +10 -38
- package/core/trim.scss +7 -0
- package/dist/neatui.css +281 -121
- package/dist/neatui.min.css +2 -2
- package/dist/neatui.preview.css +281 -121
- package/dist/neatui.preview.min.css +2 -2
- package/package.json +2 -1
- package/tokens/grammar.cjs +6 -4
- package/tokens/neatui.tokens.json +201 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# @neatui/css 更新记录
|
|
2
|
+
|
|
3
|
+
## 5.1.11
|
|
4
|
+
|
|
5
|
+
### 不兼容变更:Grid 对齐与间距
|
|
6
|
+
|
|
7
|
+
从 5.1.10 及更早版本升级到 5.1.11 时,请按以下说明迁移 Grid 间距。
|
|
8
|
+
|
|
9
|
+
`ui-grid` 新增九宫格对齐,间距统一使用 Flex / Grid 共用的 `gap-*` class。旧的属性间距值不再生效,也不再通过 `--gap` 设置间距。
|
|
10
|
+
|
|
11
|
+
#### 基础迁移
|
|
12
|
+
|
|
13
|
+
```html
|
|
14
|
+
<!-- 升级前 -->
|
|
15
|
+
<div ui-grid="3 mm">...</div>
|
|
16
|
+
<div ui-grid="3 lm">...</div>
|
|
17
|
+
|
|
18
|
+
<!-- 升级后:保持原来的间距和默认对齐 -->
|
|
19
|
+
<div ui-grid="3" class="gap-mm">...</div>
|
|
20
|
+
<div ui-grid="3" class="gap-lm">...</div>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
所有旧间距档位 `no / xs / ss / sm / sl / ms / mm / ml / ls / lm / ll / xl` 都应从 `ui-grid` 移至 `gap-{档位}` class,数值保持不变,依次为 `0 / 1px / .25em / .5em / .75em / 1em / 1.5em / 2em / 2.5em / 3em / 4em / 5em`。
|
|
24
|
+
|
|
25
|
+
**特别注意 `lm`:** 它现在表示左侧垂直居中。保留旧 `lm` 不仅会丢失 `3em` 间距,还会改变对齐方式。没有设置对齐时子项仍默认横向撑满;显式设置九宫格对齐后,子项按内容宽度定位。
|
|
26
|
+
|
|
27
|
+
#### 响应式迁移
|
|
28
|
+
|
|
29
|
+
Grid 属性和 gap class 的断点方向不同,不能仅在旧值前添加 `gap-`:
|
|
30
|
+
|
|
31
|
+
| 配置 | 生效范围 |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| `ui-grid` 无前缀 / `mob:` | 所有宽度的基础值 |
|
|
34
|
+
| `ui-grid` 的 `pad:` | ≥ 800px |
|
|
35
|
+
| `ui-grid` 的 `dpc:` | ≥ 1280px |
|
|
36
|
+
| 无前缀 `gap-*` | 所有宽度的基础值 |
|
|
37
|
+
| `pad:gap-*` | ≤ 1279px,覆盖基础值 |
|
|
38
|
+
| `mob:gap-*` | ≤ 799px,覆盖基础值和平板值 |
|
|
39
|
+
|
|
40
|
+
```html
|
|
41
|
+
<!-- 升级前:手机 .5em、平板 1.5em、桌面 3em -->
|
|
42
|
+
<div ui-grid="mob:1 pad:2 dpc:4 mob:sm pad:mm dpc:lm">...</div>
|
|
43
|
+
|
|
44
|
+
<!-- 升级后:列数不变,以桌面间距为基础值 -->
|
|
45
|
+
<div ui-grid="mob:1 pad:2 dpc:4" class="gap-lm pad:gap-mm mob:gap-sm">...</div>
|
|
46
|
+
|
|
47
|
+
<!-- 升级前:仅从平板起设置 1.5em 间距,手机默认无间距 -->
|
|
48
|
+
<div ui-grid="3 pad:mm">...</div>
|
|
49
|
+
|
|
50
|
+
<!-- 升级后 -->
|
|
51
|
+
<div ui-grid="3" class="gap-mm mob:gap-no">...</div>
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
不支持 `dpc:gap-*`。迁移时先确定手机、平板、桌面各自的最终间距,再分别写入 `mob:gap-*`、`pad:gap-*` 和基础 `gap-*`。
|
|
55
|
+
|
|
56
|
+
#### 自定义样式与按需引入
|
|
57
|
+
|
|
58
|
+
原来通过 `style="--gap: ..."` 或样式表覆盖 `--gap` 的项目,应改用原生 `gap` 属性。`gap-*` 工具类带有 `!important`,使用自定义 `gap` 时请移除同一元素上的冲突工具类。
|
|
59
|
+
|
|
60
|
+
`gap-*` 定义在 `core/trim.scss`。全量引入 `neatui.scss` 无需调整;仅按需引入 `core/grid.scss` 的项目还需引入 `core/trim.scss`,或自行设置原生 `gap`。
|
|
61
|
+
|
|
62
|
+
#### 新增能力与升级检查
|
|
63
|
+
|
|
64
|
+
- Grid 支持 `lt / lm / lb / ct / cm / cb / rt / rm / rb`,以及 `mob:`、`pad:`、`dpc:` 对齐前缀。第一位控制单元格内水平位置,第二位控制子项及整组网格行的垂直位置;同层 `block` 优先让子项纵向拉伸。
|
|
65
|
+
- Flex 和 Grid 均可使用 `gap-*` 设置行列间距;间距不会增加容器外边距,也不会继承到嵌套容器。
|
|
66
|
+
- 检查项目内所有 `ui-grid`(包括 Vue 动态绑定、拼接字符串和封装组件)中的旧间距值,以及自定义 `--gap`。
|
|
67
|
+
- 在 799px、800px、1279px、1280px 附近检查列数、间距、对齐和嵌套布局,确认迁移前后的预期一致。
|
package/GUIDE.md
CHANGED
|
@@ -656,7 +656,7 @@ y: 纵向对齐
|
|
|
656
656
|
#### 语法格式
|
|
657
657
|
|
|
658
658
|
```html
|
|
659
|
-
ui-grid="{breakpoint}:{columns} {gap}"
|
|
659
|
+
ui-grid="{breakpoint}:{columns} {alignment}" class="gap-{grade}"
|
|
660
660
|
|
|
661
661
|
breakpoint:
|
|
662
662
|
mob (移动端)
|
|
@@ -664,25 +664,38 @@ breakpoint:
|
|
|
664
664
|
dpc (桌面)
|
|
665
665
|
|
|
666
666
|
columns: 列数 (1-12)
|
|
667
|
-
|
|
667
|
+
alignment: 九宫格对齐 (lt, lm, lb, ct, cm, cb, rt, rm, rb)
|
|
668
|
+
grade: gap class 的间距等级 (no, xs, ss, sm, sl, ms, mm, ml, ls, lm, ll, xl)
|
|
668
669
|
```
|
|
669
670
|
|
|
670
671
|
#### 基础用法
|
|
671
672
|
|
|
672
673
|
```html
|
|
673
674
|
<!-- 固定 3 列,间距 medium-large -->
|
|
674
|
-
<div ui-grid="3 ml">
|
|
675
|
+
<div ui-grid="3" class="gap-ml">
|
|
675
676
|
<div>Item 1</div>
|
|
676
677
|
<div>Item 2</div>
|
|
677
678
|
<div>Item 3</div>
|
|
678
679
|
</div>
|
|
679
680
|
```
|
|
680
681
|
|
|
682
|
+
#### 对齐
|
|
683
|
+
|
|
684
|
+
`ui-grid` 与 Flex 共用九宫格位置:`lt / lm / lb`、`ct / cm / cb`、`rt / rm / rb`。第一位 `l/c/r` 控制子项在各自单元格内的水平位置,第二位 `t/m/b` 控制垂直位置;容器有额外高度时,整组网格行也会顶部、居中或底部对齐。子项内部的文字或 Flex 内容仍由自身样式控制。
|
|
685
|
+
|
|
686
|
+
```html
|
|
687
|
+
<div ui-grid="3 lm" class="gap-no">...</div>
|
|
688
|
+
<div ui-grid="3 cm" class="gap-mm">...</div>
|
|
689
|
+
<div ui-grid="3 mob:lt pad:cm dpc:rb" class="gap-mm mob:gap-sm">...</div>
|
|
690
|
+
```
|
|
691
|
+
|
|
692
|
+
同一响应层建议只选一个对齐值;同时包含 `block` 时,`block` 优先让子项纵向拉伸。子项未指定宽度时,默认横向撑满;显式使用九宫格对齐后,子项按其内容宽度定位,需要撑满单元格的子项可自行设置 `width: 100%`。
|
|
693
|
+
|
|
681
694
|
#### 响应式网格
|
|
682
695
|
|
|
683
696
|
```html
|
|
684
697
|
<!-- 移动端 1 列,平板 3 列,桌面 5 列 -->
|
|
685
|
-
<div ui-grid="mob:1 pad:3 dpc:5 ml">
|
|
698
|
+
<div ui-grid="mob:1 pad:3 dpc:5" class="gap-ml">
|
|
686
699
|
<div>Item 1</div>
|
|
687
700
|
<div>Item 2</div>
|
|
688
701
|
<div>Item 3</div>
|
|
@@ -695,7 +708,7 @@ gap: 间距等级 (ss, sm, mm, ml, ll...)
|
|
|
695
708
|
|
|
696
709
|
**产品列表**
|
|
697
710
|
```html
|
|
698
|
-
<ul ui-grid="mob:1 pad:2 dpc:4
|
|
711
|
+
<ul ui-grid="mob:1 pad:2 dpc:4" class="my-lm gap-mm">
|
|
699
712
|
<li class="bg-fore n-mm r-sm" v-for="product in products">
|
|
700
713
|
<img :src="product.image" />
|
|
701
714
|
<h3 class="co-main fs-ml">{{ product.name }}</h3>
|
|
@@ -1178,17 +1191,27 @@ mx-{size}-sun // 为孙级元素设置左右 margin,并归零每组首/末项
|
|
|
1178
1191
|
Padding 的 `*-sub` 在 `[ui-row]` 容器上还会生成等量负 margin 补偿,让栅格子项的
|
|
1179
1192
|
内边距不会扩大容器的外边界。
|
|
1180
1193
|
|
|
1181
|
-
#### Grid gap
|
|
1194
|
+
#### Flex / Grid gap
|
|
1182
1195
|
|
|
1183
1196
|
```html
|
|
1184
|
-
<div ui-grid="4 sm">...</div>
|
|
1185
|
-
<div ui-grid="2
|
|
1197
|
+
<div ui-grid="4" class="gap-sm">...</div>
|
|
1198
|
+
<div ui-grid="2 pad:6 dpc:12" class="gap-mm mob:gap-sm">...</div>
|
|
1186
1199
|
```
|
|
1187
1200
|
|
|
1188
|
-
`
|
|
1201
|
+
Flex 与 Grid 共用 `gap-no` 至 `gap-xl` class,刻度为
|
|
1189
1202
|
`0 / 1px / .25em / .5em / .75em / 1em / 1.5em / 2em / 2.5em / 3em / 4em / 5em`。
|
|
1190
|
-
|
|
1191
|
-
|
|
1203
|
+
|
|
1204
|
+
```html
|
|
1205
|
+
<div ui-flex="row lm" class="gap-mm">...</div>
|
|
1206
|
+
<div ui-grid="3 lm" class="gap-mm">...</div>
|
|
1207
|
+
<div ui-grid="3 cm" class="gap-lm pad:gap-mm mob:gap-sm">...</div>
|
|
1208
|
+
```
|
|
1209
|
+
|
|
1210
|
+
Gap class 沿用其他 class 的响应式规则:默认作用于所有宽度,`pad:` 在最大 `1279px` 时覆盖,`mob:` 在最大 `799px` 时覆盖;不支持 `dpc:gap-*`。它设置原生 `gap`,同时控制行列间距,不增加容器外边距,也不会被嵌套容器继承。
|
|
1211
|
+
|
|
1212
|
+
`ui-grid` 属性仅组合 `1..12` 列数、九宫格对齐与 `block`。属性的响应规则保持原样:`mob:` 是无媒体条件的基础别名,`pad:` 从 `800px`、`dpc:` 从 `1280px` 生效。注意区分属性与 class 的响应规则。
|
|
1213
|
+
|
|
1214
|
+
**迁移旧写法:** `ui-grid="3 mm"` 改为 `ui-grid="3" class="gap-mm"`;原来表示 `3em` 间距的 `lm` 改为 `class="gap-lm"`。裸 `lm` 现在表示左侧垂直居中,不再设置间距。
|
|
1192
1215
|
|
|
1193
1216
|
### 尺寸类 (Sizing)
|
|
1194
1217
|
|
|
@@ -1536,7 +1559,7 @@ cursor-move
|
|
|
1536
1559
|
<div class="doc my-lm">
|
|
1537
1560
|
<h2 class="fs-xl bold co-main mb-ml">热门产品</h2>
|
|
1538
1561
|
|
|
1539
|
-
<ul ui-grid="mob:1 pad:2 dpc:4 ml">
|
|
1562
|
+
<ul ui-grid="mob:1 pad:2 dpc:4" class="gap-ml">
|
|
1540
1563
|
<li
|
|
1541
1564
|
v-for="product in products"
|
|
1542
1565
|
:key="product.id"
|
|
@@ -1788,7 +1811,7 @@ co-desc co-risk bg-well
|
|
|
1788
1811
|
|
|
1789
1812
|
<!-- 布局系统 -->
|
|
1790
1813
|
ui-flex="row xm"
|
|
1791
|
-
ui-grid="mob:1 pad:3 dpc:5 ml"
|
|
1814
|
+
ui-grid="mob:1 pad:3 dpc:5" class="gap-ml"
|
|
1792
1815
|
|
|
1793
1816
|
<!-- 响应式 -->
|
|
1794
1817
|
fs-lm pad:fs-mm mob:fs-sm
|
package/README.md
CHANGED
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
|
|
5
5
|
NeatUI 约束型原子设计系统(SCSS)。正式项目用 SCSS 自定义 `$theme`;试用可用预编译 preview(默认 light / dark)。
|
|
6
6
|
|
|
7
|
+
## 更新与升级
|
|
8
|
+
|
|
9
|
+
升级前请查看 [更新记录与迁移说明](./CHANGELOG.md)。
|
|
10
|
+
|
|
11
|
+
升级到 5.1.11 需要迁移旧间距语法:`ui-grid="3 mm"` 改为 `ui-grid="3" class="gap-mm"`;裸 `lm` 表示左侧垂直居中。响应式间距不能直接照搬前缀,请按更新记录中的示例迁移。
|
|
12
|
+
|
|
7
13
|
## 两种用法
|
|
8
14
|
|
|
9
15
|
**试用(Preview,仅默认 light / dark)**
|
|
@@ -47,20 +47,35 @@
|
|
|
47
47
|
background-color: var(--co-fore);
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
// 行是卡片:tr 的圆角裁不住背景,所以边框和底色画在单元格上,首尾单元格带圆角
|
|
50
51
|
thead,
|
|
51
52
|
tbody {
|
|
52
|
-
tr
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
tr > th,
|
|
54
|
+
tr > td {
|
|
55
|
+
background-color: var(--co-fore);
|
|
56
|
+
border-top: 1px solid var(--co-line);
|
|
57
|
+
border-bottom: 1px solid var(--co-line);
|
|
58
|
+
|
|
59
|
+
&:first-child {
|
|
60
|
+
border-left: 1px solid var(--co-line);
|
|
61
|
+
border-radius: 0.35em 0 0 0.35em;
|
|
62
|
+
}
|
|
63
|
+
&:last-child {
|
|
64
|
+
border-right: 1px solid var(--co-line);
|
|
65
|
+
border-radius: 0 0.35em 0.35em 0;
|
|
66
|
+
}
|
|
67
|
+
&:only-child {
|
|
68
|
+
border-radius: 0.35em;
|
|
69
|
+
}
|
|
56
70
|
}
|
|
57
71
|
}
|
|
58
72
|
|
|
59
|
-
//
|
|
73
|
+
// ux-hover 的移入底色叠在单元格内,不盖住边框
|
|
60
74
|
tr.ux-hover:hover,
|
|
61
75
|
.ux-hover-sub > tr:hover {
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
inset 0 0 0 100em var(--co-text-o-xxs);
|
|
76
|
+
> th,
|
|
77
|
+
> td {
|
|
78
|
+
box-shadow: inset 0 0 0 100em var(--co-text-o-xxs);
|
|
79
|
+
}
|
|
65
80
|
}
|
|
66
81
|
}
|
package/core/grid.scss
CHANGED
|
@@ -2,13 +2,12 @@
|
|
|
2
2
|
|
|
3
3
|
[ui-grid] {
|
|
4
4
|
display: grid;
|
|
5
|
-
gap:
|
|
5
|
+
gap: 0;
|
|
6
6
|
justify-content: start;
|
|
7
7
|
align-items: start;
|
|
8
8
|
align-content: flex-start;
|
|
9
9
|
grid-template-columns: repeat(var(--col), minmax(0, 1fr));
|
|
10
10
|
--col: 4;
|
|
11
|
-
--gap: 0;
|
|
12
11
|
}
|
|
13
12
|
|
|
14
13
|
@mixin _grid($med: '') {
|
|
@@ -50,42 +49,15 @@
|
|
|
50
49
|
--col: 12;
|
|
51
50
|
}
|
|
52
51
|
|
|
53
|
-
//
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
63
|
-
[ui-grid~='#{$med}sm'] {
|
|
64
|
-
--gap: 0.5em;
|
|
65
|
-
}
|
|
66
|
-
[ui-grid~='#{$med}sl'] {
|
|
67
|
-
--gap: 0.75em;
|
|
68
|
-
}
|
|
69
|
-
[ui-grid~='#{$med}ms'] {
|
|
70
|
-
--gap: 1em;
|
|
71
|
-
}
|
|
72
|
-
[ui-grid~='#{$med}mm'] {
|
|
73
|
-
--gap: 1.5em;
|
|
74
|
-
}
|
|
75
|
-
[ui-grid~='#{$med}ml'] {
|
|
76
|
-
--gap: 2em;
|
|
77
|
-
}
|
|
78
|
-
[ui-grid~='#{$med}ls'] {
|
|
79
|
-
--gap: 2.5em;
|
|
80
|
-
}
|
|
81
|
-
[ui-grid~='#{$med}lm'] {
|
|
82
|
-
--gap: 3em;
|
|
83
|
-
}
|
|
84
|
-
[ui-grid~='#{$med}ll'] {
|
|
85
|
-
--gap: 4em;
|
|
86
|
-
}
|
|
87
|
-
[ui-grid~='#{$med}xl'] {
|
|
88
|
-
--gap: 5em;
|
|
52
|
+
// 与 Flex 共用九宫格位置;间距使用 gap-* class。
|
|
53
|
+
@each $x, $horizontal in (l: start, c: center, r: end) {
|
|
54
|
+
@each $y, $vertical in (t: start, m: center, b: end) {
|
|
55
|
+
[ui-grid~='#{$med}#{$x}#{$y}'] {
|
|
56
|
+
justify-items: $horizontal;
|
|
57
|
+
align-items: $vertical;
|
|
58
|
+
align-content: $vertical;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
89
61
|
}
|
|
90
62
|
|
|
91
63
|
// 容器撑满
|
package/core/trim.scss
CHANGED
|
@@ -219,6 +219,13 @@ $_radius-l: (
|
|
|
219
219
|
@mixin trim($media: "") {
|
|
220
220
|
$size: (no, xs, ss, sm, sl, ms, mm, ml, ls, lm, ll, xl);
|
|
221
221
|
|
|
222
|
+
// Flex / Grid 共用的原生间距,不依赖可继承的自定义变量。
|
|
223
|
+
@each $sz, $value in $_spacing-scale {
|
|
224
|
+
.#{$media}gap-#{$sz} {
|
|
225
|
+
gap: $value !important;
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
|
|
222
229
|
// 栅格负边距补偿:总项 < 轴向 < 单边
|
|
223
230
|
@each $sz, $value in $_spacing-scale {
|
|
224
231
|
@include _row-spacing(
|