Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript/jqueryplugin-to-Plugin更改边框颜色,相对于元素的背景颜色_Javascript_Jquery_Css_Colors - Fatal编程技术网

Javascript/jqueryplugin-to-Plugin更改边框颜色,相对于元素的背景颜色

Javascript/jqueryplugin-to-Plugin更改边框颜色,相对于元素的背景颜色,javascript,jquery,css,colors,Javascript,Jquery,Css,Colors,在我的应用程序中,我希望用户为日历上显示的元素选择一种基本颜色。从用户选择的基础颜色,我需要能够自动设置适当的边框颜色和适当的文本颜色 当我指的是适当的时候,我指的是较深的色调或边框的阴影变化 是否有任何jquery插件已经做到了这一点,或者确实还有其他javascript库的插件 如果没有,人们能否就如何进行计算提供建议?我在色彩理论方面没有多少经验 谢谢。您可以试试这个: 或者您可以尝试以下代码段: function lighten(color, factor) { factor =

在我的应用程序中,我希望用户为日历上显示的元素选择一种基本颜色。从用户选择的基础颜色,我需要能够自动设置适当的边框颜色和适当的文本颜色

当我指的是适当的时候,我指的是较深的色调或边框的阴影变化

是否有任何jquery插件已经做到了这一点,或者确实还有其他javascript库的插件

如果没有,人们能否就如何进行计算提供建议?我在色彩理论方面没有多少经验

谢谢。

您可以试试这个:

或者您可以尝试以下代码段:

function lighten(color, factor) {
    factor = factor || 0.4;
    var lighter = '#';
    for(var i = 1; i < 6; i += 2) {
        var part = parseInt(color.substr(i, 2), 16);
        part += Math.round((255 - part) * 0.4);
        lighter += (part < 16 ? '0' : '') + part.toString(16);
    }
    return lighter;
}
lighten('#ececec'); // returns '#f4f4f4'
function LightenColor(rgbtext, delta) {
      var r, g, b, txt;
      r= parseInt(rgbtext.substr(1, 2), 16),
      g= parseInt(rgbtext.substr(3, 2), 16),
      b= parseInt(rgbtext.substr(5, 2), 16),

      r+= delta;  if (r> 255) r= 255;  if (r< 0) r= 0;
      g+= delta;  if (g> 255) g= 255;  if (g< 0) g= 0;
      b+= delta;  if (b> 255) b= 255;  if (b< 0) b= 0;
      txt= b.toString(16);       if (txt.length< 2) txt= "0"+ txt;
      txt= g.toString(16)+ txt;  if (txt.length< 4) txt= "0"+ txt;
      txt= r.toString(16)+ txt;  if (txt.length< 6) txt= "0"+ txt;

      return "#"+ txt;
    }
    function DarkenColor(rgbtext, delta) {
      return LightenColor(rgbtext, delta* -1);
    }
LightenColor('#AF0000', 50);
DarkenColor('#AF0000', 50);
或者使用以下代码段:

function lighten(color, factor) {
    factor = factor || 0.4;
    var lighter = '#';
    for(var i = 1; i < 6; i += 2) {
        var part = parseInt(color.substr(i, 2), 16);
        part += Math.round((255 - part) * 0.4);
        lighter += (part < 16 ? '0' : '') + part.toString(16);
    }
    return lighter;
}
lighten('#ececec'); // returns '#f4f4f4'
function LightenColor(rgbtext, delta) {
      var r, g, b, txt;
      r= parseInt(rgbtext.substr(1, 2), 16),
      g= parseInt(rgbtext.substr(3, 2), 16),
      b= parseInt(rgbtext.substr(5, 2), 16),

      r+= delta;  if (r> 255) r= 255;  if (r< 0) r= 0;
      g+= delta;  if (g> 255) g= 255;  if (g< 0) g= 0;
      b+= delta;  if (b> 255) b= 255;  if (b< 0) b= 0;
      txt= b.toString(16);       if (txt.length< 2) txt= "0"+ txt;
      txt= g.toString(16)+ txt;  if (txt.length< 4) txt= "0"+ txt;
      txt= r.toString(16)+ txt;  if (txt.length< 6) txt= "0"+ txt;

      return "#"+ txt;
    }
    function DarkenColor(rgbtext, delta) {
      return LightenColor(rgbtext, delta* -1);
    }
LightenColor('#AF0000', 50);
DarkenColor('#AF0000', 50);
您可以尝试以下方法:

或者您可以尝试以下代码段:

function lighten(color, factor) {
    factor = factor || 0.4;
    var lighter = '#';
    for(var i = 1; i < 6; i += 2) {
        var part = parseInt(color.substr(i, 2), 16);
        part += Math.round((255 - part) * 0.4);
        lighter += (part < 16 ? '0' : '') + part.toString(16);
    }
    return lighter;
}
lighten('#ececec'); // returns '#f4f4f4'
function LightenColor(rgbtext, delta) {
      var r, g, b, txt;
      r= parseInt(rgbtext.substr(1, 2), 16),
      g= parseInt(rgbtext.substr(3, 2), 16),
      b= parseInt(rgbtext.substr(5, 2), 16),

      r+= delta;  if (r> 255) r= 255;  if (r< 0) r= 0;
      g+= delta;  if (g> 255) g= 255;  if (g< 0) g= 0;
      b+= delta;  if (b> 255) b= 255;  if (b< 0) b= 0;
      txt= b.toString(16);       if (txt.length< 2) txt= "0"+ txt;
      txt= g.toString(16)+ txt;  if (txt.length< 4) txt= "0"+ txt;
      txt= r.toString(16)+ txt;  if (txt.length< 6) txt= "0"+ txt;

      return "#"+ txt;
    }
    function DarkenColor(rgbtext, delta) {
      return LightenColor(rgbtext, delta* -1);
    }
LightenColor('#AF0000', 50);
DarkenColor('#AF0000', 50);
或者使用以下代码段:

function lighten(color, factor) {
    factor = factor || 0.4;
    var lighter = '#';
    for(var i = 1; i < 6; i += 2) {
        var part = parseInt(color.substr(i, 2), 16);
        part += Math.round((255 - part) * 0.4);
        lighter += (part < 16 ? '0' : '') + part.toString(16);
    }
    return lighter;
}
lighten('#ececec'); // returns '#f4f4f4'
function LightenColor(rgbtext, delta) {
      var r, g, b, txt;
      r= parseInt(rgbtext.substr(1, 2), 16),
      g= parseInt(rgbtext.substr(3, 2), 16),
      b= parseInt(rgbtext.substr(5, 2), 16),

      r+= delta;  if (r> 255) r= 255;  if (r< 0) r= 0;
      g+= delta;  if (g> 255) g= 255;  if (g< 0) g= 0;
      b+= delta;  if (b> 255) b= 255;  if (b< 0) b= 0;
      txt= b.toString(16);       if (txt.length< 2) txt= "0"+ txt;
      txt= g.toString(16)+ txt;  if (txt.length< 4) txt= "0"+ txt;
      txt= r.toString(16)+ txt;  if (txt.length< 6) txt= "0"+ txt;

      return "#"+ txt;
    }
    function DarkenColor(rgbtext, delta) {
      return LightenColor(rgbtext, delta* -1);
    }
LightenColor('#AF0000', 50);
DarkenColor('#AF0000', 50);

我手头上没有这样的特定代码示例,但这里有一个关于如何使用数学的想法。将0-9设置为它们的值,将A-F设置为10-15,如下所示,您还需要将这些值乘以16,这在一秒钟内就有意义了:

0 : 0 : 0
1 : 1 : 16
2 : 2 : 32
...
A : 10 : 160
B : 11 : 176
C : 12 : 192
...
F : 15 : 240
一旦你有了这个设置,你可以假设你的颜色是十六进制的,把3个分组分开,并将每个分组转换成十六进制的等价物。两个字符中的第一个字符乘以16,第二个字符乘以1:

FF = (16 * 15) + (15 * 1) = 255
AE = (16 * 10) + (14 * 1) = 174
0F = (16 * 0 ) + (15 * 1) = 15
一旦您有了用户选择的颜色的十六进制数,您就可以根据公式将每个十六进制数乘以

下面是一个例子,我用的是浅红色,我想找一个深红色。我的起始十六进制是DB4658,我将把我的值乘以.5,得到我的深红色:

分为3组:DB 46 58 计算每个值的十六进制值:

  D = 13   B = 11   4 = 4   6 = 6   5 = 5   8 = 8
  DB = 219 = 13 * 16 + 11 * 1
  46 = 70 = 4 * 16 + 6 * 1
  58 = 88 = 5 * 16 + 8 * 1
现在,我将它们计算成更暗的十六进制数:

  219 * .5 = 109
  70 * .5 = 35
  88 * .5 = 44
将其转换回我们的3个分组,第一个角色查看您的 在“乘以16”列中生成的表:

  109 = 96 + 13 = 6D
  35 = 32 + 3 = 23
  44 = 32 + 12 = 2C
你现在有了你的深红色

如果您希望对比度更接近,并且他们选择的颜色已经变暗,则可以将.5调整到.75,调整幅度应为1.25倍或1.5倍


希望这对你有所帮助。如果您需要澄清,请让我知道。

我手头上没有这样的特定代码示例,但这里有一个关于如何使用数学的想法。将0-9设置为它们的值,将A-F设置为10-15,如下所示,您还需要将这些值乘以16,这在一秒钟内就有意义了:

0 : 0 : 0
1 : 1 : 16
2 : 2 : 32
...
A : 10 : 160
B : 11 : 176
C : 12 : 192
...
F : 15 : 240
一旦你有了这个设置,你可以假设你的颜色是十六进制的,把3个分组分开,并将每个分组转换成十六进制的等价物。两个字符中的第一个字符乘以16,第二个字符乘以1:

FF = (16 * 15) + (15 * 1) = 255
AE = (16 * 10) + (14 * 1) = 174
0F = (16 * 0 ) + (15 * 1) = 15
一旦您有了用户选择的颜色的十六进制数,您就可以根据公式将每个十六进制数乘以

下面是一个例子,我用的是浅红色,我想找一个深红色。我的起始十六进制是DB4658,我将把我的值乘以.5,得到我的深红色:

分为3组:DB 46 58 计算每个值的十六进制值:

  D = 13   B = 11   4 = 4   6 = 6   5 = 5   8 = 8
  DB = 219 = 13 * 16 + 11 * 1
  46 = 70 = 4 * 16 + 6 * 1
  58 = 88 = 5 * 16 + 8 * 1
现在,我将它们计算成更暗的十六进制数:

  219 * .5 = 109
  70 * .5 = 35
  88 * .5 = 44
将其转换回我们的3个分组,第一个角色查看您的 在“乘以16”列中生成的表:

  109 = 96 + 13 = 6D
  35 = 32 + 3 = 23
  44 = 32 + 12 = 2C
你现在有了你的深红色

如果您希望对比度更接近,并且他们选择的颜色已经变暗,则可以将.5调整到.75,调整幅度应为1.25倍或1.5倍


希望这对你有所帮助。如果您需要澄清,请告诉我。

您可以想出一种类似3D矢量的颜色,在一个角落里有黑色,在确切的位置上有白色:

function color_to_vector(color) {
    return {
        r : parseInt(color.substr(1, 2), 16),
        g : parseInt(color.substr(3, 2), 16),
        b : parseInt(color.substr(5, 2), 16)
    }
}

function vector_to_color(vector){
    return "#"+
        (vector.r < 16 ? '0' : '') + vector.r.toString(16)+
        (vector.g < 16 ? '0' : '') + vector.g.toString(16)+
        (vector.b < 16 ? '0' : '') + vector.b.toString(16);
}
轻一点的

function lighter(color){
    var vector = color_to_vector(color);
    vector.r += (255 - vector.r) / 2;
    vector.g += (255 - vector.g) / 2;
    vector.b += (255 - vector.b) / 2;
    return vector_to_color(vector);
}
蓝色的

function lighter(color){
    var vector = color_to_vector(color);
    vector.b += (255 - vector.b) / 2;
    return vector_to_color(vector);
}

因此。

你可以想象一种像3D矢量一样的颜色,在一个角落里有黑色,在一个确切的位置上有白色:

function color_to_vector(color) {
    return {
        r : parseInt(color.substr(1, 2), 16),
        g : parseInt(color.substr(3, 2), 16),
        b : parseInt(color.substr(5, 2), 16)
    }
}

function vector_to_color(vector){
    return "#"+
        (vector.r < 16 ? '0' : '') + vector.r.toString(16)+
        (vector.g < 16 ? '0' : '') + vector.g.toString(16)+
        (vector.b < 16 ? '0' : '') + vector.b.toString(16);
}
轻一点的

function lighter(color){
    var vector = color_to_vector(color);
    vector.r += (255 - vector.r) / 2;
    vector.g += (255 - vector.g) / 2;
    vector.b += (255 - vector.b) / 2;
    return vector_to_color(vector);
}
蓝色的

function lighter(color){
    var vector = color_to_vector(color);
    vector.b += (255 - vector.b) / 2;
    return vector_to_color(vector);
}

所以。

可能是相关的。@moogoo。谢谢,但我想要的不是免费的配色方案。我把我的问题编辑得更具体一些。“可能是相关的。”穆古。谢谢,但我想要的不是免费的配色方案。我对我的问题进行了更具体的编辑。谢谢,我知道分配黑色或白色文本颜色的算法,但我想要的是能给基础颜色带来不同色调或阴影变化的东西。很棒的东西!我会试一试。谢谢,我知道分配黑色或白色文本颜色的算法,但我想要的是能给基础颜色带来不同色调或阴影变化的东西。很棒的东西!我来试一试。非常感谢你,我从这个问题中得到了一些非常好的答案,很遗憾你只能勾选一个!非常感谢,我从这个问题中得到了一些非常好的答案,很遗憾你只能勾选一个!非常好的回答,你拓宽了我的知识面,非常感谢。非常好的回答,你拓宽了我的视野 知识,非常感谢。