Javascript/jqueryplugin-to-Plugin更改边框颜色,相对于元素的背景颜色
在我的应用程序中,我希望用户为日历上显示的元素选择一种基本颜色。从用户选择的基础颜色,我需要能够自动设置适当的边框颜色和适当的文本颜色 当我指的是适当的时候,我指的是较深的色调或边框的阴影变化 是否有任何jquery插件已经做到了这一点,或者确实还有其他javascript库的插件 如果没有,人们能否就如何进行计算提供建议?我在色彩理论方面没有多少经验 谢谢。您可以试试这个: 或者您可以尝试以下代码段:Javascript/jqueryplugin-to-Plugin更改边框颜色,相对于元素的背景颜色,javascript,jquery,css,colors,Javascript,Jquery,Css,Colors,在我的应用程序中,我希望用户为日历上显示的元素选择一种基本颜色。从用户选择的基础颜色,我需要能够自动设置适当的边框颜色和适当的文本颜色 当我指的是适当的时候,我指的是较深的色调或边框的阴影变化 是否有任何jquery插件已经做到了这一点,或者确实还有其他javascript库的插件 如果没有,人们能否就如何进行计算提供建议?我在色彩理论方面没有多少经验 谢谢。您可以试试这个: 或者您可以尝试以下代码段: function lighten(color, factor) { factor =
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。谢谢,但我想要的不是免费的配色方案。我把我的问题编辑得更具体一些。“可能是相关的。”穆古。谢谢,但我想要的不是免费的配色方案。我对我的问题进行了更具体的编辑。谢谢,我知道分配黑色或白色文本颜色的算法,但我想要的是能给基础颜色带来不同色调或阴影变化的东西。很棒的东西!我会试一试。谢谢,我知道分配黑色或白色文本颜色的算法,但我想要的是能给基础颜色带来不同色调或阴影变化的东西。很棒的东西!我来试一试。非常感谢你,我从这个问题中得到了一些非常好的答案,很遗憾你只能勾选一个!非常感谢,我从这个问题中得到了一些非常好的答案,很遗憾你只能勾选一个!非常好的回答,你拓宽了我的知识面,非常感谢。非常好的回答,你拓宽了我的视野 知识,非常感谢。