当前位置: 首页 > 知识库问答 >
问题:

我怎样才能创建一种只包含绿色、蓝色、橙色和金色的颜色?

唐修能
2023-03-14

如果知道红色、绿色和蓝色的“权重”,可以使用以下类创建颜色:

.blaRGB {
    color: rgb(128, 128, 128)
}
.blaHSL {
    color: hsl(33%, 34%, 33%)
}

并在HTML中使用它,如下所示:

<p class="blaRGB">BLA RGB</p>
<p class="blaHSL">BLA HSL</p>

对于上面显示的值,blaRGB为暗灰色,blaHSL为白色。

但是,如果一个人想要代表其他颜色的组合,比如绿色、蓝色、橙色和金色,该怎么办?

有没有一种方法可以用下面这样的符号来定义这样的颜色?

.CyndiLauper {
    color: truecolors(24, 13, 11, 12) 
}

或者使用颜色: gbog(24, 13, 11, 12),其中gbog中的字母分别代表绿色、蓝色、橙色和金色?

其目的是通过上面的CSS定义

<p class="CyndiLauper">These are your True Colors, shining through!</p>

将以这四种颜色的加权组合显示文本。

我相信这是可能的使用一些复杂的数学使用绿色,蓝色,橙色和金色的RGB值,但我不知道如何继续。

我意识到这个问题的一个关键组成部分,我最初省略了,是“你说的绿色、蓝色、橙色和金色到底是什么意思?”?

为了回答这个问题,根据官方的“真彩色”网站,并使用ColorZilla浏览器插件,这些颜色的RGB值为:

green = 15, 167, 73
blue = 0, 152, 215
orange = 243, 123, 38
gold = 255, 230, 101

(在我看来,它们实际上更像森林绿、道奇蓝、红橙色和黄色。)

共有3个答案

罗学真
2023-03-14

我想知道答案是否不仅仅是在RGB中“混合”颜色?

var green = [15, 167, 73];
var blue = [0, 152, 215];
var orange = [243, 123, 38];
var gold = [255, 230, 101];

generateTrueColor(greenRatio, blueRatio, orangeRatio, goldRatio){
  for(var i = 0; i < 3, i++){
    RGB[i] = greenRatio * green[i] + blueRatio * blue[i] + orangeRatio * orange[i] + goldRatio * gold[i];
  }
  return RGB;
  for(var i = 0; i < 3, i++){
    if(RGB[i] > 255) RGB[i] = 255;
  }
}

generateTrueColor(1, 0.1, 0.1, 0.1);
田鸿彩
2023-03-14

不,你不能。以下是W3 Css颜色定义的链接,该定义在顶部声明只能使用蓝色、红色和绿色。

编辑:好的,让我澄清一下。从我的理解来看,这是不可能的。然而,您可以使用less和Sass来做一些事情,以达到您想要的结果。这里有一些关于少颜色函数的教程。最有趣的是关于混合颜色的部分:

.box.mix {
    background-color: mix(@blue, @yellow, 50%);
}

不过,你需要对此进行探索,因为我没有这方面的经验。

潘俊楚
2023-03-14

混合颜色的方法有很多,具体取决于您使用的颜色模型:

  • 添加剂混合

下面的代码片段演示了两种混合方法。最左边的列显示四种原始颜色。下一列显示相同的颜色,不透明度为0.25,产生半透明颜色。第三列将半透明颜色层层叠加,这相当于alpha合成。

第四列显示了混合的替代方法。在这里,我们看到了分别平均四种原始颜色中每种颜色的R、G和B分量的结果。

var Colors = {
  names: ['green', 'blue', 'orange', 'gold'],
  values: {
    green: { r: 15, g: 167, b: 73 },
    blue: { r: 0, g: 152, b: 215 },
    orange: { r: 243, g: 123, b: 38 },
    gold: { r: 255, g: 230, b: 101 }
  }
};

Colors.toHex2 = function (decimal) {
  var hex = decimal.toString(16);
  return (hex.length == 1 ? '0'+hex : hex);
};

Colors.toColorString = function (value) {
  var g = Colors,
      toHex2 = g.toHex2;
  var parts = [ '#', toHex2(value.r), toHex2(value.g), toHex2(value.b) ];
  return parts.join('');
};

