我们过去在这些方面做了一些有趣的关于文本选择的事情。 我们制作了一个 秘密消息生成器。 我们制作了一个东西来模拟只选择 一定数量的字符。
在论坛中,Aaron Silber 想知道 使用文本选择来显示实际的图片。 我们知道,使用 CSS 可以更改选中文本的背景颜色,例如 此
::-moz-selection { background-color: #FFA; }
::selection { background-color: #FFA; }
但是,可以使用这些伪选择器使用的实际属性非常有限1。 Background-image
在任何支持这些文本选择伪选择器的浏览器中都不受支持。 Aaron 制作了一个 测试页面 来查看哪些属性支持 ::selection。 本质上,color
和 background-color
是唯一支持的属性。
那我们放弃吗? 当然不是! 事实证明,JavaScript 中有一个 range
对象(更多信息),它有一个 API 用于获取(并在较小程度上设置)有关用户当前选择的文本的信息。 利用这种能力,我们可以找出选择的内容,用 span
将其包围起来,并使用这些跨度(没有继承样式限制)进行样式设置。 事实证明,跨浏览器的兼容性并不理想,但是有一个名为 Rangy 的开源项目,它可以使使用范围更轻松且更具跨浏览器兼容性。
一个基本的演示(来自他们的文档)涉及在点击按钮后在选定文本周围设置一个类
<script>
var cssApplier;
window.onload = function() {
rangy.init();
cssApplier = rangy.createCssClassApplier("someClass", true); // true turns on normalization
});
</script>
<input type="button" value="Toggle someClass on selection" onclick="cssApplier.toggleSelection();">
有了这个,您将获得一个 CSS 类(上面的代码中的“someClass”),可以根据您的需要对其进行样式设置。
.someClass {
background-image: url(raptor-attack.png);
}
显然,添加猛禽是最棒的想法。
1 并且 ::selection
已从规范中删除,因此没有浏览器遵守的标准。
这很棒,但它的响应速度不太好(至少在我的浏览器 FF 中)。 问题是,在您应用第一个选择后,即使我取消选择,恐龙仍然保留在那里。
如果您需要在客户身上玩点花样,它仍然很神奇。
对我来说也是一样,此外使用“全选”会导致“Fancy View Source”中断,并在演示文本下方显示页面中的源代码。
Safar 5.0.4
这是一个很棒的想法,但对我来说也不起作用——Chrome 在 XP 上。 有时猛禽会保留,有时它不会保留——有时剩余的文本会消失。
我在 safari 中遇到了同样的问题,
所以有时它会保留,有时它不会显示。
但这仍然是一个很棒的想法。
当我今天早上在我的 RSS 中看到它时,我忍不住笑了。 太棒了,太棒了,太棒了! 如果您尝试复制/粘贴文本,您会得到猛禽图片而不是文本;)
很酷,Chrome 中有一些小错误——背景仍然可见
太搞笑了! 你让我哭了!
需要稍微调整一下,但这是一个非常酷的彩蛋方法!
我见过的最无聊的东西……
……但真是太搞笑了,我喜欢它!!!
继续努力,感谢您提供所有酷炫的网络内容。
从未见过这样的东西 lolzz
有人感觉像 Seinfeld lolzz
干得好,伙计们
很酷的想法。
很高兴能参与其中。 我认为,经过一些修改,这些技术可以适应为用户提供更美观的文本选择。 它实用吗? 不。 您需要让您的 JavaScript 识别选择开始的位置,在那里放置一个跨度标签,然后在您实时拖动时(不是在鼠标松开时)不断更改结束位置。 在鼠标松开时,标签将被删除。 使用高光笔划的背景图片设置跨度标签的样式,禁用 ::Selection 属性,您就得到了一个数字高光笔,而不是默认的蓝色选择背景。 我有一天会做,但我现在太忙了。
是的,这正是您必须做的,但触发鼠标移动事件是相当消耗资源的事情,尤其是在任务是 DOM 操作时。 我不确定是否会有一个完美的解决方案,它主要用于 lolzz
我们确实喜欢 lolz!
这让我很开心,有点傻,有趣总不是坏事。 感谢您在这方面的幽默感!
这是一个很棒的想法 :)
彩蛋在网站上总是很有趣,这是一个很好的方法。
非常有趣的想法,不确定它会流行起来!
我一直很喜欢您的编码。 只是想补充一点,当突出显示“演示”页面时,突然一半的内容消失了。
这可能是由于我的浏览器(Chrome)造成的,但我以前从未遇到过这种情况。
无论如何,再次感谢您的精彩作品:) 继续努力。
附注:深入研究 WordPress 很棒,我实际上很快就会对此进行评论 :)
什么.. 酷炫而有趣的想法.. 让我们看看它在我的图像上如何工作..
简直太棒了。 . . 用一句话描述整个事情就是“多么棒的想法”。 继续努力。
我喜欢你的幽默感。 人类天性本能地想要突出显示文本,这很有趣。 我的浏览器上运行正常,我迫不及待地想自己尝试一下。 :)
哇.. 太棒了…! 我也不知道那个秘密消息生成器的东西.. 也很酷! :)
<style>
.someClass { background: yellow }
</style>
现在享受您可以突出显示以标记重要片段的文本。
多么有创意……\m/ ……
真是一个很棒的想法……
我喜欢你的幽默感。 人类天性本能地想要突出显示文本,这很有趣。