该软件包提供的实用程序可帮助开发人员自动管理组件 CSS 变量。 与 Telegram SDK 类似,@telegram-apps/sdk 允许开发人员设置全局 CSS 变量,将 连接到特定组件。bindViewportCSSVars bindViewportCSSVars 函数接受一个 Viewport 实例,并为以下属性创建 变量:height、width 和 stableHeight。 - import { bindViewportCSSVars, initViewport } from '@telegram-apps/sdk';
0 `1 |/ D& O% N) T4 `6 j
7 p9 D. F w4 _- const vp = await initViewport();
1 e) d& \6 a1 C- ?/ |1 Z" L& C6 i2 b
7 G6 _: d3 E0 L8 D6 V- bindViewportCSSVars(vp);
复制代码 默认情况下,该函数会创建名为 的全局 CSS 变量:-tg-viewport-height、-tg-viewport-width 和 -tg-viewport-stable-height。 不过, 函数允许传递一个 CSS 变量名生成器,该生成器接受其中一个字符串值,每个 负责一个特定属性:width、height 或 stableHeight。- bindViewportCSSVars(vp, key => {
2 n: S7 x* _* E: _ - switch (key) {
; i N2 v0 A8 e - case 'height':
~, r/ V- A$ g' ~& U! _8 x - return `--viewportHeight`;
3 X. z6 f: c3 d9 x - case 'width':
. ^4 R, E9 H; K* o! F0 s$ v - return `--viewportWidth`;/ A8 f' g! K# z: P! z2 }
- case 'stable-height':4 U2 ^+ B6 K9 w
- return `--viewportStableHeight`;% J; V4 \, X V0 B) v
- default:4 r5 n+ r Q7 u& p/ j7 l
- return `--void`;
! f* }0 r4 B8 k - }9 C$ i& B& B$ @+ ^& [* b
- });
复制代码 bindThemeParamsCSSVars该函数接受 ThemeParams 实例,并创建与主题参数相关的全局 CSS 变量。 - import { bindThemeParamsCSSVars, initThemeParams } from '@telegram-apps/sdk';8 P) Q4 `; ^3 n/ t( C
5 i- G6 [, w: @# A" ?& w- const tp = initThemeParams();2 F/ A% N! N, U: p; e D
; _9 I- P) H& P, A- bindThemeParamsCSSVars(tp);
复制代码默认情况下,该函数会将 ThemeParams 实例属性的驼峰字母大小写转换为短横线命名法大小写,并在 中添加前缀 --tg-theme-。 下面是创建变量的示例: - --tg-theme-bg-color
- --tg-theme-secondary-bg-color
- --tg-theme-accent-text-color
- 等等
4 `0 d+ `4 y; K
与 bindViewportCSSVars 函数类似,它允许传递一个接受 ThemeParams 实例属性的 CSS 变量名生成器。 - bindThemeParamsCSSVars(tp, key => {8 C$ _/ ?/ ]+ ^0 z3 \
- // Converts camel case to kebab case.
3 F' X7 C: N1 f5 u - return `--${key.replace(/[A-Z]/g, m => `-${m.toLowerCase()}`)}`;9 }( ?) _) L$ T9 P3 ^0 U$ ?
- });
复制代码 bindMiniAppCSSVarsbindMiniAppCSSVars 函数接受一个 MiniApp 实例和 以及一个 ThemeParams 实例,创建与 MiniApp 实例相关的全局 CSS 变量。 - import { bindMiniAppCSSVars, initMiniApp, initThemeParams } from '@telegram-apps/sdk';( j- {! m& T' h7 H' a- M
- 8 @8 N2 Y2 a, S+ N8 x+ y7 K$ o
- const ma = initMiniApp();- O# l& M( A: R# R
- const tp = initThemeParams();& x m/ B- D3 f6 Y: y! v6 v
- ) C& v7 Q. H2 J& K4 L5 O. w
- bindMiniAppCSSVars(ma, tp);
复制代码 默认情况下,它会创建 --tg-bg-color 和 --tg-header-color 等变量。 不过,与所有 其他 CSS 变量绑定函数一样,它允许自定义生成的名称。 传递的生成器 接受其中一个关键字:bg 和 header,希望它能返回一个完整的 CSS 变量名。- bindMiniAppCSSVars(ma, tp, key => {
- o) Y3 D/ ^9 z6 c - switch (key) {
# u3 H1 _0 w6 w6 ?, b - case 'bg':
: G0 L) v: I5 H+ P0 y/ } - return `--miniAppBg`;+ A' W( P- O5 E! o8 r
- case 'header':6 c% S7 c' C1 A0 }$ A
- return `--miniAppHeader`; D. W% H; v/ D$ E9 u
- default:2 r' U* s2 C6 I$ R2 n4 u- N4 R
- return `--void`;0 X: p; K- E* i( }' q x& M
- }
) S& t8 @2 d+ n# m2 n - });
复制代码 . K- I7 r- W0 \ Q% K( d0 Q) _+ B/ E
# w M! D9 g: I0 S3 i$ Q |