@xihan-ui/styles 3.0.0 → 3.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/CHANGELOG.md +63 -0
- package/README.md +1 -1
- package/component-tokens.d.ts +29 -0
- package/components.tokens.json +683 -27
- package/css/alert.css +2 -2
- package/css/approval.css +4 -4
- package/css/button.css +9 -5
- package/css/calendar-picker.css +3 -3
- package/css/calendar-range-picker.css +7 -7
- package/css/carousel.css +45 -13
- package/css/cartesian-chart.css +11 -11
- package/css/cascader.css +10 -10
- package/css/citation.css +2 -2
- package/css/code-view.css +6 -6
- package/css/color-picker.css +81 -0
- package/css/color-swatch-picker.css +9 -4
- package/css/combobox.css +12 -4
- package/css/command.css +1 -1
- package/css/date-field.css +39 -0
- package/css/date-picker.css +86 -9
- package/css/date-range-picker.css +47 -7
- package/css/diff-view.css +8 -8
- package/css/field-array.css +1 -1
- package/css/field.css +4 -0
- package/css/file-upload.css +1 -1
- package/css/float-button.css +140 -27
- package/css/form.css +14 -6
- package/css/graph-chart.css +2 -2
- package/css/highlight.css +1 -1
- package/css/image.css +1 -1
- package/css/mention.css +1 -1
- package/css/message-feed.css +1 -1
- package/css/notification.css +26 -20
- package/css/number-field.css +18 -18
- package/css/page-header.css +2 -2
- package/css/password-input.css +2 -2
- package/css/popconfirm.css +3 -3
- package/css/question-flow.css +8 -8
- package/css/radar-chart.css +6 -6
- package/css/rating.css +1 -1
- package/css/select.css +2 -2
- package/css/separator.css +2 -2
- package/css/side-nav.css +13 -13
- package/css/skeleton.css +5 -5
- package/css/slider.css +6 -6
- package/css/sortable.css +2 -2
- package/css/table.css +19 -2
- package/css/tags-input.css +1 -1
- package/css/time-picker.css +59 -2
- package/css/tool-call.css +7 -7
- package/css/tooltip.css +1 -1
- package/css/tree-select.css +2 -2
- package/css/tree.css +81 -11
- package/dist/css/accordion.css +269 -0
- package/dist/css/affix.css +47 -0
- package/dist/css/alert.css +247 -0
- package/dist/css/anchor.css +252 -0
- package/dist/css/approval.css +501 -0
- package/dist/css/avatar-group.css +99 -0
- package/dist/css/avatar.css +98 -0
- package/dist/css/back-top.css +161 -0
- package/dist/css/badge.css +205 -0
- package/dist/css/bar-code.css +62 -0
- package/dist/css/breadcrumb.css +230 -0
- package/dist/css/button-group.css +263 -0
- package/dist/css/button.css +219 -0
- package/dist/css/calendar-picker.css +467 -0
- package/dist/css/calendar-range-picker.css +554 -0
- package/dist/css/card.css +221 -0
- package/dist/css/carousel.css +710 -0
- package/dist/css/cartesian-chart.css +830 -0
- package/dist/css/cascader.css +961 -0
- package/dist/css/checkbox-group.css +358 -0
- package/dist/css/checkbox.css +257 -0
- package/dist/css/citation.css +470 -0
- package/dist/css/clipboard.css +315 -0
- package/dist/css/code-view.css +374 -0
- package/dist/css/collapsible.css +185 -0
- package/dist/css/color-field.css +176 -0
- package/dist/css/color-picker.css +595 -0
- package/dist/css/color-slider.css +281 -0
- package/dist/css/color-swatch-picker.css +250 -0
- package/dist/css/color-swatch.css +35 -0
- package/dist/css/combobox.css +574 -0
- package/dist/css/command.css +399 -0
- package/dist/css/context-menu.css +420 -0
- package/dist/css/date-field.css +317 -0
- package/dist/css/date-picker.css +868 -0
- package/dist/css/date-range-picker.css +886 -0
- package/dist/css/description.css +67 -0
- package/dist/css/descriptions.css +299 -0
- package/dist/css/dialog.css +455 -0
- package/dist/css/diff-view.css +513 -0
- package/dist/css/download-trigger.css +151 -0
- package/dist/css/drawer.css +552 -0
- package/dist/css/editable.css +295 -0
- package/dist/css/empty-state.css +163 -0
- package/dist/css/field-array.css +226 -0
- package/dist/css/field.css +166 -0
- package/dist/css/fieldset.css +102 -0
- package/dist/css/file-upload.css +429 -0
- package/dist/css/flex.css +441 -0
- package/dist/css/float-button.css +569 -0
- package/dist/css/floating-panel.css +429 -0
- package/dist/css/focus.css +46 -0
- package/dist/css/forced-colors.css +93 -0
- package/dist/css/form.css +393 -0
- package/dist/css/funnel-chart.css +106 -0
- package/dist/css/graph-chart.css +205 -0
- package/dist/css/grid-list.css +235 -0
- package/dist/css/grid.css +1201 -0
- package/dist/css/heatmap.css +552 -0
- package/dist/css/hierarchy-chart.css +298 -0
- package/dist/css/highlight.css +41 -0
- package/dist/css/hover-card.css +226 -0
- package/dist/css/icon.css +225 -0
- package/dist/css/image-cropper.css +373 -0
- package/dist/css/image-viewer.css +538 -0
- package/dist/css/image.css +98 -0
- package/dist/css/infinite-scroll.css +77 -0
- package/dist/css/input-group.css +275 -0
- package/dist/css/json-viewer.css +379 -0
- package/dist/css/kbd.css +72 -0
- package/dist/css/label.css +78 -0
- package/dist/css/layers.css +7 -0
- package/dist/css/layout.css +372 -0
- package/dist/css/liquid.css +106 -0
- package/dist/css/list.css +152 -0
- package/dist/css/listbox.css +390 -0
- package/dist/css/loading-bar.css +141 -0
- package/dist/css/log.css +306 -0
- package/dist/css/markdown-stream.css +149 -0
- package/dist/css/marquee.css +378 -0
- package/dist/css/masonry.css +70 -0
- package/dist/css/matrix-code.css +67 -0
- package/dist/css/mention.css +393 -0
- package/dist/css/menu.css +364 -0
- package/dist/css/menubar.css +456 -0
- package/dist/css/message-feed.css +318 -0
- package/dist/css/navigation-menu.css +513 -0
- package/dist/css/notification.css +782 -0
- package/dist/css/number-animation.css +44 -0
- package/dist/css/number-field.css +252 -0
- package/dist/css/overlay-arrow.css +56 -0
- package/dist/css/page-header.css +184 -0
- package/dist/css/pagination.css +450 -0
- package/dist/css/password-input.css +391 -0
- package/dist/css/pie-chart.css +247 -0
- package/dist/css/pin-input.css +199 -0
- package/dist/css/pointer.css +36 -0
- package/dist/css/popconfirm.css +320 -0
- package/dist/css/popover.css +279 -0
- package/dist/css/progress.css +501 -0
- package/dist/css/prompt-input.css +260 -0
- package/dist/css/question-flow.css +553 -0
- package/dist/css/radar-chart.css +233 -0
- package/dist/css/radio-group.css +598 -0
- package/dist/css/rating.css +294 -0
- package/dist/css/reasoning.css +343 -0
- package/dist/css/reset.css +117 -0
- package/dist/css/resizable.css +242 -0
- package/dist/css/sankey-chart.css +174 -0
- package/dist/css/scroll-area.css +240 -0
- package/dist/css/scrollbar.css +204 -0
- package/dist/css/select.css +612 -0
- package/dist/css/separator.css +122 -0
- package/dist/css/side-nav.css +476 -0
- package/dist/css/signature-pad.css +179 -0
- package/dist/css/skeleton.css +161 -0
- package/dist/css/slider.css +374 -0
- package/dist/css/sortable.css +228 -0
- package/dist/css/sparkline.css +164 -0
- package/dist/css/spinner.css +236 -0
- package/dist/css/splitter.css +159 -0
- package/dist/css/statistic.css +137 -0
- package/dist/css/steps.css +627 -0
- package/dist/css/switch.css +351 -0
- package/dist/css/table.css +1145 -0
- package/dist/css/tabs.css +944 -0
- package/dist/css/tag-group.css +247 -0
- package/dist/css/tag.css +310 -0
- package/dist/css/tags-input.css +322 -0
- package/dist/css/text-field.css +197 -0
- package/dist/css/time-field.css +277 -0
- package/dist/css/time-picker.css +707 -0
- package/dist/css/time-range-picker.css +746 -0
- package/dist/css/timeline.css +423 -0
- package/dist/css/timer.css +123 -0
- package/dist/css/timestamp.css +34 -0
- package/dist/css/toggle-group.css +424 -0
- package/dist/css/toggle.css +146 -0
- package/dist/css/tone.css +189 -0
- package/dist/css/tool-call.css +429 -0
- package/dist/css/toolbar.css +365 -0
- package/dist/css/tooltip.css +218 -0
- package/dist/css/tour.css +439 -0
- package/dist/css/transfer.css +638 -0
- package/dist/css/tree-select.css +878 -0
- package/dist/css/tree.css +733 -0
- package/dist/css/truncate.css +108 -0
- package/dist/css/typography.css +472 -0
- package/dist/css/undefined.css +58 -0
- package/dist/css/virtualizer.css +166 -0
- package/dist/css/visually-hidden.css +20 -0
- package/dist/css/watermark.css +82 -0
- package/dist/family/action-control.css +487 -0
- package/dist/family/chart.css +480 -0
- package/dist/family/check-mark.css +94 -0
- package/dist/family/choice-card.css +97 -0
- package/dist/family/collection-item.css +764 -0
- package/dist/family/field-chrome.css +287 -0
- package/dist/family/loading-ring.css +95 -0
- package/dist/family/material.css +72 -0
- package/dist/family/menu-choice.css +56 -0
- package/dist/family/motion.css +363 -0
- package/dist/family/swatch.css +59 -0
- package/dist/family/tag-list.css +59 -0
- package/family/action-control.css +3 -12
- package/index.css +7307 -6759
- package/index.unlayered.css +7309 -6761
- package/package.json +165 -164
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2021-Present XiHanFun and contributors.
|
|
3
|
+
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/* 定义 virtualizer 样式。 */
|
|
7
|
+
|
|
8
|
+
@layer xihan.components {
|
|
9
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
10
|
+
.xh-scope-virtualizer {
|
|
11
|
+
--xh-virtualizer-skin: 1;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/* 定位分工:条目在**主轴**上的位移、以及 content 在主轴上的总长,
|
|
15
|
+
由连接层每帧写进内联样式(竖向是 inset-block-start / block-size,横向是
|
|
16
|
+
inset-inline-start / inline-size)。这份皮肤一个都不碰:内联优先级高于样式表,
|
|
17
|
+
写了不但是死声明,换向的那一帧还会跟连接层清空另一轴的动作抢位置。
|
|
18
|
+
皮肤只管另一条轴(交叉轴)、滚动能力与焦点表现。
|
|
19
|
+
|
|
20
|
+
刻意不写任何过渡与动画:条目的位移每帧都在变,一加过渡整列就永远追在滚动后面;
|
|
21
|
+
条目的进出走的是 [hidden](display:none),也没有退场动画可言。
|
|
22
|
+
|
|
23
|
+
主轴尺寸这里同样不给:给了就把动态测量钉死在这个值上——量到的永远等于钉上去的,
|
|
24
|
+
measureElement 再也收敛不了。等高列表由作者按 api 给出的 size 自己写。 */
|
|
25
|
+
|
|
26
|
+
.xh-scope-virtualizer[data-part='root'] {
|
|
27
|
+
display: block;
|
|
28
|
+
/* 作者给 root 定了尺寸后,长列表不该漫出这个框;
|
|
29
|
+
自建定位上下文,作者往里挂的 scrollbar 贴的是这个框 */
|
|
30
|
+
position: relative;
|
|
31
|
+
overflow: hidden;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/* 真正滚动的那层。滚动能力一点不减——键盘(PageUp/PageDown、方向键、Home/End)
|
|
35
|
+
与滚轮走的都还是浏览器原生通路,组件只是跟着滚动量换一批该渲的下标。 */
|
|
36
|
+
.xh-scope-virtualizer[data-part='viewport'] {
|
|
37
|
+
display: block;
|
|
38
|
+
inline-size: 100%;
|
|
39
|
+
block-size: 100%;
|
|
40
|
+
/* 逻辑等价物 overflow-inline / overflow-block 至今只有个别引擎实现,
|
|
41
|
+
这两条是本文件里仅有的物理属性,换成逻辑写法会在多数浏览器上直接失效 */
|
|
42
|
+
overflow-x: auto;
|
|
43
|
+
overflow-y: auto;
|
|
44
|
+
/* 页内结构容器,滚到尽头把剩余的滚动交给外层(overscroll-behavior 保持 auto):
|
|
45
|
+
contain 只给浮层、模态 body 与粘底视口。滚动条走 reset 层的原生细条 */
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/* 单向列表把另一条轴关掉:那一向既没有内容也没有位移,能滚就成了滚不回来的暗格 */
|
|
49
|
+
.xh-scope-virtualizer[data-part='viewport'][data-orientation='vertical'] {
|
|
50
|
+
overflow-x: hidden;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.xh-scope-virtualizer[data-part='viewport'][data-orientation='horizontal'] {
|
|
54
|
+
overflow-y: hidden;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/* 随整页滚动:这层不再是滚动容器,高度随内容撑开,两向都不裁 */
|
|
58
|
+
.xh-scope-virtualizer[data-part='viewport'][data-scroll-container='window'] {
|
|
59
|
+
block-size: auto;
|
|
60
|
+
overflow-x: visible;
|
|
61
|
+
overflow-y: visible;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/* 贴底:不足一屏时把内容推到尽头那一侧,最新的一条贴着底;超过一屏时自动外距归零,照常滚动 */
|
|
65
|
+
.xh-scope-virtualizer[data-part='viewport'][data-anchor='end'] {
|
|
66
|
+
display: flex;
|
|
67
|
+
flex-direction: column;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.xh-scope-virtualizer[data-part='viewport'][data-anchor='end'][data-orientation='horizontal'] {
|
|
71
|
+
flex-direction: row;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
.xh-scope-virtualizer[data-part='viewport'][data-anchor='end'] > .xh-scope-virtualizer[data-part='content'] {
|
|
75
|
+
flex-shrink: 0;
|
|
76
|
+
margin-block-start: auto;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.xh-scope-virtualizer[data-part='viewport'][data-anchor='end'][data-orientation='horizontal'] > .xh-scope-virtualizer[data-part='content'] {
|
|
80
|
+
margin-block-start: 0;
|
|
81
|
+
margin-inline-start: auto;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* 撑出总长的那层,同时是条目的定位上下文——条目是绝对定位的,
|
|
85
|
+
没有它就会以最近的定位祖先(多半是页面某处)为参照,整列飘走。 */
|
|
86
|
+
.xh-scope-virtualizer[data-part='content'] {
|
|
87
|
+
position: relative;
|
|
88
|
+
display: block;
|
|
89
|
+
inline-size: 100%;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
/* 主轴长度来自内联样式,交叉轴铺满视口 */
|
|
93
|
+
.xh-scope-virtualizer[data-part='content'][data-orientation='horizontal'] {
|
|
94
|
+
inline-size: auto;
|
|
95
|
+
block-size: 100%;
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* 条目。主轴位移来自内联样式,这里只给定位模式与单列时的交叉轴。
|
|
99
|
+
多列(lanes > 1)时交叉轴改由连接层写进内联样式,会盖过下面这两条。 */
|
|
100
|
+
.xh-scope-virtualizer[data-part='item'] {
|
|
101
|
+
position: absolute;
|
|
102
|
+
display: block;
|
|
103
|
+
box-sizing: border-box;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.xh-scope-virtualizer[data-part='item'][data-orientation='vertical'] {
|
|
107
|
+
inset-inline-start: 0;
|
|
108
|
+
inline-size: 100%;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
.xh-scope-virtualizer[data-part='item'][data-orientation='horizontal'] {
|
|
112
|
+
inset-block-start: 0;
|
|
113
|
+
block-size: 100%;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/* 钉住的分组标题:留在文档流里按 sticky 钉在视口起点(连接层不给它写主轴位移),
|
|
117
|
+
压在滚过去的条目上面,所以要一块实底 */
|
|
118
|
+
.xh-scope-virtualizer[data-part='item'][data-fixed] {
|
|
119
|
+
position: sticky;
|
|
120
|
+
z-index: var(--xh-virtualizer-sticky-layer, var(--xh-layer-sticky));
|
|
121
|
+
background: var(--xh-virtualizer-sticky-bg, var(--xh-bg-surface));
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.xh-scope-virtualizer[data-part='item'][data-fixed][data-orientation='vertical'] {
|
|
125
|
+
inset-block-start: 0;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
/* 横向时留在文档流里的块会铺满整条内容层,收成自身宽度 */
|
|
129
|
+
.xh-scope-virtualizer[data-part='item'][data-fixed][data-orientation='horizontal'] {
|
|
130
|
+
inset-inline-start: 0;
|
|
131
|
+
inline-size: fit-content;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/* 除视口外全是纯容器:既不进 Tab 序列也不承载焦点,作者若给它们加了 tabindex,
|
|
135
|
+
该显形的也该是视口那圈环,不是这里再多画一圈。
|
|
136
|
+
条目内部的可聚焦内容(按钮、链接)有它们自己的焦点环,不受这条影响。 */
|
|
137
|
+
.xh-scope-virtualizer[data-part='root']:focus-visible,
|
|
138
|
+
.xh-scope-virtualizer[data-part='content']:focus-visible,
|
|
139
|
+
.xh-scope-virtualizer[data-part='item']:focus-visible {
|
|
140
|
+
outline: none;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/* root 上还有一个 data-scrolling 标记(手正在滚时在场)。这份皮肤刻意不用它:
|
|
144
|
+
滚动期间关掉 pointer-events 之类的常见招数会让"滚一下就点"落空,
|
|
145
|
+
留给作者按自己的取舍去接。 */
|
|
146
|
+
|
|
147
|
+
/* 高对比档里实底换成系统底色、与滚过去的条目同色:钉住的标题补一条系统描边,与下面的内容分开 */
|
|
148
|
+
@media (forced-colors: active) {
|
|
149
|
+
.xh-scope-virtualizer[data-part='item'][data-fixed][data-orientation='vertical'] {
|
|
150
|
+
border-block-end: var(--xh-stroke-thin) solid CanvasText;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
.xh-scope-virtualizer[data-part='item'][data-fixed][data-orientation='horizontal'] {
|
|
154
|
+
border-inline-end: var(--xh-stroke-thin) solid CanvasText;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/* display 会盖掉 UA 的 [hidden]{display:none},凡是被赋了 display 的角色节点都要显式让位。
|
|
159
|
+
连接层只在条目上写 hidden(不在窗口里的那些),其余三个是防作者自己写 hidden */
|
|
160
|
+
.xh-scope-virtualizer[data-part='root'][hidden],
|
|
161
|
+
.xh-scope-virtualizer[data-part='viewport'][hidden],
|
|
162
|
+
.xh-scope-virtualizer[data-part='content'][hidden],
|
|
163
|
+
.xh-scope-virtualizer[data-part='item'][hidden] {
|
|
164
|
+
display: none;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2021-Present XiHanFun and contributors.
|
|
3
|
+
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/* 定义 visually hidden 样式。 */
|
|
7
|
+
|
|
8
|
+
@layer xihan.components {
|
|
9
|
+
.xh-visually-hidden {
|
|
10
|
+
position: absolute;
|
|
11
|
+
inline-size: 1px;
|
|
12
|
+
block-size: 1px;
|
|
13
|
+
padding: 0;
|
|
14
|
+
margin: -1px;
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
clip-path: inset(50%);
|
|
17
|
+
white-space: nowrap;
|
|
18
|
+
border: 0;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Copyright (c) 2021-Present XiHanFun and contributors.
|
|
3
|
+
* Licensed under the MIT License. See LICENSE in the project root for license information.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
/* 定义 watermark 样式。 */
|
|
7
|
+
|
|
8
|
+
@layer xihan.components {
|
|
9
|
+
/* 皮肤在场的标记:开发模式下按 scope 探一次,取不到就说明这份皮肤没被引入。 */
|
|
10
|
+
.xh-scope-watermark {
|
|
11
|
+
--xh-watermark-skin: 1;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
/*
|
|
15
|
+
* 盖水印的那块地。层叠上下文就地隔离,印子只压在这块地里,不会盖到组件外面去。
|
|
16
|
+
*/
|
|
17
|
+
.xh-scope-watermark[data-part='root'] {
|
|
18
|
+
position: relative;
|
|
19
|
+
isolation: isolate;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
/* 被盖住的内容排在印子下面;这层不自建层叠上下文,里面展开的浮层按自己的层号压过印子 */
|
|
23
|
+
.xh-scope-watermark[data-part='content'] {
|
|
24
|
+
position: relative;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/*
|
|
28
|
+
* 印子。图样由连接层算成一张 SVG,这里当遮罩用而不是当背景图铺:
|
|
29
|
+
* 遮罩只取图样的透明度,颜色从下面这个槽来,深浅主题各自跟着走;
|
|
30
|
+
* 当背景图铺就得把颜色写死在 SVG 里,换主题时那张图不会跟着变。
|
|
31
|
+
* 两条前缀都写:一部分 WebKit 只认带前缀那条。
|
|
32
|
+
*
|
|
33
|
+
* 没有可印的文字时 root 落 data-state="empty",整层不画。
|
|
34
|
+
*/
|
|
35
|
+
.xh-scope-watermark[data-part='root'][data-state='ready']::after {
|
|
36
|
+
content: '';
|
|
37
|
+
|
|
38
|
+
position: absolute;
|
|
39
|
+
z-index: 1;
|
|
40
|
+
inset: 0;
|
|
41
|
+
|
|
42
|
+
/* 它只是一层印子:不吃点击,底下的内容照常点、照常选 */
|
|
43
|
+
pointer-events: none;
|
|
44
|
+
background-color: var(--xh-watermark-fg, var(--xh-fg-muted));
|
|
45
|
+
-webkit-mask-image: var(--xh-watermark-image, none);
|
|
46
|
+
mask-image: var(--xh-watermark-image, none);
|
|
47
|
+
-webkit-mask-repeat: repeat;
|
|
48
|
+
mask-repeat: repeat;
|
|
49
|
+
-webkit-mask-size: var(--xh-watermark-tile, auto);
|
|
50
|
+
mask-size: var(--xh-watermark-tile, auto);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* 全屏档:印子固定铺满整个视口,压在页面一切内容之上(对话框、轻提示、文字提示都在它下面),页面滚动时原地不动。
|
|
54
|
+
根不再建层叠上下文:隔离了的话,印子的层号只在根里比大小,会被根外那些浮层压住 */
|
|
55
|
+
.xh-scope-watermark[data-part='root'][data-fullscreen] {
|
|
56
|
+
isolation: auto;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
.xh-scope-watermark[data-part='root'][data-state='ready'][data-fullscreen]::after {
|
|
60
|
+
position: fixed;
|
|
61
|
+
z-index: var(--xh-watermark-layer, var(--xh-layer-tooltip));
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/*
|
|
65
|
+
* 高对比档:印子的颜色是遮罩底下那块底色,这一档里被系统换成 Canvas,与页面同色,整层印子消失。
|
|
66
|
+
* 印子是防泄露的标记,不能因为读者开了高对比就不印:退出强制换色、取 GrayText——系统给「弱化内容」
|
|
67
|
+
* 留的那个角色,深浅仍由图样自带的透明度压着,不与正文抢对比
|
|
68
|
+
*/
|
|
69
|
+
@media (forced-colors: active) {
|
|
70
|
+
.xh-scope-watermark[data-part='root'][data-state='ready']::after {
|
|
71
|
+
forced-color-adjust: none;
|
|
72
|
+
background-color: GrayText;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/* 遮罩不支持时整层不画:只剩底色的话,盖上去的会是一整块实心色 */
|
|
77
|
+
@supports not ((mask-image: none) or (-webkit-mask-image: none)) {
|
|
78
|
+
.xh-scope-watermark[data-part='root'][data-state='ready']::after {
|
|
79
|
+
display: none;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|