【问题标题】:How can I use CSS3 ::selection without changing the default color and background color?如何在不更改默认颜色和背景颜色的情况下使用 CSS3 ::selection?
【发布时间】:2011-12-30 04:52:32
【问题描述】:

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

::-moz-selection{background:#fe57a1;color:#fff;text-shadow:none;}
::selection{background:#fe57a1;color:#fff;text-shadow:none;}

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

【问题讨论】:

  • 这不是从 CSS3 规范中删除的吗?
  • 所以你想改变文本颜色而不是背景颜色?
  • 我希望不会,它让您可以更好地控制您的配色方案并且完全无害。
  • 如果你不想改变背景颜色和文字颜色,那你想用::selection做什么!!我在这里错过了什么吗!
  • 我只想删除文本阴影,因为如果我选择带有文本阴影的文本,则会出现反色的文本阴影。

标签: css html5boilerplate


【解决方案1】:

由于此选择器未得到 CSS 的官方支持,已从 CSS3 中移除,并且目前不在 CSS4 的草案中,因此确实没有太多关于如何确切的文档应该应用选择器。

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

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

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

【讨论】:

  • 据我所知,CSS WG 正在考虑将::selection 放回 UI 级别 4,如果它不能达到 UI 级别 3。不要屏住呼吸...
  • @BoltClock:是的,我不知道他们为什么不这样做,但目前它还没有出现在 CSS4 的草案中。 :(
  • 它不在 Selectors 3 或 Selectors 4 的草案中,因为它们将所有伪元素移出该规范。伪元素是一种完全不同的野兽,我想它不能单独由它们的选择器完全定义。不过,它们会分散在 UI 和其他模块周围。
  • 或者,你知道吗,我要去打扰邮件列表中的一些人。当我在做的时候,我还应该在这里编辑我所有提到::selection的答案......我只是在你的回答提示它没有完全放弃之后才发现:)
  • 要走的路;那是@BoltClock 分心了一会儿。快,趁他忙,让我们回答所有 CSS 问题..! =D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-10-13
  • 2018-01-05
  • 2021-11-24
  • 2022-01-15
  • 1970-01-01
  • 2014-09-22
  • 1970-01-01
相关资源
最近更新 更多