Colors.load = function () {
  var g = Colors,
      names = g.names,
      values = g.values,
      containers = {
        original: document.getElementById('original'),
        translucent: document.getElementById('translucent'),
        layered: document.getElementById('layered'),
        averaged: document.getElementById('averaged')
      },
      averaged = { r: 0, g: 0, b: 0 };
  document.body.style.paddingTop = 10*(1+names.length) + 'px';
  for (var i = 0; i < names.length; ++i) {
    var name = names[i],
        value = values[name],
        color = g.toColorString(value),
        swatch = document.createElement('div'),
        proportion = 1 / names.length;
    swatch.className = 'swatch';
    swatch.style.backgroundColor = color;
    containers.original.appendChild(swatch);

    swatch = swatch.cloneNode();
    swatch.style.opacity = proportion;
    containers.translucent.appendChild(swatch);

    swatch = swatch.cloneNode();
    swatch.style.height = 60 + 10*(names.length-1) + 'px';
    swatch.style.top = 10*(1+i-names.length) + 'px';
    containers.layered.appendChild(swatch);

    averaged.r += proportion * value.r;
    averaged.g += proportion * value.g;
    averaged.b += proportion * value.b;
  }

  swatch = document.createElement('div');
  swatch.className = 'swatch';
  averaged.r = Math.round(averaged.r);
  averaged.g = Math.round(averaged.g);
  averaged.b = Math.round(averaged.b);
  swatch.style.backgroundColor = g.toColorString(averaged);
  containers.averaged.appendChild(swatch);
};

window.onload = Colors.load;
body {
  font-family: sans-serif;
  font-size: 24px;
  margin: 0;
  padding-left: 20px;
}
.display {
  width: 120px;
  float: left;
}
.swatch {
  width: 100px;
  height: 60px;
  margin-bottom: 10px;
}
.layered {
  position: relative;
  height: 60px;
}
.layered .swatch {
  position: absolute;
}
<div id="original" class="display"></div>

<div id="translucent" class="display"></div>

<div id="layered" class="display layered"></div>

<div id="averaged" class="display"></div>
 类似资料:
  • 有没有一种方法可以轻松地将给定的十六进制颜色代码分配给更一般的类别(红色、绿色、蓝色、黄色、橙色、粉色、黑色、白色、灰色...)? 比如- 编辑:甚至与adobe photoshop类似,找到最接近的网络安全颜色,这样可以将颜色数量减少到256种,这已经是一个很好的解决方案了!

  • 问题内容: 该方法返回单个int。如何分别获得红色,绿色和蓝色作为0到255之间的值? 问题答案: Java的Color类可以进行转换:

  • 关于电子校样颜色 在传统的出版工作流程中,将打印出文档的印刷校样以预览该文档在特定输出设备上还原时的外观。在色彩管理工作流程中,您可以直接在显示器上使用颜色配置文件的精度来对文档进行电子校样。您可以显示屏幕预览来查看文档颜色在特定输出设备上重现时的外观。 请注意,电子校样的可靠性取决于显示器的质量、显示器和输出设备的配置文件以及工作环境的光照条件。 注:使用胶印机打印时,只用电子校样无法让您预览叠

  • 我正在制作一个文本编辑器,我正在使用Pygments来帮助语法高亮显示。当我键入关键字时,比如说,它会变为黄色,good。嗯,当我在后面键入字母时,比如说,,仍然是黄色的,或者如果我退格,或是黄色的。 为什么不变回黑色/清除颜色?有没有高效的方法来做到这一点?我的代码,只是在需要的情况下,如下所示,没有错误,所以我将只包括突出显示功能,即使它本身可能是不需要的。 如果需要的话我会写更多的 这个问题

  • 原文:Specifying Colors 在 matplotlib 的几乎所有地方,用户都可以指定颜色,它可以以如下形式提供: RGB 或者 RGBA 浮点值元组,[0, 1]之间,例如(0.1, 0.2, 0.5)或者(0.1, 0.2, 0.5, 0.3)。 RGB 或者 RGBA 十六进制字符串,例如#0F0F0F或者#0F0F0F0F。 [0, 1]之间的浮点值的字符串表示,用于表示灰度,

  • 问题内容: 所以我有一个带有火山的图像文件。其他所有内容均为0xFFFF00FF(不透明的洋红色)。我想将包含该颜色的每个像素替换为0(透明)。到目前为止,我的方法如下所示: 这工作正常,但似乎很慢。我见过有人以其他方式执行此操作,但是我不知道发生了什么。如果有人知道更好的方法,我非常想听听。 问题答案: 为了避免遍历像素,请更改基础ColorModel。这是一个例子。以下是作者使用原始Buffe