0

我需要在网站上实现主题(用 ASP.net MVC 制作)。

这个想法是用户选择一种颜色(基色),我必须从中生成:

  • 悬停状态颜色(浅 40%)
  • 按下状态颜色(浅 20%)
  • 较深的颜色(深 20%)

我试图进行实施,但我意识到这无法正常工作。

如果用户使用较浅的颜色,则悬停状态将变得几乎不可见。

搜索互联网我发现这个链接似乎是我正在寻找的,但我找不到一个真实的例子。

是否有任何项目或示例可以实现我想要实现的目标?

4

3 回答 3

2

您可以使用 JavaScript 在客户端执行此操作。

建议方法:

  1. 使用 RGB 值选择基色。
  2. 将 RGB 转换为 HSL
  3. 增加和减少 HSL 亮度
  4. 将 HSL 转换回 RGB
  5. 将 RGB 转换为与 CSS 兼容的十六进制并在您的主题中使用。

要进行 HSL / RGB 转换,您可以使用以下命令:

http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript

这是一个示例,您可以修改以将 RGB 值转换为十六进制

如何在 JavaScript 中将十进制转换为十六进制?

这里也是关于颜色的 W3Schools 页面。也许与您的问题没有直接关系,但可能仍然有用

http://www.w3schools.com/cssref/css_colors.asp

于 2012-10-05T14:19:17.407 回答
1

诀窍是不要让用户从完整的 RGB 空间中选择随机颜色。相反,让他们只通过色调选择一种基色,并为自己设置饱和度和亮度。该类Color本身已经具有检索这些值的方法,但缺乏从这些值创建颜色的支持。这可以通过这个答案来实现。

使用这种方法,您只需让用户只选择基色,这样您就可以确保可以使用较浅和较深的颜色。在配色方案设计器(您可能已经知道)中可以看到如何做到这一点的令人印象深刻的方法。他们也只能在第一步中选择色调。

于 2012-10-05T14:24:23.373 回答
0

尽管下面的示例有效,但您需要对颜色的数学有一些了解才能使其正常工作(如果颜色太亮、太暗、什么是色相等等)。

我找到了另一种方法,这正是我所需要的。这是链接

它将基色与不透明度为 50% 的白色混合,使颜色更浅。

于 2012-10-08T10:02:03.480 回答