我想为我的用户提供自定义网站外观的功能。

我给他们一个颜色选择器以选择一种配色方案。我想动态生成一些匹配的颜色并应用它们。

我的问题是:

1.)我如何根据所选颜色生成配色方案? (一些匹配的颜色和背景的对比色)

2.)实现可界面的最佳实践是什么?

我正在用REST API作为后端编写带有纯HTML的AngularJS SPA应用程序。

现在,对于第二个问题,我正在检索颜色设置并将其应用于身体。

<body style="background:color:{{bgcolor}}; color:{{fgcolor}}">


我正在寻找更优雅的东西。

最佳答案

您可以像上面一样使用ngStyle进行此操作...但是正如您指出的那样,它不是很优雅。

一个简单的事实是,除了ngStyle指令本身以外,AngularJS本身中没有任何其他东西可以真正解决这个问题。但是,尽管我还没有完全看到“最佳实践”,但是您可能会从Drupal的“颜色”模块中获取一些想法,该模块是其基本/核心模块之一。您可以很轻松地在Angular中执行相同的操作。

这样做是回到样式表,我假设您跳过了样式表,因为它似乎不是动态事物的明显解决方案。但是他们有一个聪明的答案。在一段代码中,用户选择一种颜色之后,他们写出一个样式表,该样式表的文件名具有唯一的ID。他们将这些文件放置在保留其他用户上传资产的目录中,因此它们不会与核心站点代码混合在一起(以最小化潜在的攻击媒介)。然后,他们只需要页面中的简单规则即可包含样式表本身。

尽管当然需要服务器的帮助,但是您可以使用Angular轻松地模拟所有这些。但是,这样做的好处是您可以更轻松地进行维护。样式表可以完全按照预期的方式工作:使用针对特定元素的类。您可以制作一个易于维护的模板样式表,这是很自然的事情……而最好的部分是,很容易将所有内容连接起来。

09-16 16:18