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

Angular Material 19在iPhone浅色模式下文本显示为白色的问题求助

iOS浏览器浅色模式文本显示异常问题

问题详情

桌面端、安卓手机(Chrome测试)显示正常,网站默认是浅色模式,但在iPhone的Chrome和Safari浏览器中,文本均显示为白色,与浅色背景冲突,深色模式则显示正常。

相关截图

  • 浅色模式异常:浅色模式下文本显示为白色,与浅色背景冲突
  • 深色模式正常:深色模式下文本与背景显示正常

当前主题配置代码

@use '@angular/material' as mat;
html {
    height: 100%;
    color-scheme: light dark;
    @include mat.theme((
            color: mat.$azure-palette,
            typography: Roboto,
            density: 0));
}

body {
    height: 100vh;
    margin: 0;
    background-color: #eeeeee;
    //font-family: mat.get-theme-typography($my-theme);
}

body.dark-mode {
    color-scheme: dark;
    background-color: #222222;
    color: white;
}

解决方案

问题根源是iOS浏览器对color-scheme的处理逻辑不同于其他平台:当html标签设置color-scheme: light dark后,iOS会自动根据系统配色调整文本颜色,但浅色模式下未显式指定文本颜色,导致白色文本与浅色背景冲突。

修改方案1:显式指定浅色模式文本颜色

在body的基础样式中添加文本颜色声明:

body {
    height: 100vh;
    margin: 0;
    background-color: #eeeeee;
    color: #000; // 显式设置浅色模式文本为黑色
    //font-family: mat.get-theme-typography($my-theme);
}

修改方案2:拆分color-scheme到body层级

将color-scheme的设置从html移到body,避免全局层级的自动颜色调整:

html {
    height: 100%;
    @include mat.theme((
            color: mat.$azure-palette,
            typography: Roboto,
            density: 0));
}

body {
    height: 100vh;
    margin: 0;
    color-scheme: light; // 浅色模式单独指定
    background-color: #eeeeee;
    color: #000;
}

body.dark-mode {
    color-scheme: dark;
    background-color: #222222;
    color: white;
}

两种方案都能解决iOS浏览器的文本颜色异常问题,推荐方案2,因为它的颜色控制更精准,避免全局样式冲突。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 10:28:17