transitio icon indicating copy to clipboard operation
transitio copied to clipboard

重启前后 CSS 优先级不一致

Open EmptyDreams opened this issue 1 year ago • 2 comments

在添加或编辑一个 CSS 样式后,CSS 样式会立即生效(如果开启开发者模式),但是重启 QQ 后部分样式优先级低于 QQ 内置的样式又会失效,必须加上 !important 提高优先级才行。

按理来说,如果必须要加 !important 才可以生效,那么应当一直需要加 !important 而不是在重启后出现优先级不一致的问题。

复现方法:

  1. 打开插件的开发者模式
  2. 安装这个:https://gist.github.com/EmptyDreams/e1374d3e334904f1103bee1ff9087dc5
  3. 把这个代码片段中的 !important 删除
  4. 观察聊天气泡颜色,此时颜色设置是生效了的
  5. 重启 QQ 再观察聊天气泡颜色,发现又回到了 QQ 默认设置
  6. 此时再随便编辑一下这个 CSS 文件并保存,发现样式又生效了
  7. 重启后再次失效
  8. 添加 !important 后重启,样式正常生效

EmptyDreams avatar Aug 07 '24 08:08 EmptyDreams

和 CSS 插入的位置有关系,如果优先级相同,排在后面的 CSS 会覆盖前面的。猜测是重启后插件注入的 CSS 在 QQ 的 CSS 之前,而重载 CSS 后插件注入的 CSS 自然就到 QQ 的 CSS 之后(因为使用的是 document.head.appendChild)。

PRO-2684 avatar Aug 07 '24 08:08 PRO-2684

逝世 commit 53edc5e1e2af834b3df5f71a6cf81e58ba795caa, 应该可以解决这个问题

PRO-2684 avatar Aug 07 '24 08:08 PRO-2684