agentcss 0.11.3 → 0.11.5
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/01-tokens/README.md +2 -2
- package/01-tokens/focus-ring.css +1 -1
- package/01-tokens/tokens.css +1 -1
- package/03-patterns/nav/README.md +1 -1
- package/03-patterns/pagination/pagination.css +2 -2
- package/03-patterns/reveal/README.md +3 -3
- package/04-recipes/analysis-report/demo.html +2 -2
- package/04-recipes/longform/README.md +1 -1
- package/04-recipes/longform/longform.html +6 -10
- package/04-recipes/report/demo.html +1 -1
- package/04-recipes/table/demo.html +1 -1
- package/04-recipes/table/table.css +1 -1
- package/04-recipes/tierA-tokens.css +1 -1
- package/09-assets/README.md +1 -1
- package/09-assets/bar/README.md +1 -3
- package/09-assets/bar/bar.css +2 -2
- package/09-assets/bar/bar.js +6 -6
- package/09-assets/bar/demo.html +2 -2
- package/09-assets/echarts-adapter/echarts-adapter.js +8 -8
- package/09-assets/model-viewer/model-viewer.css +2 -2
- package/09-assets/scientific-plot/scientific-plot.js +1 -1
- package/CHANGELOG.md +107 -48
- package/CONTRIBUTING.md +1 -1
- package/README.md +158 -369
- package/README.zh-CN.md +508 -0
- package/SUPPORT.md +2 -2
- package/ai/START-HERE.md +1 -1
- package/ai/components.json +2 -2
- package/ai/components.meta.json +1 -1
- package/ai/tokens.json +1 -1
- package/dist/09-assets/bar/bar.js +1 -1
- package/dist/09-assets/echarts-adapter/echarts-adapter.js +1 -1
- package/dist/09-assets/scientific-plot/scientific-plot.js +1 -1
- package/dist/COSTS.md +9 -9
- package/docs/INVARIANT.md +1 -1
- package/index.html +78 -62
- package/package.json +3 -3
- package/ERRORS.md +0 -1658
- package/docs/BACKLOG.md +0 -127
- package/docs/BENCHMARK.md +0 -252
- package/docs/GUIDANCE.md +0 -154
- package/docs/RELEASING.md +0 -311
- package/docs/RFC-THEME-SCOPE.md +0 -141
- package/docs/ROADMAP.md +0 -182
package/01-tokens/README.md
CHANGED
|
@@ -51,8 +51,8 @@
|
|
|
51
51
|
2. **容器自己不会涂底色**。`[data-theme]` 只切换令牌;要不要给这块区域加背景,
|
|
52
52
|
由你决定(通常 `background: var(--paper)`)。
|
|
53
53
|
3. **`color-scheme` 目前只由 `date-range` 局部设置**,根上没有。所以暗色下
|
|
54
|
-
原生滚动条/日期弹层不会跟着变 ——
|
|
55
|
-
|
|
54
|
+
原生滚动条/日期弹层不会跟着变 —— 这是已知未决项:改它会让既有 40 页视觉
|
|
55
|
+
基线全变,需要单独一轮。
|
|
56
56
|
|
|
57
57
|
组件的明暗差异**全部由令牌表达**,组件 CSS 里不许出现
|
|
58
58
|
`@media (prefers-color-scheme: dark)` —— 主题能从容器来之后,那种写法只反映系统偏好,
|
package/01-tokens/focus-ring.css
CHANGED
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
四、只在键盘时"上浮"(可选的增强)
|
|
82
82
|
----------------------------------------------------------------------------
|
|
83
83
|
聚焦时轻微提亮,帮助用户追踪焦点在长内容里的位置。
|
|
84
|
-
⚠️ 用 `transition` 且尊重 reduced-motion
|
|
84
|
+
⚠️ 用 `transition` 且尊重 reduced-motion。
|
|
85
85
|
========================================================================== */
|
|
86
86
|
@media (prefers-reduced-motion: no-preference) {
|
|
87
87
|
:where(a, button, [role="button"], [role="tab"]) {
|
package/01-tokens/tokens.css
CHANGED
|
@@ -614,7 +614,7 @@
|
|
|
614
614
|
/* 凹陷面不再更黑,改为比 paper 略浅(层级靠变亮) */
|
|
615
615
|
--raw-surface-sunken: #1A1D21;
|
|
616
616
|
|
|
617
|
-
/*
|
|
617
|
+
/* 🔴滚动条(暗色)
|
|
618
618
|
⚠️ 暗色下 thumb 要比浅色**更亮**(#4A515C)才看得见;
|
|
619
619
|
用浅色那档会变成"黑里有黑"。 */
|
|
620
620
|
--raw-scrollbar-thumb: #6E747E; /* 对 #14171a 3.82:1 · 对 #232830 3.15:1 ✅ */
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
font-variant-numeric: tabular-nums; /* 数字等宽,小数点才能对齐 */
|
|
68
68
|
color: var(--text-primary);
|
|
69
69
|
text-decoration: none;
|
|
70
|
-
/* 🔴
|
|
70
|
+
/* 🔴 普通态不能只是裸文字。真因(实测):
|
|
71
71
|
普通页 `background: transparent` + `border: transparent`
|
|
72
72
|
⇒ 整排只剩**裸文字**,没有"按钮"的实体感。
|
|
73
73
|
通行做法(USWDS / GitHub / Stripe 一致):
|
|
@@ -175,7 +175,7 @@
|
|
|
175
175
|
.pagination__status { margin-inline-start: 0; width: 100%; }
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
/* 🔴 尊重 reduced-motion
|
|
178
|
+
/* 🔴 尊重 reduced-motion */
|
|
179
179
|
@media (prefers-reduced-motion: reduce) {
|
|
180
180
|
.pagination__link { transition: none; }
|
|
181
181
|
}
|
|
@@ -66,12 +66,12 @@
|
|
|
66
66
|
|
|
67
67
|
## 为什么**没有**「动画进行中不打断」的守卫(实测结论)
|
|
68
68
|
|
|
69
|
-
|
|
69
|
+
有一种常见的加固做法:进场动画在跑的时候不要被打断,
|
|
70
70
|
用 `getAnimations().some(a => a.playState === 'running')` 判断,
|
|
71
71
|
说"快速滚动时这条决定了顺滑还是闪"。
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
**那条针对的是 JS 驱动的动画**(Web Animations API 重启动画会跳)。
|
|
74
|
+
CSS transition 被打断时是 **retarget**:从当前值继续插值,不重头再来。
|
|
75
75
|
|
|
76
76
|
`05-audit/motion-concurrency.js` 在真浏览器里量过,结论:
|
|
77
77
|
|
|
@@ -257,8 +257,8 @@
|
|
|
257
257
|
同一材料的「区间带」和「曲线」必须写**同一个名字**:
|
|
258
258
|
· 写了 ⇒ 它们共用一个色号,读者一看就知道这个带属于这条线
|
|
259
259
|
· 不写 ⇒ 每条记录各吃一个色号 ⇒ 带是红的、线是绿的,看着像两种材料
|
|
260
|
-
|
|
261
|
-
而"每条一个色"
|
|
260
|
+
("不写 ⇒ 六条同色"是其中一种错法,
|
|
261
|
+
而"每条一个色"是反方向的另一种错法 —— 两边都不能要。) */
|
|
262
262
|
series: [
|
|
263
263
|
{ type: 'band', data: band(BARE), name: '未包覆' },
|
|
264
264
|
{ type: 'band', data: band(AL2O), name: 'Al₂O₃ 包覆' },
|
|
@@ -87,7 +87,7 @@ if (!('IntersectionObserver' in window)) { return; } // 降级:不高亮,
|
|
|
87
87
|
| 品味规范能不能被执行 | ✅ 能 |
|
|
88
88
|
| token 层够不够 | ✅ 够,17KB 里样式只占很小一块 |
|
|
89
89
|
| 六道门禁在真实页面上会不会误报 | ✅ 没有 |
|
|
90
|
-
| 长文排版(行长/行高/层级)是否可复用 | ✅ 可,已进
|
|
90
|
+
| 长文排版(行长/行高/层级)是否可复用 | ✅ 可,已进 `01-tokens/` 层 |
|
|
91
91
|
|
|
92
92
|
**长文排版的可复用结论**:
|
|
93
93
|
行长 68ch、正文行高 1.7、标题窄栏 —— 这三条对中文长文是硬约束,不是风格偏好。
|
|
@@ -249,11 +249,9 @@ body {
|
|
|
249
249
|
color: var(--text-tertiary); font-style: normal; }
|
|
250
250
|
|
|
251
251
|
/* 代码块:全文唯一允许重框的元素
|
|
252
|
-
🔴
|
|
253
|
-
不允许再代码块写入时候的不规范,这个是有标准的规则的,
|
|
254
|
-
这种部分就不用自己去发挥」。
|
|
252
|
+
🔴 代码块里的排版必须照既有规范走,不要自己发明。
|
|
255
253
|
|
|
256
|
-
|
|
254
|
+
修正的三处(都不是规范写法):
|
|
257
255
|
① <pre> 里有 2 个无意义前导空格 ⇒ Python 缩进变成 6 空格(应为 4)
|
|
258
256
|
② 注释里用中文破折号「——」⇒ 注释不是正文,不用破折号
|
|
259
257
|
③ shell 块里**命令和输出混在一起**,`AGC 0x0000 GO` 是输出,
|
|
@@ -282,8 +280,8 @@ p code, li code, td code {
|
|
|
282
280
|
}
|
|
283
281
|
|
|
284
282
|
/* 表格:只有数据表格才用框
|
|
285
|
-
🔴
|
|
286
|
-
|
|
283
|
+
🔴 列宽必须由表格结构决定,不能随内容漂移 ——
|
|
284
|
+
否则表头与正文的起点忽左忽右。
|
|
287
285
|
|
|
288
286
|
两个根因:
|
|
289
287
|
① table-layout:auto ⇒ 列宽由**内容**决定,列边界必然随内容漂移
|
|
@@ -323,10 +321,8 @@ th {
|
|
|
323
321
|
.num { font-variant-numeric: tabular-nums; white-space: nowrap; }
|
|
324
322
|
|
|
325
323
|
/* 证据分级标记 —— 考古文章必须交代数字的来源等级
|
|
326
|
-
🔴
|
|
327
|
-
|
|
328
|
-
会对他感到迷惑」—— **方框是身份标识,不是装饰**。
|
|
329
|
-
去掉它,"证据等级 C"就变成了一个莫名其妙的角标。
|
|
324
|
+
🔴 方框不能去掉,**方框是身份标识,不是装饰**。
|
|
325
|
+
只留上标小字母时,"证据等级 C"会变成一个莫名其妙的角标。
|
|
330
326
|
|
|
331
327
|
所以正确解法是**两个都要**:
|
|
332
328
|
上标(上一轮要的:缩小 + 右上角 + 像平方符号)
|
|
@@ -104,7 +104,7 @@
|
|
|
104
104
|
signed-percent 同上,但正数加 + 、负数加 −(用于"同比/变化")
|
|
105
105
|
====================================================================== */
|
|
106
106
|
|
|
107
|
-
/* 🔴🔴 动态文本一律**先转义**再拼进 HTML
|
|
107
|
+
/* 🔴🔴 动态文本一律**先转义**再拼进 HTML
|
|
108
108
|
----------------------------------------------------------------------
|
|
109
109
|
这个页面是给人**照抄**的示例。用字符串拼表格本身没问题,
|
|
110
110
|
问题在于把**数据里的文本**(公司名、列标签、单位)直接塞进 innerHTML:
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
|
|
81
81
|
/* 🔴🔴 排序指示符:三态必须**同时**用形状 + 颜色表达(WCAG 1.4.1)
|
|
82
82
|
--------------------------------------------------------------------
|
|
83
|
-
|
|
83
|
+
实测到的缺陷:
|
|
84
84
|
demo 把 `aria-sort` 放在**外围 <th>** 上(这是符合 ARIA 规范的写法),
|
|
85
85
|
而这里的旧选择器要求它长在**按钮自己**身上 ⇒ 选择器永远匹配不上
|
|
86
86
|
⇒ 数据明明排好了,箭头一直是"↕"。
|
package/09-assets/README.md
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<!-- ==== ASSET-LIST-BEGIN ==== -->
|
|
9
9
|
| 目录 | 它解决什么 |
|
|
10
10
|
|---|---|
|
|
11
|
-
| `09-assets/bar/` |
|
|
11
|
+
| `09-assets/bar/` | 柱状图,含图表规范的裁剪铁律 |
|
|
12
12
|
| `09-assets/echarts-adapter/` | 把令牌喂给 ECharts,按需引入;本库不含 ECharts |
|
|
13
13
|
| `09-assets/model-viewer/` | 惰性加载的 3D 模型查看器 |
|
|
14
14
|
| `09-assets/scientific-plot/` | 二维科学绘图:坐标轴 / 误差棒 / 置信区间带 / 对数轴 |
|
package/09-assets/bar/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# bar · 柱状图
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**图表规范**的四条铁律全部落地。ES5、零依赖、纯 SVG。
|
|
4
4
|
|
|
5
5
|
## 🔴 四条铁律
|
|
6
6
|
|
|
@@ -60,8 +60,6 @@ const chart = Bar.draw({
|
|
|
60
60
|
|
|
61
61
|
## 🔴 堆叠 vs 分组:语义必须显式选择
|
|
62
62
|
|
|
63
|
-
(外部评审 VIZ-REPORT-01 · P0-1 的教训)
|
|
64
|
-
|
|
65
63
|
原实现的 `base` 数组在**每个系列开始时**被重置,且所有系列的柱用同一横坐标
|
|
66
64
|
与同一柱宽 ⇒ 多系列不是堆叠,是**后画的盖住先画的**。它自称堆叠,实际重叠。
|
|
67
65
|
|
package/09-assets/bar/bar.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/* ============================================================================
|
|
2
|
-
bar.css —
|
|
2
|
+
bar.css — 柱状图样式(图表规范)
|
|
3
3
|
============================================================================
|
|
4
4
|
⭐ 铁律一的关键就写在下面这两行,**不能删**:
|
|
5
5
|
|
|
@@ -118,7 +118,7 @@
|
|
|
118
118
|
font-variant-numeric: tabular-nums;
|
|
119
119
|
/* ⭐ 描边画在字**下面**(不糊住笔画)——
|
|
120
120
|
有了它,标注落在深色柱子上也看得清。
|
|
121
|
-
|
|
121
|
+
这是铁律二的三条硬性要求之一。 */
|
|
122
122
|
paint-order: stroke fill;
|
|
123
123
|
stroke: var(--surface, #fff);
|
|
124
124
|
stroke-width: 3px;
|
package/09-assets/bar/bar.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* bar.js —
|
|
2
|
+
* bar.js — 柱状图(图表规范 · 四条铁律全部落地)
|
|
3
3
|
* ============================================================================
|
|
4
4
|
* 设计依据:见 API.md「资产类组件」一节
|
|
5
5
|
* 铁律一 · 超量程必须被**容器裁剪** → CSS 侧 overflow:hidden(本文件不参与)
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* 铁律三 · **量程必须显式声明** → max 是必填参数,无默认值
|
|
8
8
|
* 铁律四 · **门禁要能证伪** → 05-audit/chart-check.js 已覆盖本组件
|
|
9
9
|
*
|
|
10
|
-
* ⭐
|
|
10
|
+
* ⭐ 为什么量程不自动适配(铁律三):
|
|
11
11
|
* 一个 400 的异常值 + 30 个 0.35 的常态值,若 Y 轴自适应到 400
|
|
12
12
|
* ⇒ 所有常态值被压成**一条贴底的直线**
|
|
13
13
|
* ⇒ 读者会得出「这些天完全没有变化」的**错误结论**。
|
|
@@ -77,7 +77,7 @@
|
|
|
77
77
|
* @param {boolean}[opt.legend] 是否画图例(默认:系列数 ≥ 2 且都有名字时自动出)
|
|
78
78
|
* @returns {Object} { el, clipped, mode, tops, legend, destroy() }
|
|
79
79
|
*
|
|
80
|
-
* 🔴🔴 **堆叠 vs
|
|
80
|
+
* 🔴🔴 **堆叠 vs 分组,语义必须显式选择**
|
|
81
81
|
* --------------------------------------------------------------------
|
|
82
82
|
* 修复前的实现声称"堆叠",实际把 `base` 数组**在每个系列开头清零**,
|
|
83
83
|
* ⇒ 两个系列都从同一基线起算、**同横坐标同柱宽** ⇒ 后画的系列
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
if (opt.max === undefined || opt.max === null) {
|
|
99
99
|
/* 🔴 铁律三:不替调用方决定量程。
|
|
100
100
|
宁可报错,也不要悄悄自适应(那会让 400 的异常值把常态值压成直线)。 */
|
|
101
|
-
throw new Error('bar.draw: max
|
|
101
|
+
throw new Error('bar.draw: max 是必填项(铁律三:量程不得自动适配)');
|
|
102
102
|
}
|
|
103
103
|
|
|
104
104
|
var series = opt.series || [];
|
|
@@ -244,7 +244,7 @@
|
|
|
244
244
|
var h2 = Math.min((v2 / max) * plotH, plotH);
|
|
245
245
|
var yy2 = padT + plotH - h2;
|
|
246
246
|
var lb = el('text', {
|
|
247
|
-
/* 🔴
|
|
247
|
+
/* 🔴 铁律二:标注画在柱顶**外侧**(yy - 5),
|
|
248
248
|
不画在柱子上;且顶外侧不够高时改画内侧底部(见下方 clamp)。
|
|
249
249
|
描边用 paint-order(在字下面),保证深色柱子上也看得清。 */
|
|
250
250
|
'class': 'bar__label bar__label--' + keys[k],
|
|
@@ -265,7 +265,7 @@
|
|
|
265
265
|
* 🔴 为什么默认就出(不再由调用方记得开):
|
|
266
266
|
* 两种颜色 + 没有图例 ⇒ 读者只能猜哪块是哪个系列;
|
|
267
267
|
* 在黑白打印 / 色觉障碍下这块就直接失读了。
|
|
268
|
-
*
|
|
268
|
+
* 这与「重要结论不允许只存在于颜色里」是同一条。
|
|
269
269
|
* ⇒ 要关就显式传 `legend: false`,别指望"忘了传也没事"。 */
|
|
270
270
|
var hasNames = series.every(function (se) { return !!se.name; });
|
|
271
271
|
var wantLegend = opt.legend === undefined ? (nS >= 2 && hasNames) : !!opt.legend;
|
package/09-assets/bar/demo.html
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
<h1>bar · 柱状图</h1>
|
|
26
26
|
|
|
27
27
|
<p class="note">
|
|
28
|
-
按 <strong
|
|
28
|
+
按 <strong>图表规范</strong>四条铁律实现。
|
|
29
29
|
<br>① 超量程被容器裁剪(<code>.bar</code> + <code>.bar__svg</code> 两道
|
|
30
30
|
<code>overflow:hidden</code>,缺一不可)
|
|
31
31
|
<br>② 标注只标关键点(<strong>永远 ≤ 4 个</strong>)且画在柱顶外侧
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
|
|
74
74
|
<h2>4 · 🔴 量程必填:不给 max 会直接报错</h2>
|
|
75
75
|
<p class="note">
|
|
76
|
-
|
|
76
|
+
铁律三:<b>量程不得自动适配</b>。
|
|
77
77
|
<br>一个 400 的异常值 + 30 个 0.35 的常态值,若 Y 轴自适应到 400
|
|
78
78
|
⇒ 所有常态值被压成<b>一条贴底的直线</b>
|
|
79
79
|
⇒ 读者会得出「这些天完全没有变化」的<b>错误结论</b>。
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
*
|
|
15
15
|
* ⇒ 本文件是**图表规范的机器可读版本**:
|
|
16
16
|
* - 主题:换主题时图表跟着变(不用手改 ECharts 配置)
|
|
17
|
-
* -
|
|
17
|
+
* - 规范:把图表规则**变成默认值**(不用每次重想)
|
|
18
18
|
*
|
|
19
19
|
* ============================================================================
|
|
20
20
|
* 为什么这个维护成本≈0
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
* </script>
|
|
39
39
|
*
|
|
40
40
|
* ⚠️ 精简档(某项目)**不要引 ECharts**(约 1MB gzip)——
|
|
41
|
-
* 那边继续用 09-assets/sparkline
|
|
41
|
+
* 那边继续用 `09-assets/sparkline`。
|
|
42
42
|
*/
|
|
43
43
|
(function () {
|
|
44
44
|
'use strict';
|
|
@@ -79,7 +79,7 @@
|
|
|
79
79
|
/**
|
|
80
80
|
* 取 n 个系列的颜色。
|
|
81
81
|
* 🔴 **不让调色板自己循环** —— 超过可用色数就返回 null,
|
|
82
|
-
*
|
|
82
|
+
* 调用方应当**改图表类型**(规则:系列 ≤ 5)。
|
|
83
83
|
*
|
|
84
84
|
* 为什么不循环:第 6 个颜色和第 1 个同色,用户分不清谁是谁。
|
|
85
85
|
* 「颜色不够用」是**该换图表**的信号,不是该加颜色的理由。
|
|
@@ -119,7 +119,7 @@
|
|
|
119
119
|
borderColor: p.border,
|
|
120
120
|
borderWidth: 1,
|
|
121
121
|
textStyle: { color: p.text, fontSize: 12 },
|
|
122
|
-
// 🔴 数字统一等宽 +
|
|
122
|
+
// 🔴 数字统一等宽 + 千分位(数字格式规则)
|
|
123
123
|
extraCssText: isDark
|
|
124
124
|
? 'box-shadow:0 2px 8px rgba(0,0,0,.5);'
|
|
125
125
|
: 'box-shadow:0 2px 8px rgba(0,0,0,.1);',
|
|
@@ -137,7 +137,7 @@
|
|
|
137
137
|
axisTick: { show: false },
|
|
138
138
|
axisLabel: { color: p.textSub, fontSize: 11 },
|
|
139
139
|
splitLine: { lineStyle: { color: p.border, type: 'dashed' } },
|
|
140
|
-
// 🔴 分类轴从 0
|
|
140
|
+
// 🔴 分类轴从 0 开始(柱状图的诚实性要求)
|
|
141
141
|
splitNumber: 4,
|
|
142
142
|
};
|
|
143
143
|
}
|
|
@@ -145,7 +145,7 @@
|
|
|
145
145
|
/* ---------- 4. 合规的默认配置 ---------- */
|
|
146
146
|
|
|
147
147
|
/**
|
|
148
|
-
*
|
|
148
|
+
* 一组**符合图表规范**的默认 option。
|
|
149
149
|
* 覆盖 ECharts 的默认值 —— 让你不写就合规。
|
|
150
150
|
*/
|
|
151
151
|
function defaults(option) {
|
|
@@ -191,11 +191,11 @@
|
|
|
191
191
|
if (y && y.min === undefined) y.min = 0;
|
|
192
192
|
}
|
|
193
193
|
|
|
194
|
-
// 🔴 超过 5 个系列 ⇒
|
|
194
|
+
// 🔴 超过 5 个系列 ⇒ 明确警告(系列 ≤ 5)
|
|
195
195
|
if (o.series.length > 5) {
|
|
196
196
|
if (typeof console !== 'undefined' && console.warn) {
|
|
197
197
|
console.warn('[frontend-lib] 系列数 ' + o.series.length +
|
|
198
|
-
' 超过 5 ——
|
|
198
|
+
' 超过 5 —— 请改图表类型或分屏。配色循环会让颜色撞车。');
|
|
199
199
|
}
|
|
200
200
|
}
|
|
201
201
|
|
|
@@ -118,12 +118,12 @@
|
|
|
118
118
|
font-variant-numeric: tabular-nums;
|
|
119
119
|
}
|
|
120
120
|
|
|
121
|
-
/* 🔴 尊重 reduced-motion
|
|
121
|
+
/* 🔴 尊重 reduced-motion:不用动画掩盖 */
|
|
122
122
|
@media (prefers-reduced-motion: reduce) {
|
|
123
123
|
.mv__btn { transition: none; }
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
/* 🔴 打印时不该出现 3D
|
|
126
|
+
/* 🔴 打印时不该出现 3D */
|
|
127
127
|
@media print {
|
|
128
128
|
.mv__btn, .mv__hint { display: none; }
|
|
129
129
|
}
|
|
@@ -326,7 +326,7 @@
|
|
|
326
326
|
var dparts = []; /* 数据层单独收集 ⇒ 统一挂裁剪。见下方 clipId */
|
|
327
327
|
var tally = { n: 0 }; /* 画不出来的点数(对数轴非正 / 非有限值) */
|
|
328
328
|
|
|
329
|
-
/* 🔴🔴
|
|
329
|
+
/* 🔴🔴 系列样式身份
|
|
330
330
|
------------------------------------------------------------------
|
|
331
331
|
修复前每个系列都拿 `'splot__s' + (colorIdx % 5)`,而 `colorIdx` 从头到尾
|
|
332
332
|
是 0 ⇒ 六条 series 全是 s0,同色同线型,读者分不出哪条是哪条材料。
|