该软件包提供的实用程序可帮助开发人员自动管理组件 CSS 变量。 与 Telegram SDK 类似,@telegram-apps/sdk 允许开发人员设置全局 CSS 变量,将 连接到特定组件。bindViewportCSSVars bindViewportCSSVars 函数接受一个 Viewport 实例,并为以下属性创建 变量:height、width 和 stableHeight。 - import { bindViewportCSSVars, initViewport } from '@telegram-apps/sdk';
9 F; J: b9 q$ o% i+ m2 A - 4 X1 _( [) ]. W! U, l1 ]
- const vp = await initViewport();
+ z( d _( L( a! m0 q1 f
* C v& t, v# n) k( n; [! M, T! J- bindViewportCSSVars(vp);
复制代码 默认情况下,该函数会创建名为 的全局 CSS 变量:-tg-viewport-height、-tg-viewport-width 和 -tg-viewport-stable-height。 不过, 函数允许传递一个 CSS 变量名生成器,该生成器接受其中一个字符串值,每个 负责一个特定属性:width、height 或 stableHeight。- bindViewportCSSVars(vp, key => {; s( T0 `- P3 g* d
- switch (key) {
q3 G6 b8 Z! W- r E! e - case 'height':) k: r) [" A. m. @! J
- return `--viewportHeight`;
* x+ s/ J' \, i; B( \4 f$ b - case 'width':( n/ ]; q/ `9 h5 J
- return `--viewportWidth`;# o% s0 m0 x+ g% |& L
- case 'stable-height':, N$ B# u! G+ R. I! ?
- return `--viewportStableHeight`;
g$ R7 O" S0 E - default:, H, a3 X9 b0 v
- return `--void`;
8 q% j4 `( s0 W - }
# ~8 ] `! d! H! x6 R% I - });
复制代码 bindThemeParamsCSSVars该函数接受 ThemeParams 实例,并创建与主题参数相关的全局 CSS 变量。 - import { bindThemeParamsCSSVars, initThemeParams } from '@telegram-apps/sdk';5 Z s9 L t+ Z
9 ~$ e3 e( ]* ^- J) z- const tp = initThemeParams();+ f5 M f* ?- I$ ~" v4 r
- / I% T$ ?; O& R) l2 C
- bindThemeParamsCSSVars(tp);
复制代码默认情况下,该函数会将 ThemeParams 实例属性的驼峰字母大小写转换为短横线命名法大小写,并在 中添加前缀 --tg-theme-。 下面是创建变量的示例: - --tg-theme-bg-color
- --tg-theme-secondary-bg-color
- --tg-theme-accent-text-color
- 等等$ {' k& k$ ?& [9 h+ O2 l! ^: D' m% g
与 bindViewportCSSVars 函数类似,它允许传递一个接受 ThemeParams 实例属性的 CSS 变量名生成器。 - bindThemeParamsCSSVars(tp, key => {
/ @" u! N& Y+ j( |1 [% Q - // Converts camel case to kebab case.1 d% D0 m+ `+ g6 T* w- h4 ^+ x
- return `--${key.replace(/[A-Z]/g, m => `-${m.toLowerCase()}`)}`;
+ v/ @: P% J6 f5 i8 m) j - });
复制代码 bindMiniAppCSSVarsbindMiniAppCSSVars 函数接受一个 MiniApp 实例和 以及一个 ThemeParams 实例,创建与 MiniApp 实例相关的全局 CSS 变量。 - import { bindMiniAppCSSVars, initMiniApp, initThemeParams } from '@telegram-apps/sdk';
; s4 i, j0 d5 Y0 ~7 i7 ^8 I3 a- U - + u) T o( F! r+ ]/ M* q
- const ma = initMiniApp();
0 y/ K( z8 N9 q' E - const tp = initThemeParams();# m& d Z f/ X- F1 K. Y9 S
- ' _- o9 l% I2 z- a. h k$ j+ ]
- bindMiniAppCSSVars(ma, tp);
复制代码 默认情况下,它会创建 --tg-bg-color 和 --tg-header-color 等变量。 不过,与所有 其他 CSS 变量绑定函数一样,它允许自定义生成的名称。 传递的生成器 接受其中一个关键字:bg 和 header,希望它能返回一个完整的 CSS 变量名。- bindMiniAppCSSVars(ma, tp, key => {
! U4 k3 r4 m3 N$ r/ Z% } - switch (key) {; I( s3 s, K( S
- case 'bg':5 q J- z* U8 F$ c0 ?8 m# ^
- return `--miniAppBg`;3 d1 B4 f: R, j4 E. a! e
- case 'header':/ d( m3 S1 S' K: Y$ @; O+ \
- return `--miniAppHeader`;
. a0 G( W) B {* d - default:+ u0 ~! w p D% B0 Z; O3 ?
- return `--void`;: k$ q2 w2 {0 u+ k$ n; K9 o8 g
- }
- }" L2 _. C8 ^8 v: n- Q6 W, F - });
复制代码 . r% S0 L8 L+ C8 S
5 i5 B+ d: v7 S0 Q* W- h$ q( k l
|