如何更高效地定制你的bootstrap

bootstrap已经做为前端开发必不可少的框架之一,应用bootstrap使得咱们对布局、样式的设定变得很是简单。

但bootstrap提供的默认样式每每不能知足咱们的需求,从而定制化bootstrap成为咱们常常须要作的工做,本文就如何更高效更可维护地定制bootstrap作一下探讨。


 

以下图,在你的button 中加入bootstrap的class: btn btn-primary,就能够将默认的button(左边)变成右边的样式。css

bootstrap button

可若是咱们想应用本身的样式呢?好比咱们想要拥有圆角的button。前端

一般,咱们能够直接覆盖bootstrap的样式。

咱们在本身的项目目录下新建my-custom.css文件,加入以下代码:git

.btn {
   -webkit-border-radius: 20px;
   -moz-border-radius: 20px;
   border-radius: 20px;
}

 

 将my-custom.css文件引用放到bootstrap.css文件后面,咱们定义的btn样式就会覆盖原有的样式(注:这里的‘覆盖’指的是增量叠加式的覆盖)。github

<link rel="stylesheet" href="boostrap.css">
<link rel="stylesheet" href="my-custom.css">

 

但这种方法有它的优缺点,web

优势:不会改变你的工做流程。你能够快速直接修改你的样式,即便是你的网站引用了其余的相似bootstrap的框架样式,你均可以在同一个地方进行统一的定制。bootstrap

缺点:可是对于更完全的修改(好比从新设计导航栏)或是非局部的修改(好比修改适用于整个网站的高亮颜色)来讲,这样东一块,西一块的覆盖样式更像是一种打补丁式的解决方案。并且你的新样式要添加到Bootstrap的默认样式表里,让本已经100 KB的文件愈加臃肿。若是你不只仅想要作一些覆盖,那就要考虑一种更具扩展性的方法了。sass

另外一种方法是生成一个自定义构建的bootstrap。

咱们可使用官方的构建器,你能够对bootstrap中样式变量进行自定义。以下图所示:app

bootstrap 是基于less定制的,若是你不熟悉less语法,建议到其官网(http://lesscss.org/)学习一下,很简单,了解并学会使用它用不了多长时间。框架

定制好你的变量后点击download按钮就会生成一套属于你的bootstrap框架了。同时,网上还有不少相似定制bootstrap的网站,若是你不习惯官网的能够去这其它的网站试试,好比Bootswatchr网站使用变量来组织,而StyleBootstrap则使用组件。BootTheme添加了扔骰子特性来随机设置值。若是幸运女神不站在你这边,Lavish可以根据你提供的任何图片来生成一个主题,PaintStrap则是根据已有的配色方案来生成。less

固然,这种方法也有它的优缺点,

优势:相比上一种方法,它简便了你对总体网站的修改。

缺点:首先你很难一开始就肯定网站全部的样式风格,固然你能够在肯定好了后再生成一个最终版本。因此这就引入一个问题,若是你还要时不时更换你的样式,你一样须要找到bootstrap样式源文件编辑,你可能还要用到第一种方法,好比我要使用圆角的带阴影的button,光定制就不能知足个人需求,再者,若是面对bootstrap升级的问题,你还须要从新根据你的样式构建一个新版本的bootstrap,这样要真的作起来,会很是的麻烦。

最后一种方法是深度定制bootstrap less

首先得到bootstrap的源码

打开源码,你会发现Bootstrap的样式是用LESS而不是CSS写的。LESS 是一种动态样式表语言,相比于CSS,它支持多种优秀特性,包括选择器嵌套,建立变量(就像在上面生成器中使用的)。一旦写完,你能够选择将LESS代码预先或在运行时编译成 CSS。若是你喜欢 Sass,可使用这个适用于Sass的Bootstrap

在 less 文件夹中,你会看到许多按照组件来划分的 LESS 文件。

bootstrap less

咱们打开bootstrap.less文件看看里面写的是什么:

View Code

 

实际上,bootstrap是经过编译bootstrap.less这一个文件而生成整个bootstrap.css文件的。咱们看到bootstrap.less的做用仅仅是引入其余文件。这样,咱们定制化的工做就好办了。

如下这些文件是你要注意的:

bootstrap.less:
这个是核心文件。它用来引入其余文件,最终由你来编译它。
reset.less:
始终是最早引入的文件。
variables.less 和 mixins.less:
这两个文件老是同时出现,由于其余文件都依赖于它们。前一个文件包含了在生成器网站上使用的相同的变量。
utilities.less
这个文件老是最后引入,你能够把想要覆盖的类写到这里。

咱们定制的思路就是,找到咱们须要定制的组件和相对应的变量,对其修改,而后编译成咱们本身的bootstrap.css便可。

下面讲讲具体实现方法。

确保你已经安装好Less, 为了避免让咱们修改的内容与原始文件重合在一块儿,咱们须要模块化的修改。

首先下载bootstrap源码,下载后就不须要对其作任何的改动了。咱们单独创建一个文件夹(文件目录只要能引用到bootstrap的less文件就能够),取名为custom-bootstrap,其中包含如下三个文件:

custom-variables.less:

这个文件包含你要定制的变量。

custom-other.less:

这个文件中包含了那些没法经过修改变量完成定制的内容,好比增长或禁用button的text-shandow属性。

custom-bootstrap.less

这是新的「核心」文件。咱们将把它编译成CSS。与原始的 LESS文件同样,它使用下面的命令来引入上面那两个自定义文件(记住要保证文件正确的引用顺序)

1 @import "../bootstrap/less/bootstrap.less"; //这个引用到原有的bootstrap文件
2 @import "custom-variables.less"; 
3 @import "custom-other.less";   
4 @import "../bootstrap/less/utilities.less"; //咱们一样要引用原生的utilities.less,由于咱们要保证该文件始终最后一个被导入

 

这时,咱们只要编译custom-bootstrap.less就能够了。

有一些须要注意的是,custom-variables.less 不须要拷贝原有文件的全部内容,只须要拷贝和你要定制的组件相关的变量就能够了,若是你这样作了,单独编译custom-variables.less或custom-other.less会提示缺乏变量定义的错误,但这不要紧,你只要保证编译custom-bootstrap.less没有错误就能够了。

 

这种方法的优势在于,将定制的变化与原有库代码很好的隔离,却又不失可维护性。即便从此升级bootstrap版本,咱们也不要担忧从新构建样式框架了。


 

写于最后:

如何更高效的定制bootstrap还有一点须要注意的就是,你要理解bootstrap组织代码的方式以及若是更高效的书写Less。

下面的这些文章可能会帮助到你:

CSS Frameworks + CSS Reset: Design From Scratch

Challenging CSS Best Practices

An Introduction To Object Oriented CSS (OOCSS)

 

参考文章:http://coding.smashingmagazine.com/2013/03/12/customizing-bootstrap/

相关文章
相关标签/搜索