我一直以为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伪元素清除了浮动。其结果是,没有必要隐藏任何生成的内容,并减少所需 的代码量。
相关推荐
1. bootstrap-3.0.0.zip:这个文件包含了Bootstrap框架的所有源代码,包括LESS文件、JavaScript源码和字体图标,适合深入学习和自定义。 2. bootstrap-3.0.0-dist.zip:这个文件是编译后的版本,包含了CSS、JS和图片...
Bootstrap3.0是一款高度流行的前端开发框架,由Twitter开发并维护,它极大地简化了网页设计和响应式布局的实现。这个最新的版本包含了丰富的组件、插件和预定义的样式,适用于构建美观且功能强大的后台管理系统。 ...
《Metronic v1.5.2 - 基于 Bootstrap3.0 的响应式后台管理模板》 Metronic v1.5.2 是一个高度专业且功能丰富的后台管理模板,它充分利用了Bootstrap 3.0 框架的强大功能,为开发者提供了构建现代Web应用程序的强大...
"Unify 模板"是基于Bootstrap 3.0的一款高度通用、响应式的网页模板,专为构建现代、美观且功能丰富的网站而设计。Bootstrap是一个流行的开源前端开发框架,它提供了一系列预先设计的CSS、JavaScript组件和HTML结构...
Bootstrap3.0是Twitter开发的一款开源的前端框架,它极大地简化了网页开发的过程,提供了丰富的预定义样式、组件和JavaScript插件。这个压缩包包含了完整的Bootstrap3.0资源,允许开发者在离线环境下也能正常使用。 ...
Bootstrap 3.0是2013年发布的一个里程碑式的前端框架,由Twitter开发并开源,旨在简化网页设计和开发过程。它以其响应式布局、移动设备优先的设计理念以及丰富的预定义组件而闻名,极大地提高了开发效率。在这个...
Bootstrap 3.0是Twitter推出的一个开源前端框架,用于简化网页开发。它提供了大量的预定义CSS样式、JavaScript组件和响应式设计工具,帮助开发者快速创建美观且适应各种屏幕尺寸的页面。Ace Admin利用Bootstrap 3.0...
ThinkPHP 3.2.3+Bootstrap 3.0进销存系统 数据库文件在 \Public\Data目录下,安装配置就参考THINKPHP,技术小白不要下
在"bootstrap3.0"的压缩包中,我们可以找到以下关键文件: 1. **js** 文件夹:这是包含Bootstrap JavaScript插件和依赖库的目录。其中,核心的Bootstrap JavaScript文件是`bootstrap.js`,它提供了各种交互式的组件...
Bootstrap3.0是一款广受欢迎的前端开发框架,它极大地简化了网页设计和开发流程,尤其在响应式设计和移动优先的策略上表现出色。这款框架由Twitter开发并开源,为开发者提供了丰富的预定义样式、组件和JavaScript...
总的来说,Flatify Bootstrap3.0模板以其丰富的组件、扁平化的设计和响应式的布局,为开发高质量的后台管理系统提供了一个强有力的基础。无论你是前端新手还是经验丰富的开发者,都能从中受益,快速构建出符合现代...
AdminLTE是一款广受欢迎的开源后台...总的来说,"后台管理框架模板AdminLTE + bootstrap3.0.rar"提供了强大的后台界面开发工具,无论你是新手还是经验丰富的开发者,都能从中受益,快速搭建起功能完善的后台管理系统。
Bootstrap 3.0 是一个广泛使用的前端开发框架,由Twitter推出,它极大地简化了网页设计和响应式布局的实现。这个“非常漂亮的后台模板框架”是基于Bootstrap 3.0构建的,旨在为开发者提供一套高效、美观且易于定制的...
下载可以直接运行,一个完整的例子中包含bootstrap3.0里所有的组件和样式,真的非常实用, bootstrap2.x和3有一定的区别,而且现在网上好多教程都是bootstrap2.x的,下载前先看下你bootstrap的版本
本篇文章将详细探讨`LLBootstrapButton`,这是一个专为Swift开发者设计的、基于Bootstrap 3.0风格的扁平化按钮组件,它提供了丰富的图标选项,并且只需一行代码即可轻松集成到项目中。 首先,让我们了解什么是...
Ace Admin Template 1.3 是一个基于Bootstrap 3.0的高效、强大的后台管理界面模板。这个完整版包含了所有必要的组件和功能,旨在为开发者提供一个快速开发后台系统的起点。Ace Admin以其优雅的设计、响应式的布局和...
UIButton-Bootstrap, 带有 Bootstrap 3.0样式的UIButton 正在查找用于 macOS的平面 NSButtons? 查看 FlatButton uibutton引导程序简单的UIButton类别,可以添加漂亮和平坦的Bootstrap 3.0按钮样式。无子类,无图像...
Bootstrap 3.0 是一个广泛使用的前端开发框架,由Twitter公司开发并开源,它极大地简化了网页设计和响应式布局的实现。这个压缩包文件包含了Ace编辑器版本1.2和Bootstrap 3.0.0的集成,为开发者提供了一个功能强大的...
Bootstrap是Twitter推出的一个开源的前端框架,它提供了一套完整的响应式布局、移动设备优先的WEB开发解决方案。Bootstrap包含了一系列预定义的CSS样式、JavaScript组件和HTML5模板,可以快速构建美观且响应式的网站...
`bootstrap-ie7` 这个文件很可能包含了一组专门针对IE7的补丁或者修改,旨在改善Bootstrap 3.0在该浏览器上的表现。这些补丁可能包括了修改过的CSS样式、JavaScript代码,甚至可能是一些专门解决IE7兼容性问题的...