如果(并且只有IF)您有时间可以像我一样做。我保留了我自己的框架修改版本,随着框架的每次更新,我都会阅读文档并检查源代码进行修改。
这个解决方案在初看起来可能听起来不太理想,但我有理由这样做。我不使用其中一个,而是使用许多框架,最佳实践,重置/规范化样式表等等。我总是确信没有任何更新会以任何我看不到的方式改变现有项目。
由于以下原因,我正在使用自己的自定义框架。
我找到了和乔尔一样的解决方案:
的 自定义较少文件 强>
就像上面描述的那样:我为我自定义的所有Less文件创建本地副本:例如:“variables-custom.less”,“alerts-custom.less”,“buttons-custom.less”。所以我可以使用一些标准,并有我自己的补充。缺点是:当Bootstrap更新时,它很难迁移。
但还有别的东西:
的 覆盖样式 强>
在寻找工作流程时,我经常会看到人们建议简单地覆盖样式。因此,首先导入标准的Less文件,然后在底部添加自定义声明。这里的好处是:更新到更新版本更容易。缺点是:编译的CSS文件包含所有覆盖。一些CSS选择器定义了两次。因此浏览器需要进行一些提升以找出实际应用的内容。那不是很干净。
我想知道为什么预处理器不够聪明来解决这样的双重声明?我在这里缺少更好的工作流程吗?
一个更好的(恕我直言)方法是采取提示 Bootswatch github项目叫 swatchmaker 。该项目专门用于构建和管理网站上的数十个Bootstrap主题。
该 Makefile 在项目构建中 swatchmaker.less (你可以将它重命名为类似的东西 customizations.less )。此文件包含一堆导入:
Makefile
swatchmaker.less
customizations.less
@import "bootstrap/less/bootstrap.less"; @import "swatch/variables.less"; @import "swatch/bootswatch.less"; @import "bootstrap/less/utilities.less";
你可以重命名 swatch 文件夹和 bootswatch.less 文件到你认为合适的任何东西。
swatch
bootswatch.less
这是有道理的,因为您可以在不影响自己的文件的情况下升级Bootstrap。事实上, Makefile 还包含获取最新版Bootstrap的命令。有关更多信息,请参阅项目页面上的README。
作为奖励,README还建议您安装 watchr 宝石会在a时自动构建项目 .less 文件更改。
watchr
.less
这也是我一直在努力的事情。一方面,我想用我自己的颜色和设置高度自定义variables.less文件。另一方面,我想尽可能地更改Bootstrap文件以简化升级过程。
我的解决方案(目前)是创建一个addon LESS文件并将其插入到 bootstrap.less 导入变量和mixin后的文件。所以像这样:
bootstrap.less
... // CSS Reset @import "reset.less"; // Core variables and mixins @import "variables.less"; // Modify this for custom colors, font-sizes, etc @import "mixins.less"; // Custom Addons @import "addon-file.less"; // <--- My custom LESS addon // Grid system and page structure @import "scaffolding.less"; ...
这样,如果我想重置Bootstrap颜色,字体或添加额外的mixin我可以。我的代码是独立的,但将在其余的Bootstrap导入中编译。它并不完美,但它是一个对我有用的权宜之计。
只需添加 @import "../../styles.less"; (或者你的样式表在哪里)bootstrap.less在底部。这允许你使用像Bootstrap mixins .gradient 要么 .border-radius 在你自己的style.less里面。
@import "../../styles.less";
.gradient
.border-radius
在我身边,我只有一个名为的文件 theme.less 进口的 boostrap.less 在它中,我刚刚覆盖(即使使用LESS似乎很糟糕,但更好,维护更容易)变量值我不想更新。
theme.less
boostrap.less
这适用于具有变量的自定义值 variables.less
variables.less
之后我编译我的 theme.less 而是关闭文件 bootstrap.less
的 例 theme.less : 强>
@import "path/to/my/bootstrap.less"; @linkColor: #MyAwesomeColor;
我的解决方案类似于jstam,但我尽可能避免对源文件进行更改。鉴于对bootstrap的更改将经常发生,我希望能够通过将我的修改保存在单独的文件中来下载最新的源并进行最小的更改。当然,它并不完全是防弹。
将bootstrap.less和variables.less复制到父目录。将bootstrap.less重命名为theme.less或任何你想要的。您的目录目录结构应如下所示:
/Website theme.less variables.less /Bootstrap ...
更新theme.less中的所有引用以指向引导子目录。确保您的variables.less是从父级而不是引导程序目录引用的,如下所示:
... // CSS Reset @import "bootstrap/reset.less"; // Core variables and mixins @import "variables.less"; // Modify this for custom colors, font-sizes, etc @import "bootstrap/mixins.less"; // Grid system and page structure @import "bootstrap/scaffolding.less"; @import "bootstrap/grid.less"; @import "bootstrap/layouts.less";
...
在包含它们之后立即在theme.less文件中添加CSS覆盖。
... // Components: Nav @import "bootstrap/navs.less"; @import "bootstrap/navbar.less"; // overrides .navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { border-radius: 0 0 0 0; padding: 10px; } .nav-tabs, .nav-pills { text-transform: uppercase; } .navbar .nav > li > a { text-shadow: none; } ...
链接到theme.less而不是HTML页面中的bootstrap.less。
每当新版本发布时,您的更改应该是安全的。每当新版本发布时,您还应该在自定义引导程序文件之间进行区分。变量和进口可能会发生变化。