少 bootstrap 个主题

Less bootstrap theme

我们在项目中使用bootstrap。我们为 bootstrap 购买了一个定制主题,围绕它创建了一个漂亮的自定义样式,并添加了我们在项目中使用的许多有用样式。此主题使用 LESS。

现在我们的每个客户都希望为他们的网站定制一个配色方案。通过简单地改变一些LESS变量,我们可以生成完全不同的外观。

例如:

@import "../../theme/style.less";
@import "../../shared.less";

// Basic Colors
@navy: #781d7e;       // Primary color
@dark-gray: #c2c2c2;  // Default color
@blue: #8dc63f;       // Success color
@lazur: #00aedb;      // Info color
@yellow: #f7941e;     // Warrning color
@red: #ed1c24;        // Danger color

这会生成一个包含所有样式的完整 css 文件。每个客户端都有自己的一组生成 .css 文件。我们的问题是每次我们进行更改时编译这些都需要很长时间。

我们如何使用 LESS 拥有一个基本主题并仅生成 classes 覆盖,这些覆盖需要修改使用修改变量的值?

例如,如果 btn-primary background-color 是@navy,那么对于一个新的配色方案,我只需要一个 css 文件,其中包含一个 class 覆盖 .btn-primary 改变背景-color 到@navy 的新值。这甚至可以用 LESS 实现吗?

谢谢,

请参阅我对类似问题的回答,这可能有助于解决您的问题。

如果您使用 MVC 4 或更高版本,您可以使用 BundleTransformer 来编译您的 LESS 服务器端。

这取决于您希望如何提供文件。如果您知道 运行 时间的所有客户端 url,那么只需为每个客户端添加一个包 url 到包配置。如果您不这样做并且客户端是 flexible/dynamic 就像我们的情况一样,那么添加一个控制器操作来处理动态主题。

我扩展了我们的原始用例并创建了一种包含主题的更可重用的方式。

演示站点在这里:http://bundletransformer-theme-builder.azurewebsites.net/

GitHub 回购:https://github.com/benembery/bundle-transformer-theme-builder