【问题标题】:Getting selection colors in javascript?在javascript中获取选择颜色?
【发布时间】:2014-01-23 22:02:59
【问题描述】:

我看到了这篇关于设置选择颜色的好文章:

在 JavaScript http://blogs.adobe.com/cantrell/archives/2012/02/setting-text-selection-colors-in-javascript.html 中设置文本选择颜色

既然可以设置颜色,我想有一些方法可以 GET 它。我就是找不到。 ;-)

有人知道如何获取选择颜色吗?

【问题讨论】:

  • 请澄清您的问题
  • 您可以使用一些 CSS 设置选择颜色。
  • 你在问什么?似乎代码已经存在用于更改颜色。你不明白什么?甚至还有一个链接的示例页面——您可以查看它的源代码
  • 谢谢@A Wolff,是的,我想要颜色。

标签: javascript jquery css dom


【解决方案1】:

浏览器/操作系统用于按钮、文本选择等的颜色称为“系统颜色”。您正在寻找的是系统颜色“Highlight”和“HighlightText”,它们在 CSS2 中可用

element {
    background-color: highlight;
    color: highlighttext;
}

和javascript:

element.style.backgroundColor = 'Highlight';
element.style.color = 'HighlightText';

要将它们重置为默认颜色,请将这些属性设置回空字符串 ''。

您可以在http://www.w3.org/wiki/CSS/Properties/color/keywords 获得完整的系统颜色列表。注意:该页面说这是 CSS2 的一项功能,并且已被弃用,取而代之的是 CSS3 UI '[appearance]' 属性,但如果您阅读http://www.w3.org/TR/css3-ui/#appearance,似乎系统颜色已从 UI 外观规范中删除,所以我不知道我们会在哪里。

上面提供的代码适用于 FireFox 32、Chrome 37、IE 11。

【讨论】:

  • 谢谢彼得,这正是我想要的。
  • 很高兴知道。我还没有弄清楚如何去做 CSS3-UI 的想法,只是无法理解它们的意思。对你有意义吗?
  • 我也不知道。只是静静地等待这一刻。 ;-)
【解决方案2】:

【讨论】:

  • 感谢您的链接,但据我所知,我只能这样设置选择颜色,或者?
【解决方案3】:

我真的不知道您是否要设置或获取选择颜色,因为您在标题和文本中都说了。

您可以使用 CSS 在 ::selection 伪元素上设置背景。

/* firefox */
::-moz-selection { background: lightblue; }
/* safari, chrome, opera, IE9+ */
::selection { background: lightblue; }

我知道在 JavaScript 中设置它的唯一方法是创建 CSS 规则。

在 JavaScript 中没有简单的方法可以找到选择颜色。 您必须解析 CSS 规则以找到哪一个设置它以及哪一个匹配您当前的元素。 如果你真的想这样做,你可以从 first-letter 伪元素的相同代码中得到启发:http://jsfiddle.net/tzi/27q8Z/

干杯, 托马斯。

【讨论】:

  • 对不起,如果我不清楚,tzi。是的,我想获取颜色,而不是设置它们。 (我在问题中写错了吗?)嗯,谢谢你的提示。这可能是一种方式。
【解决方案4】:

如果你想要一个 JQuery 解决方案,如果我猜对了,你应该使用这样的东西:

http://jsfiddle.net/utz9t/2/

$('.color').on('click',this,function(){
    var bgcol = $(this).css('backgroundColor');
    $('#txt').css({'color':''+bgcol+''})
});

【讨论】:

  • 感谢 Zword,但我认为您误解了我的问题。我想获取用户在屏幕上选择文本时正在(或将要)使用的颜色。
【解决方案5】:

使用 jquery 中的 mousemove 事件和此问题中的 get_random_color 函数 Random color generator in JavaScript

对文本应用颜色很容易。如果您愿意,可以附加整个页面的事件。

$( "#text" ).mousemove(function(event) {
  var color = get_random_color
  console.log(color);
  $(this).css("color",color);
});

 function get_random_color() {
    var letters = '0123456789ABCDEF'.split('');
    var color = '#';
    for (var i = 0; i < 6; i++ ) {
        color += letters[Math.round(Math.random() * 15)];
    }
    return color;
}

代码笔在这里:http://codepen.io/anon/pen/qzLAC

【讨论】:

  • 谢谢下午。该代码不能在我这里使用,但是对于其他用途来说是一个很好的例子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-10-19
  • 2017-04-03
  • 1970-01-01
  • 2013-11-16
  • 1970-01-01
  • 1970-01-01
  • 2015-01-31
相关资源
最近更新 更多