You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegram小程序滚动回顶部出现白块问题求助

Telegram小程序滚动白块问题解决方案

问题重现

开发Telegram小程序时,为消除页面默认整体滚动,给body设置了overflow:hidden,同时创建高度为100vh的Page Wrapper组件,将滚动限制在组件内部。但在移动端,滚动至页面底部后缓慢向上滚动时,页面会出现白块;移除body的overflow:hidden虽能解决白块,但会导致Telegram窗口被滚动,不符合需求。

解决方案

1. 替换body的overflow:hidden为overflow:clip

overflow:clip和hidden同样会隐藏溢出内容,但不会保留滚动上下文,能避免移动端滚动回弹触发的白块问题,同时阻止页面整体滚动。

2. 用动态视口高度100dvh替代100vh

100vh在移动端会包含状态栏、底部导航栏高度,导致组件实际高度超出可视区域;100dvh是动态视口高度,会自动适配设备实际可视区域,确保组件高度准确。

3. 添加overscroll-behavior-y: contain限制滚动范围

该属性可阻止组件内部的滚动事件冒泡到Telegram窗口,即使滚动到组件边界,也不会触发外部窗口滚动。

4. 统一页面基础样式

确保html和body高度设置正确,避免出现高度塌陷或溢出。

修改后的代码示例

全局CSS(body部分)

html, body {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-size: 1.6rem;
  background: rgba(247, 246, 255, 1);
  width: 100%;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  overflow: clip;
  position: relative;
  height: 100dvh;
}

* {
  box-sizing: inherit; /* 统一所有元素的盒模型 */
}

Page组件样式

.page {
  padding: 12px 16px 100px 16px;
  width: 100%;
  height: 100dvh;
  overflow-y: auto;
  background: rgba(247, 246, 255, 1);
  text-align: center;
  color: $white;
  margin: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 16px;
  overscroll-behavior-y: contain;
}

额外排查点

  • 检查子元素的margin或padding是否超出Page组件范围,导致滚动异常
  • 若Telegram小程序容器有默认内边距或样式,可通过开发者工具排查并覆盖

内容的提问来源于stack exchange,提问作者SnailCode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 17:05:08