【问题标题】:Changing the text color of a div更改 div 的文本颜色
【发布时间】:2012-02-17 16:09:16
【问题描述】:

我目前正在创建一个报表设计器页面,您可以在其中移动、调整大小和更改标签、字段等。我已经掌握了更改所选 div 的大小、重量和对齐方式,但我需要更改颜色。首先,当用户单击 div 时,它需要获取当前颜色并将其应用到下拉菜单或颜色选择器,然后当颜色更改时,它会再次应用它。

我不需要设置颜色的代码我只需要获取颜色(当我返回类似 rgb(0,0,0) 的东西时),并允许用户更改它,任何人都可以帮助,所有我为 jQuery 找到的颜色选择器插件只有 #000000 类型代码,所以我不能将 rgb(0,0,0) 应用于那个。

【问题讨论】:

    标签: jquery text colors


    【解决方案1】:

    当您获得元素的当前颜色时,您获得的颜色会因浏览器而有所不同。你提到的格式,rgb(0,0,0) 可以很容易地转换成#000000 样式:rbg 代表“红、绿、蓝”,数字是十进制的,所以只需要一点解析。您可能还希望允许 rgba(0,0,0,0) 忽略第四个数字。

    要解析rgb(0,0,0),您可以使用正则表达式:

    var match, red, green, blue, code;
    match = str.match(/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/);
    if (match) {
        red   = parseInt(match[1], 10);
        green = parseInt(match[2], 10);
        blue  = parseInt(match[3], 10);
        code  = '#' +
                zeroPad(red.toString(16), 2) +
                zeroPad(green.toString(16), 2) +
                zeroPad(blue.toString(16), 2);
    }
    

    ...zeroPad 是一个在左侧补零的实用函数:

    function zeroPad(str, width) {
        while (str.length < width) {
            str = '0' + str;
        }
        return str;
    }
    

    Example using text input

    【讨论】:

    • 如果返回十六进制版本,我应该如何捕捉到这个,检查第一个字符是否有 #
    • @user1166905:当然,这很合理。
    猜你喜欢
    • 2013-04-22
    • 1970-01-01
    • 2018-10-01
    • 2014-02-18
    • 2016-12-22
    • 2018-03-23
    • 2014-07-06
    • 2015-12-01
    • 1970-01-01
    相关资源
    最近更新 更多