如何在不更改默认颜色和背景颜色的情况下使用CSS3 :: selection?

Leo*_*ang 6 css css3 html5boilerplate

默认情况下,HTML5 Boilerplate模板中包含以下行:

::-moz-selection{background:#fe57a1;color:#fff;text-shadow:none;}
::selection{background:#fe57a1;color:#fff;text-shadow:none;}
Run Code Online (Sandbox Code Playgroud)

但是,我想将选择颜色保留为操作系统默认值(在Windows中为蓝色,我认为它在Ubuntu中为棕橙色).如果我省略背景属性,就没有背景.

ani*_*son 3

由于此选择器不受 CSS 官方支持,已从 CSS3 中删除,并且目前不在 CSS4 草案中,因此实际上没有太多关于如何应用选择器的文档。

根据选择器的定义,它旨在覆盖系统默认的文本选择颜色。浏览器显然已经从字面上理解了这一点。通过指定::selection,这些颜色将立即被覆盖,即使您没有指定它们。问题是系统的默认值不是 CSS 的一部分。浏览器看到你的声明并思考“忽略系统的默认值,使用此声明中的内容”。由于您没有在那里指定颜色,因此不会应用任何颜色(背景没有,颜色是继承的)。哎呀,有点难以判断您的文本已被选中,是吧?

这只是似乎正在发生的事情的理论,因为正如我所说,确实没有关于实际发生的情况或应该发生的情况的文档。

老实说,您真正确定的唯一方法是查看源代码并了解当它看到该选择器时它在做什么。也许向开发团队中的某人询问其中一款浏览器会更容易。无论哪种方式仍然会很困难。也许您可以提交错误报告,他们可以更深入地研究这个问题......

  • 或者,你知道吗,我要去打扰邮件列表中的一些人。当我这样做时,我还应该在这里编辑所有提到 `::selection` 的答案......我只是在你的答案提示后才发现它并没有完全被删除:) (2认同)
  • 任重而道远;@BoltClock 有点心烦意乱了。快点,趁他忙的时候,让我们回答“所有”CSS 问题......!=D (2认同)