用户卡在手机上打不开

我可以复现这个问题。这看起来是 R2 中的一个 bug。

如果向编译器传递 :rtl 选项,它会通过 R2 处理 CSS,并执行神奇的 RTL 转换。

这通常运行良好,但由于某种原因,我们似乎遇到了一种边缘情况,导致它返回混乱的 CSS。我们使用一种模式为移动导航菜单创建淡入淡出效果,如下所示。

这并不是唯一使用该模式的地方;这只是一个示例。

看起来这种模式超出了 R2 的处理能力。我们调用了一个 RGBA 函数并将 CSS 变量传递给它,然后我们还添加了一个停止点。

当通过 R2 处理时,它返回类似这样的内容:

如果关闭该功能(即使在 RTL 本地环境中),我们会得到以下内容:

correct css

混乱的 CSS 导致编译器出错,并将该规则之后的任何 CSS 压缩为无法生效的无用代码。

因此,在该样式表之后有多个样式表在移动 RTL 模式下从未被加载。用户卡片样式表就是其中之一。

我尝试通过移除停止点来降低该模式的复杂度,结果似乎可以正常工作。因此,我们从以下内容:

background: linear-gradient(
  to right,
  rgba(var(--secondary-rgb), 0) 0%,
  rgba(var(--secondary-rgb), 1) 100%
);

改为以下内容:

background: linear-gradient(
  to right,
  rgba(var(--secondary-rgb), 0),
  rgba(var(--secondary-rgb), 1)
);

这不会造成任何视觉变化——因为这些本来就是默认的停止点——并且解决了该问题。

我已提交了一个 PR,以更新我们所有使用该模式的地方:

感谢报告此问题 @nildarar :+1:

7 个赞