您可以使用::selection
和 ::-moz-selection
自定义文本被选中时的文本颜色和背景颜色。我们已经在这里多次讨论过 一些 方法,并以 各种形式 展示,这是一个很酷的小技巧。
甚至 HTML5 Boilerplate 在默认情况下也包含了它,使用了超级粉红色,这是发现样板网站的最简单方法=)。
但是,当您将文本选择样式更改为非默认样式时,您将失去默认样式在窗口失去焦点时自动降低饱和度的功能。请看
我更喜欢默认的降低饱和度,使其视觉效果不那么强烈的方式。毕竟,您很有可能现在正专注于另一个窗口,并不需要背景窗口争夺注意力。
也许这是一个鲜为人知的事实,但是您可以将伪选择器与::selection
结合使用,以便在窗口处于非活动状态时应用样式。它使用:window-inactive
伪选择器,如下所示
::selection {
background: hsl(136,65%,45%);
color: white;
}
::selection:window-inactive {
background: hsl(136,25%,65%);
}
使用HSL作为颜色值,我能够降低饱和度并增加亮度,从而获得相同色调的强度较低的版本。
请记住,Firefox 有自己的 ::selection
版本,即 ::-moz-selection
。它也有自己的 :window-inactive
版本,即 :-moz-window-inactive
。不幸的是,将这些东西放在一起使用不起作用。
/* Does work */
::-moz-selection {
background: rgba(255,0,0,0.9);
color: white;
}
/* Doesn't work */
::-moz-selection:-moz-window-inactive {
background: rgba(255,0,0,0.3);
}
/* Nor this */
:-moz-window-inactive::-moz-selection {
background: rgba(255,0,0,0.3);
}
所以无论如何,您至少可以在 Firefox (3.6+ ?) 中获得自定义文本选择颜色,但您无法为窗口非活动状态专门设置样式。**但是**,Firefox (已测试 3.6 和 4) 在窗口失去焦点时会自动将文本选择颜色更改为灰色。
需要注意的是,这不是因为 :-moz-window-inactive
不起作用,它确实起作用,您实际上可以在任何元素上使用它,例如在该状态下更改 div 的背景颜色。只是将它们放在一起使用不起作用。
这不是我们可以对浏览器供应商挥舞拳头的情况。**这些都没有标准化。** ::selection 不是标准。:window-inactive 不是标准。事实上,::selection 在技术上实际上是一个伪元素而不是伪选择器,因此它应该在选择器中最后出现,但是如果您将它们互换位置,它将不起作用。
不仅仅是文本选择
如果 :window-inactive 被标准化并得到更广泛的支持,那么您可以用它做更多的事情,而不仅仅是处理文本选择颜色。想象一下将整个网站灰度化或停止动画。
一如既往的绝妙技巧!如果您正在处理文本选择方面的内容,如果您使用文本阴影,请不要忘记此技巧。
http://www.welcomebrand.co.uk/blog/design-development/using-text-shadow-dont-forget-highlighting/
J.
我不认为 :window-inactive 应该被标准化:“想象一下将整个网站灰度化或停止动画”——这应该是浏览器处理的事情,网站不会保持一致,而且会变得更臃肿。我想不出在窗口处于非活动状态时会发生什么有用的事情(因为当窗口处于非活动状态时,用户实际上并没有使用该窗口)。
奇怪的是,::selection 曾经 存在于 CSS3 规范 中,但后来被删除了。我想知道为什么……
嗯……不知道。这有点奇怪。然而,Mozilla 表示 他们将继续支持它。
有了所有这些花哨的东西,CSS 很快就会像 C++ 一样高级……
…(我还没掌握)
这个怎么样?
:-moz-window-inactive ::-moz-selection {
我原本以为这两个之间应该有一个空格,因为发生在窗口上的事情在 DOM 树中处于更高的层级。(不过我还没有测试过)
想法不错,但在 Firefox 4 中快速测试的结果是不行的
http://jsbin.com/epole5/3
发现很棒,Chris。谢谢你的提示。
很棒的文章。技术
这可以用于在用户执行其他操作时显示广告,然后切换回来时,广告会显示一秒钟,然后缩回侧边栏。Spotify 这样做,但这不好,感觉非常具有侵入性。
那个网站是否打算逐字复制你的帖子?
http://highland-park-web-design.info/window-inactive-styling/
至少这篇帖子,看看那个网站上的图片来源。