nildarar
(Nildarar)
1
更新到 2.6.0.beta6 (3e1b94c227) 后,用户卡片在移动端无法打开。我在 meta 环境中进行了测试,没有问题。也许是因为我们的 Discourse 是 RTL(从右到左)布局,导致了这个问题。
桌面端没有问题,但在手机上,点击用户头像不会打开用户卡片,需要再次点击才会进入个人主页。
没有错误日志……
我使用没有任何组件的默认模板进行了测试。
我们使用的插件如下:
3 个赞
nildarar
(Nildarar)
2
我在 RTL 模式下看不到以下类:
该文件是否未被编译?因为我们是通过 Web 界面进行的更新。
sam
(Sam Saffron)
4
不太可能,但并非没有可能。你能通过控制台重新构建吗?
1 个赞
nildarar
(Nildarar)
5
没问题,我们原计划明天进行。从昨天起,我们已临时在主题中添加了相关代码以解决该问题。
Johani
(Joe)
6
我可以复现这个问题。这看起来是 R2 中的一个 bug。
如果向编译器传递 :rtl 选项,它会通过 R2 处理 CSS,并执行神奇的 RTL 转换。
这通常运行良好,但由于某种原因,我们似乎遇到了一种边缘情况,导致它返回混乱的 CSS。我们使用一种模式为移动导航菜单创建淡入淡出效果,如下所示。
这并不是唯一使用该模式的地方;这只是一个示例。
看起来这种模式超出了 R2 的处理能力。我们调用了一个 RGBA 函数并将 CSS 变量传递给它,然后我们还添加了一个停止点。
当通过 R2 处理时,它返回类似这样的内容:
如果关闭该功能(即使在 RTL 本地环境中),我们会得到以下内容:

混乱的 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 
7 个赞
nildarar
(Nildarar)
7
哇,您的描述非常详尽且实用,这个 bug 也真是奇特!
我们之前也遇到过您上面提到的一些 bug,但当时尝试通过覆盖 CSS 来隐藏它们。
非常感谢您如此耐心、细致地解决了这个问题,也感谢您提供了如此完整的说明

4 个赞