L
O
A
D
I
N
G

Skyline 渲染问题记录以及总结

Skyline 渲染模式下 scroll-view 高度塌缩

项目在 app.json 里全局启用了 Skyline 渲染("renderer": "skyline")。Skyline 和传统 WebView 渲染有个关键差异:

Skyline 下 scroll-view 不会自动按内容撑开高度,不显式设置高度就会塌缩为 0。

正好踩中了这个坑:

  • 外层页面 scroll-view 设了 height:100vh → 正常显示
  • 品牌区的 .brand-scroll 设了 height: 60vh → 正常显示
  • 历史标签的 .history-tags-wrapper 没设高度 → 高度变 0,里面的标签和“暂无记录”全被压没了

不是数据问题,是整个容器高度为 0。

Skyline 渲染模式 超一行无省略号

  • 根因:Skyline 渲染下 text-overflow: ellipsis 仅 text 组件支持,view 上无效
  • 修复:在使用了 text-overflow: ellipsi的 view 改为 text,wxss 加 display:block
  • 项目教训:Skyline 下文本省略/截断必须用 text 组件 + display:block

    Skyline 渲染模式下 (豆腐块/错字)

  • 现象:view→text 改造后,个别文字 出现 □ 豆腐块和错位字形,字符串里混入了控制字符/零宽字符/私有区字符这类“脏字符”(WebView 静默忽略脏字符,Skyline text 会画出来)
  • 修复:新增 sanitizeDesc()(过滤控制字符/零宽字符/私有区/替换符 + 多余空白 + JS 侧截断 40 字兜底)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
const sanitizeDesc = (str, maxLen = 40) => {
if (!str) return ''
const cleaned = String(str)
.replace(/[\u0000-\u0008\u000B\u000C\u000E-\u001F\u007F-\u009F]/g, '') // 控制字符
.replace(/[\u200B-\u200D\uFEFF\u2028\u2029]/g, '') // 零宽字符/分隔符
.replace(/[\uE000-\uF8FF]/g, '') // 私有区字符(字体无字形→豆腐块)
.replace(/\uFFFD/g, '') // 替换符
.replace(/\s+/g, ' ')
.trim()
if (maxLen && cleaned.length > maxLen) {
return cleaned.slice(0, maxLen) + '...'
}
return cleaned
}
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2022-2026 耀耀切克闹

        我是穷比,在线乞讨!

        支付宝
        微信