`
zzc1684
  • 浏览: 1222637 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

bootstrap 3.0 LESS源代码浅析(一)

阅读更多

我一直以为Bootstrap的LESS源代码精髓在mixins.less,所以这个系列主要也是讲解mixins.less的。

 

什么是mixins?

混入,或者翻译成混合。官网的说法是:我们可以定义一些通用的属性集为一个 class,然后在另一个 class 中去调用这些属性。

看起来非常难理解,没事,我们来看例子,比如有这样一个class:

.bordered {
    border-top: dotted 1px black;
    border-bottom: solid 2px black;
}

那如果我们现在需要在其他 class 中引入那些通用的属性集,那么我们只需要在任何 class 中像下面这样调用就可以了:

复制代码
#menu a {
    color: #111;
    .bordered;
}
.post a {
    color: red;
    .bordered;
}
复制代码

编译后,.bordered class 里面的属性样式都会在 #menu a 和 .post a 中体现出来:

复制代码
#menu a {
    color: #111;
    border-top: dotted 1px black;
    border-bottom: solid 2px black;
}
.post a {
    color: red;
    border-top: dotted 1px black;
    border-bottom: solid 2px black;
}
复制代码

在 LESS 中,我们还可以还可以像函数一样定义一个带参数的属性集合:

.border-radius (@radius) {
    border-radius: @radius;
    -moz-border-radius: @radius;
    -webkit-border-radius: @radius;
}

然后在其他 class 中像这样调用它:

复制代码
#header {
    .border-radius(4px);
}
.button {
    .border-radius(6px);
}
复制代码

如果想详细了解混入,请查看官方文档:http://www.lesscss.net/article/document.html

 

举个栗子

Bootstrap 3.0中有许多有用的混入函数,第一个无疑是clearfix函数。clearfix是用来清除浮动的。

但是,为什么要清除浮动呢?

如果父元素只包含浮动元素,那么它的高度就会塌缩为零。 形象的说,既然是浮动元素,那么其父级元素就觉得他们都是飘在我上面的玩意,没有占据我的空间,所以高度就塌陷为零了。这时候我们清除浮动,告诉父级元素,你需要包含这些浮动的元素,然后他就被撑开了。

常见的清除浮动技术是这样的:

复制代码
.clearfix:after {
  content: ".";
  display: block;
  height: 0;
  visibility: hidden;
  clear: both;
}
.clearxi {
  *zoom: 1;
}
复制代码

不过Boostrap的更容易记:

复制代码
.clearfix() {
  &:before,
  &:after {
    content: " "; /* 1 */
    display: table; /* 2 */
  }
  &:after {
    clear: both;
  }
}
复制代码

如果要兼容IE6和IE7则加上:

.clearfix {
  *zoom: 1;
}

值得注意Bootstrap使用的技术不支持Firefox 3.5以下版本。

 

clearfix基本原理

远古时代,我们使用一个隐藏的元素进行清除浮动。但自从伪类选择器:after和:before出现后,我们可以通过content来悄悄的在子元素后端,或者前端插入元素,并将其设为clear: both。

:after

:after 选择器在被选元素的内容后面插入内容。

请使用 content 属性来指定要插入的内容。

:before

:before 选择器在被选元素的内容前面插入内容。

请使用 content 属性来指定要插入的内容。

 

怎么混入?

我们来看看Bootstrap中的例子:

// Panel contents
.panel-body {
  padding: 15px;
  .clearfix();
}

为了防止panel塌陷,Bootstrap使用.clearfix()混入函数对.panel-body处理,编译后如下:

复制代码
.panel-body {
  padding: 15px;
}

.panel-body:before,
.panel-body:after {
  display: table;
  content: " ";
}

.panel-body:after {
  clear: both;
}
复制代码

完成收工!

 

该方案原作者的解释

这种clearfix方案,生成了两个伪元素,并将其display设置成table。这将创建一个匿名的table-cell和一个 新的块状区域,这意味着::before伪元素阻止了顶部边缘塌陷。而:after伪元素清除了浮动。其结果是,没有必要隐藏任何生成的内容,并减少所需 的代码量。

分享到:
评论

相关推荐

    bootstrap 3.0 完整版带帮助文档

    1. bootstrap-3.0.0.zip:这个文件包含了Bootstrap框架的所有源代码,包括LESS文件、JavaScript源码和字体图标,适合深入学习和自定义。 2. bootstrap-3.0.0-dist.zip:这个文件是编译后的版本,包含了CSS、JS和图片...

    一套最新版本的Bootstrap3.0后台管理模板

    Bootstrap3.0是一款高度流行的前端开发框架,由Twitter开发并维护,它极大地简化了网页设计和响应式布局的实现。这个最新的版本包含了丰富的组件、插件和预定义的样式,适用于构建美观且功能强大的后台管理系统。 ...

    Metronic v1.5.2 –基于 Bootstrap3.0 的响应式后台管理模板

    《Metronic v1.5.2 - 基于 Bootstrap3.0 的响应式后台管理模板》 Metronic v1.5.2 是一个高度专业且功能丰富的后台管理模板,它充分利用了Bootstrap 3.0 框架的强大功能,为开发者提供了构建现代Web应用程序的强大...

    Unify template bootstrap 3.0网页模板

    "Unify 模板"是基于Bootstrap 3.0的一款高度通用、响应式的网页模板,专为构建现代、美观且功能丰富的网站而设计。Bootstrap是一个流行的开源前端开发框架,它提供了一系列预先设计的CSS、JavaScript组件和HTML结构...

    Bootstrap3.0预定义样式

    Bootstrap3.0是Twitter开发的一款开源的前端框架,它极大地简化了网页开发的过程,提供了丰富的预定义样式、组件和JavaScript插件。这个压缩包包含了完整的Bootstrap3.0资源,允许开发者在离线环境下也能正常使用。 ...

    bootstrap 3.0

    Bootstrap 3.0是2013年发布的一个里程碑式的前端框架,由Twitter开发并开源,旨在简化网页设计和开发过程。它以其响应式布局、移动设备优先的设计理念以及丰富的预定义组件而闻名,极大地提高了开发效率。在这个...

    最新国外极品后台管理系统模板ace admin v1.3,多种开发语言可用,HTML5+Bootstrap3.0源码.rar

    Bootstrap 3.0是Twitter推出的一个开源前端框架,用于简化网页开发。它提供了大量的预定义CSS样式、JavaScript组件和响应式设计工具,帮助开发者快速创建美观且适应各种屏幕尺寸的页面。Ace Admin利用Bootstrap 3.0...

    ThinkPHP 3.2.3+Bootstrap 3.0进销存系统

    ThinkPHP 3.2.3+Bootstrap 3.0进销存系统 数据库文件在 \Public\Data目录下,安装配置就参考THINKPHP,技术小白不要下

    bootstrap3.0,轮播图框架

    在"bootstrap3.0"的压缩包中,我们可以找到以下关键文件: 1. **js** 文件夹:这是包含Bootstrap JavaScript插件和依赖库的目录。其中,核心的Bootstrap JavaScript文件是`bootstrap.js`,它提供了各种交互式的组件...

    Bootstrap3.0

    Bootstrap3.0是一款广受欢迎的前端开发框架,它极大地简化了网页设计和开发流程,尤其在响应式设计和移动优先的策略上表现出色。这款框架由Twitter开发并开源,为开发者提供了丰富的预定义样式、组件和JavaScript...

    Flatify_Bootstrap3.0_模板

    总的来说,Flatify Bootstrap3.0模板以其丰富的组件、扁平化的设计和响应式的布局,为开发高质量的后台管理系统提供了一个强有力的基础。无论你是前端新手还是经验丰富的开发者,都能从中受益,快速构建出符合现代...

    后台管理框架模板AdminLTE + bootstrap3.0.rar

    AdminLTE是一款广受欢迎的开源后台...总的来说,"后台管理框架模板AdminLTE + bootstrap3.0.rar"提供了强大的后台界面开发工具,无论你是新手还是经验丰富的开发者,都能从中受益,快速搭建起功能完善的后台管理系统。

    BootStrap 3.0 非常漂亮的后台模板框架

    Bootstrap 3.0 是一个广泛使用的前端开发框架,由Twitter推出,它极大地简化了网页设计和响应式布局的实现。这个“非常漂亮的后台模板框架”是基于Bootstrap 3.0构建的,旨在为开发者提供一套高效、美观且易于定制的...

    bootstrap3.0实用组件完整版demo

    下载可以直接运行,一个完整的例子中包含bootstrap3.0里所有的组件和样式,真的非常实用, bootstrap2.x和3有一定的区别,而且现在网上好多教程都是bootstrap2.x的,下载前先看下你bootstrap的版本

    swift-LLBootstrapButton-Bootstrap3.0扁平化风格按钮

    本篇文章将详细探讨`LLBootstrapButton`,这是一个专为Swift开发者设计的、基于Bootstrap 3.0风格的扁平化按钮组件,它提供了丰富的图标选项,并且只需一行代码即可轻松集成到项目中。 首先,让我们了解什么是...

    ace admin template 1.3 完整版 bootstrap3.0

    Ace Admin Template 1.3 是一个基于Bootstrap 3.0的高效、强大的后台管理界面模板。这个完整版包含了所有必要的组件和功能,旨在为开发者提供一个快速开发后台系统的起点。Ace Admin以其优雅的设计、响应式的布局和...

    UIButton-Bootstrap, 带有 Bootstrap 3.0样式的UIButton.zip

    UIButton-Bootstrap, 带有 Bootstrap 3.0样式的UIButton 正在查找用于 macOS的平面 NSButtons? 查看 FlatButton uibutton引导程序简单的UIButton类别,可以添加漂亮和平坦的Bootstrap 3.0按钮样式。无子类,无图像...

    bootstrap3.0

    Bootstrap 3.0 是一个广泛使用的前端开发框架,由Twitter公司开发并开源,它极大地简化了网页设计和响应式布局的实现。这个压缩包文件包含了Ace编辑器版本1.2和Bootstrap 3.0.0的集成,为开发者提供了一个功能强大的...

    响应式网页开发基础教程(jQuery+Bootstrap)-源代码.rar

    Bootstrap是Twitter推出的一个开源的前端框架,它提供了一套完整的响应式布局、移动设备优先的WEB开发解决方案。Bootstrap包含了一系列预定义的CSS样式、JavaScript组件和HTML5模板,可以快速构建美观且响应式的网站...

    bootstarp 3.0兼容ie7

    `bootstrap-ie7` 这个文件很可能包含了一组专门针对IE7的补丁或者修改,旨在改善Bootstrap 3.0在该浏览器上的表现。这些补丁可能包括了修改过的CSS样式、JavaScript代码,甚至可能是一些专门解决IE7兼容性问题的...

Global site tag (gtag.js) - Google Analytics