English 简体中文 繁體中文 한국 사람 日本語 Deutsch русский بالعربية TÜRKÇE português คนไทย french

简体中文 繁體中文 English 日本語 Deutsch 한국 사람 بالعربية TÜRKÇE คนไทย Français русский

回答

收藏

Telegram 小程序 | TypeScript @telegram-apps/sdk @1.x | CSS 变量

开源社区 开源社区 3121 人阅读 | 0 人回复 | 2025-02-24

该软件包提供的实用程序可帮助开发人员自动管理组件 CSS 变量。 与 Telegram SDK 类似,@telegram-apps/sdk 允许开发人员设置全局 CSS 变量,将 连接到特定组件。bindViewportCSSVars

bindViewportCSSVars 函数接受一个 Viewport 实例,并为以下属性创建 变量:height、width 和 stableHeight。

  1. import { bindViewportCSSVars, initViewport } from '@telegram-apps/sdk';
    9 F; J: b9 q$ o% i+ m2 A
  2. 4 X1 _( [) ]. W! U, l1 ]
  3. const vp = await initViewport();
    + z( d  _( L( a! m0 q1 f

  4. * C  v& t, v# n) k( n; [! M, T! J
  5. bindViewportCSSVars(vp);
复制代码
默认情况下,该函数会创建名为 的全局 CSS 变量:-tg-viewport-height-tg-viewport-width-tg-viewport-stable-height。 不过, 函数允许传递一个 CSS 变量名生成器,该生成器接受其中一个字符串值,每个 负责一个特定属性:widthheightstableHeight
  1. bindViewportCSSVars(vp, key => {; s( T0 `- P3 g* d
  2.   switch (key) {
      q3 G6 b8 Z! W- r  E! e
  3.     case 'height':) k: r) [" A. m. @! J
  4.       return `--viewportHeight`;
    * x+ s/ J' \, i; B( \4 f$ b
  5.     case 'width':( n/ ]; q/ `9 h5 J
  6.       return `--viewportWidth`;# o% s0 m0 x+ g% |& L
  7.     case 'stable-height':, N$ B# u! G+ R. I! ?
  8.       return `--viewportStableHeight`;
      g$ R7 O" S0 E
  9.     default:, H, a3 X9 b0 v
  10.       return `--void`;
    8 q% j4 `( s0 W
  11.   }
    # ~8 ]  `! d! H! x6 R% I
  12. });
复制代码
bindThemeParamsCSSVars

该函数接受 ThemeParams 实例,并创建与主题参数相关的全局 CSS 变量。

  1. import { bindThemeParamsCSSVars, initThemeParams } from '@telegram-apps/sdk';5 Z  s9 L  t+ Z

  2. 9 ~$ e3 e( ]* ^- J) z
  3. const tp = initThemeParams();+ f5 M  f* ?- I$ ~" v4 r
  4. / I% T$ ?; O& R) l2 C
  5. 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 变量名生成器。

  1. bindThemeParamsCSSVars(tp, key => {
    / @" u! N& Y+ j( |1 [% Q
  2.   // Converts camel case to kebab case.1 d% D0 m+ `+ g6 T* w- h4 ^+ x
  3.   return `--${key.replace(/[A-Z]/g, m => `-${m.toLowerCase()}`)}`;
    + v/ @: P% J6 f5 i8 m) j
  4. });
复制代码
bindMiniAppCSSVars

bindMiniAppCSSVars 函数接受一个 MiniApp 实例和 以及一个 ThemeParams 实例,创建与 MiniApp 实例相关的全局 CSS 变量。

  1. import { bindMiniAppCSSVars, initMiniApp, initThemeParams } from '@telegram-apps/sdk';
    ; s4 i, j0 d5 Y0 ~7 i7 ^8 I3 a- U
  2. + u) T  o( F! r+ ]/ M* q
  3. const ma = initMiniApp();
    0 y/ K( z8 N9 q' E
  4. const tp = initThemeParams();# m& d  Z  f/ X- F1 K. Y9 S
  5. ' _- o9 l% I2 z- a. h  k$ j+ ]
  6. bindMiniAppCSSVars(ma, tp);
复制代码
默认情况下,它会创建 --tg-bg-color--tg-header-color 等变量。 不过,与所有 其他 CSS 变量绑定函数一样,它允许自定义生成的名称。 传递的生成器 接受其中一个关键字:bgheader,希望它能返回一个完整的 CSS 变量名。
  1. bindMiniAppCSSVars(ma, tp, key => {
    ! U4 k3 r4 m3 N$ r/ Z% }
  2.   switch (key) {; I( s3 s, K( S
  3.     case 'bg':5 q  J- z* U8 F$ c0 ?8 m# ^
  4.       return `--miniAppBg`;3 d1 B4 f: R, j4 E. a! e
  5.     case 'header':/ d( m3 S1 S' K: Y$ @; O+ \
  6.       return `--miniAppHeader`;
    . a0 G( W) B  {* d
  7.     default:+ u0 ~! w  p  D% B0 Z; O3 ?
  8.       return `--void`;: k$ q2 w2 {0 u+ k$ n; K9 o8 g
  9.   }
    - }" L2 _. C8 ^8 v: n- Q6 W, F
  10. });
复制代码
. r% S0 L8 L+ C8 S
5 i5 B+ d: v7 S0 Q* W- h$ q( k  l
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则