Javascript 可定制/主题化用户界面

Javascript 可定制/主题化用户界面,javascript,html,css,angularjs,customization,Javascript,Html,Css,Angularjs,Customization,我想为我的用户提供定制网站外观和感觉的能力 我给他们一个颜色选择器来选择颜色方案。我想动态生成一些匹配的颜色并应用它们 我的问题是: 1.)如何根据所选颜色生成配色方案?(一些匹配颜色和背景对比色) 2.)实现主题化界面的最佳实践是什么 我正在编写一个AngularJS SPA应用程序,使用纯HTML和RESTAPI作为后端 现在我要回答第二个问题,我正在检索颜色设置并将其应用于身体 <body style="background:color:{{bgcolor}}; color:{{fg

我想为我的用户提供定制网站外观和感觉的能力

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

我的问题是:

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

2.)实现主题化界面的最佳实践是什么

我正在编写一个AngularJS SPA应用程序,使用纯HTML和RESTAPI作为后端

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

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


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

你可以像上面那样使用ngStyle来实现这一点。。。但正如你所说,它不是很优雅

简单的事实是,除了ngStyle指令本身之外,AngularJS本身并没有任何东西真正用于解决这个问题。然而,虽然我还没有看到这方面的“最佳实践”,但您可能会从Drupal的“颜色”模块中获得一些想法,它是Drupal的基础/核心模块之一。你可以很容易地在角上做同样的事情

这样做的目的是回到样式表,我假设您跳过了它,因为它似乎不是一个明显的动态解决方案。但他们有一个聪明的答案。在一段代码中,用户选择一种颜色后,会写出一个样式表,其文件名具有唯一的ID。他们将这些文件放在保存其他用户上传资产的目录中,这样它们就不会与核心站点代码混合(最大限度地减少潜在的攻击向量)。然后他们只需要在页面中使用一个简单的规则来包含样式表本身


您可以使用Angular轻松地模拟所有这些,当然,您需要服务器的帮助。但它的好处是它更容易维护。样式表可以完全按照预期的方式工作:使用类来针对特定元素,而不必到处“散布”ngStyle指令(一个针对您想要设置样式的所有内容),并且可能与您想要在其中一些元素上执行的其他操作发生冲突。您可以制作一个易于维护的模板样式表,因此这是一个自然的适合。。。最棒的是,可以轻松地将所有内容连接起来。

您可以提供一个由服务器生成的带有自定义颜色的css,但为什么不提供2-3种颜色方案呢?允许选择任何颜色可能是一个相当麻烦的代码。