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

iOS Safari下多个repeating-linear-gradient样式失效问题排查

问题根因

iOS Safari 对多图层重复渐变的解析存在几个已知兼容问题,会导致棋盘格样式失效:

  • 渐变末尾冗余追加的重复色值(每个repeating-linear-gradient最后单独写的同色停驻点),配合CSS变量作为渐变颜色时,会触发Safari的CSS解析bug,直接丢弃整个渐变背景层
  • background-size只传了一组尺寸值,部分iOS Safari版本不会自动将单组值复制应用到所有背景图层,导致渐变尺寸解析为0,无法渲染
  • 45度角重复渐变中使用rgba(255,255,255,0)作为透明停驻点时,Safari的渐变混合计算存在渲染异常,会导致图层透明显现不出来
可直接复用的修复代码

调整了渐变停驻点写法、补全多图层对应属性,兼容iOS Safari全版本:

#background {
  opacity: 0.8;
  background-color: var(--ion-color-dark);
  background-image: 
    repeating-linear-gradient(
      45deg,
      var(--theme-primary-color) 0 25%,
      transparent 25% 75%,
      var(--theme-primary-color) 75% 100%
    ),
    repeating-linear-gradient(
      45deg,
      var(--ion-toolbar-background) 0 25%,
      #ffffff 25% 75%,
      var(--ion-toolbar-background) 75% 100%
    );
  background-position: 0 0, 40px 40px;
  /* 给两个背景层分别声明尺寸,避免Safari解析失败 */
  background-size: 80px 80px, 80px 80px;
  /* 消除默认background-repeat属性和repeating渐变的冲突 */
  background-repeat: no-repeat;
}
低版本iOS备用方案

如果需要兼容iOS14及更早版本,可以换用渲染逻辑更简单的非repeating渐变拼法,兼容性更好,最终视觉效果和原样式完全一致:

#background {
  opacity: 0.8;
  background-color: var(--ion-color-dark);
  background-image:
    linear-gradient(45deg, var(--theme-primary-color) 25%, transparent 25% 75%, var(--theme-primary-color) 75%),
    linear-gradient(45deg, var(--theme-primary-color) 25%, var(--ion-toolbar-background) 25% 75%, var(--theme-primary-color) 75%);
  background-position: 0 0, 40px 40px;
  background-size: 80px 80px, 80px 80px;
}
排查注意点
  • 确认三个CSS变量--ion-color-dark、--theme-primary-color、--ion-toolbar-background在#background元素的作用域下已正确赋值,Safari遇到未定义的CSS变量会直接让整个渐变规则失效,Chrome会默认用透明值兜底
  • iOS Safari对CSS缓存策略比较激进,修改代码后需要硬刷新页面(清除Safari对应网站数据后重新加载)才能看到最新效果,避免缓存旧规则干扰测试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 10:36:16