iter(g269): 新增文本差异对比组件

This commit is contained in:
HIsheR
2026-10-26 22:53:49 +08:00
parent dccf79bb01
commit 368d47cbca
12 changed files with 304 additions and 11 deletions
+75 -1
View File
@@ -4994,7 +4994,8 @@ h5.ua-type-title { font-size: var(--ua-font-size-md); }
.ua-cmdk-list,
.ua-timepicker-col,
.ua-layout-content,
.ua-json {
.ua-json,
.ua-diff {
scrollbar-width: thin; /* 标准属性:Firefox / Chromium 121+ 生效,细条不挤内容 */
scrollbar-color: var(--ua-color-scrollbar) transparent; /* 拇指走令牌、轨道透明,避免画出方块底 */
}
@@ -5555,3 +5556,76 @@ h5.ua-type-title { font-size: var(--ua-font-size-md); }
color: GrayText;
}
}
/* ---- 文本差异对比:增删只靠底色 + 符号双通道,色盲用户也能分辨(符号列 aria-hidden,读屏靠底色语义类) ---- */
.ua-diff {
overflow: auto;
border: 1px solid var(--ua-border-subtle);
border-radius: var(--ua-radius-md);
background: var(--ua-color-surface);
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; /* 等宽:差异对齐才看得出来 */
font-size: var(--ua-font-size-sm);
line-height: var(--ua-leading-normal);
}
.ua-diff-stats {
display: flex;
gap: var(--ua-space-3);
padding: var(--ua-space-2) var(--ua-space-3);
border-bottom: 1px solid var(--ua-border-subtle);
background: var(--ua-color-surface-inset);
font-size: var(--ua-font-size-xs);
}
/* 统计条两个数字与行底色同源:+ 走成功色、− 走危险色,不另造一套色 */
.ua-diff-add {
color: var(--ua-color-success);
}
.ua-diff-del {
color: var(--ua-color-danger);
}
.ua-diff-row {
display: flex;
align-items: baseline;
gap: var(--ua-space-2);
padding: 0 var(--ua-space-3);
white-space: pre; /* 缩进与空格是差异的一部分,不能被折行压平 */
}
.ua-diff-no {
flex: 0 0 auto;
min-width: var(--ua-space-6);
color: var(--ua-color-text-faint);
font-size: var(--ua-font-size-xs);
text-align: right;
user-select: none; /* 行号不进复制内容:复制差异时只带走代码 */
}
.ua-diff-sign {
flex: 0 0 auto;
width: var(--ua-space-3);
color: var(--ua-color-text-faint);
text-align: center;
}
.ua-diff-text {
flex: 1 1 auto;
}
.ua-diff-row.is-add {
background: color-mix(in srgb, var(--ua-color-success) var(--ua-alpha-tint), transparent);
}
.ua-diff-row.is-add .ua-diff-sign {
color: var(--ua-color-success);
}
.ua-diff-row.is-del {
background: color-mix(in srgb, var(--ua-color-danger) var(--ua-alpha-tint), transparent);
}
.ua-diff-row.is-del .ua-diff-sign {
color: var(--ua-color-danger);
}