Bootstrap定制(二)less基础语法
前几日花了一天去看less,这几日在捣鼓其他东西,项目也在有序的进行中,今天花点时间整理下less的基础语法,也分享实际中的一些经验,与众人共享。
本篇笔者以less的基础语法着手,并配合bootstrap的逻辑结构给大家梳理下less的语法,方便以后实战中快速开发。
1.变量
与许多后台编辑语法类似,less也有着自己的变量,不过less中的变量更确切来说是一种常量,一次赋值永不改变。
@font-size:14px;
p{font-size:@font-size}
-->p{font-size:14px}
前面说过,bootstrap源码的variables.less文件定义了所有的变量,其他组件对应的less文件使用了其定义的变量,方面统一管理。
variables.less如下所示,假如我们想简单的定制bootstrap,修改少许变量定义就可以了。
2.注释
less的注释与许多后台语言相同。
行注释://xxxx
块注释:/*xxxx
xxxx*/
3.导入
@import "xxx";
@import语法导入其他文件,如定义好的变量,bootstrap就充分的利用了这一点,我们来看bootstrap.less源码。
bootstrap这个文件前面有说过,引入了所有的less文件,最后直接编译这个文件即可。
看源码就可以看出,首先引用的是variables.less,这是所有变量的定义。
其次引入mixins.less,mixins.less中又导入了所有的混合函数定义,这在后面的组件less中都有用到。
这就相当于c#等后台语言首先导入类库一般。
4.混合
.border{
border:1px solid solid;
}
.header{
height:200px;
.border;
}
-->.header{
border:1px solid solid;
height:200px;
}
混合的最大好处在于你不用一遍又一遍写着重复的样式了,可以随便引用。
5.嵌套
.header{
xxx;
.header-body{
xxx1;
}
.header-footer{
xxx2;
}
&:hover{
xxx3;
}
}
-->
.header{xxx}
.header .header-body{xxx1}
.header .header-footer{xxx2}
.header:hover{xxx3}
聪明的大概可以看出来 '&'的作用了吧,&代表父选择器,相当去jquery中的.parent()方法。
嵌套在bootstrap中随处可见,下面是.btn 按钮样式的示例。
5.媒体查询
bootstrap很成功很大一部分原因在于其对相应式的支持,而这离不开媒体查询。
@media(min-width>768px){
ssss;
}
@media(min-width>970px){
ssss;
}
grid.less应对不同屏幕的混合属性也有所不同。
如下图所示。
6.函数
同所有编程语言相同的是,less也有着自己的函数库。
例如:
darken(@color,@amout)//降低一定数值的色彩亮度
参数:
@color
: 颜色对象(A color object)@amount
: 百分比 0-100%
返回值: 颜色(color)
例如bootstrap默认链接hover样式是降低了15%的亮度。
如图所示。
7.运算
任何数值,颜色和变量都可以进行运算。这里有一对示例:
@base: 5%;
@filler: @base * 2;//乘法
@other: @base + @filler;//加法
color: #888 / 4;//除法
background-color: @base-color + #111;
height: 100% / 2 + @filler;//综合运算
less运算的另一个特点是可以自动推算出单位,这个是很多后台编程语言所没有的特性,值得点赞。
@var: 1px + 5;
在这个例子中 Less 会在最终输出结果中使用这个单位 -- 6px
bootstrap中一个典型的应用就是,各种屏幕终端设备宽度等于定义宽度+网格流宽度,而这个网格流宽度,则会当作左右内边距来使用。
8.命名空间
#bundle {
.button {
display: block; border: 1px solid black; background-color: grey; &:hover { background-color: white }
}
.tab { ... }
.citation { ... }
}
现在我们想在 #header a
中混合 .button
类。
一些同学是不是想到了前面说过的混合了呢,但是这里牵扯到命名空间问题,与c#等语言类库中的方法相同,两个类库中可能定义这相同的方法,这个时候就要通过命名空间来区分了,说的又有点向java的打包了。
好吧,这个时候我们该这么去使用。
#header a {
color: orange;
#bundle > .button;
}
9.作用域
这个相当于c#之类语言中的成员变量和局部变量了,熟悉之类语言的可以跳过这个知识点了。
@var: red;
#page {
@var: white;
#header {
color: @var; // 这个时候#header 的color属性是white
}
}
在bootstrap中常用的大概是1--7点,后面两点有点鸡肋。
当然这9点只是less最基础的语法,如果想凭这些去定制比较好的bootstrap主题还是不够的,但是基础简单的修改还是可以得心应手了。
晚上运动点有点大,天气热的很,熬到这个点有点小累了,所以有些例子用了官方的例子,抱歉。
预祝大家可以玩的愉快,学习的愉快。
下一篇会讲解less更高级的语法,敬请期待
转载本文请注明出处
Bootstrap定制(二)less基础语法的更多相关文章
- 零基础学习JavaSE(二)——基础语法
二.Java 基础语法 2.1 Java 基础语法 java是一个面向对象的程序语言,及可把一切事物当做对象处理,而java的事物中最小的就是class (类),类中有方法,类可以创建对象,并且有一些 ...
- java(二、基础语法和基本数据类型)
Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如,一 ...
- Java零基础教程(二)基础语法
Java 基础语法 一个 Java 程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作.下面简要介绍下类.对象.方法和实例变量的概念. 对象:对象是类的一个实例,有状态和行为.例如 ...
- 二.Python基础语法和数据类型
Python第二节 基础语法和数据类型 Python编码 python3默认情况下源码文件以UTF-8编码, 字符串均为unicode字符串.同时也可以通过# -*- coding: cp-1252 ...
- MVC学习二:基础语法
目录 一:重载方法的调用 二:数据的传递 三:生成控件 四:显示加载视图 五:强类型视图 六:@Response.Write() 和 @Html.Raw()区别 七:视图中字符串的输入 八:模板页 一 ...
- mybatis基础系列(二)——基础语法、别名、输入映射、输出映射
增删改查 mapper根节点及其子节点 mybatis框架需要读取映射文件创建会话工厂,映射文件是以<mapper>作为根节点,在根节点中支持9个元素,分别为insert.update.d ...
- Scala(二)——基础语法(与Java的区分)和函数式编程
Scala快速入门(二) 一.键盘输入 关于基本类型的运算,以及复制运算,条件运算,运算符等知识,均和Java语言一样,这里不过多叙述. val name = StdIn.readLine() Std ...
- (二)CSS基础语法
CSS语法规则由两个主要的部分构成:选择器,以及一条或者多条声明. 下面的示意图为您展示了CSS语法结构: 例如: h1{color:red;font-size:14px;} 值得不同写法和单位 其中 ...
- Java基础学习笔记二 Java基础语法
注释 注释用来解释和说明程序的文字,注释是不会被执行的. 单行注释 //这是一条单行注释 public int i; 多行注释 /* 这是 * 一段注释, * 它跨越了多个行 */ public vo ...
随机推荐
- Mac下安装 php+nginx+mysql 开发环境
一.mysql安装 mysql是安装最简单顺利的 1. 首先去官方网站下载Mac适用的MySQL的dmg包 下载页面 选择图中最下方的dmg包下载进行安装 安装完成后 MySQL的安装目录为/usr/ ...
- JQ点击列表显示隐藏
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- MySQL跨表更新字段 工作记录
工作中遇到两表查询,从user表中获取用户唯一id字段 写入到另外一张qiuzu表中的uid字段中; 二者可以关联起来的只有用户的手机号码tel字段; 了解需求后数据量稍多,不可能一个一个的手动修改 ...
- .Net SSRS(rdlc) 报表经验总结
排版 1. 可以利用表格来布局,以避免调整固定宽度的麻烦. 2. 一个表的表头里还可以嵌套表格. 3. 设置rdlc报表打印格式.首先打开RDLC报表设计器页面.在灰色部分点右键 -> 报表属性 ...
- IOS 客户端测试入门.pdf
IOS 客户端测试入门 http://www.open-open.com/doc/view/42d1257bf67946f595e843bfdbdfeabf
- Linux/Unix工具与正则表达式的POSIX规范
http://www.infoq.com/cn/news/2011/07/regular-expressions-6-POSIX 对正则表达式有基本了解的读者,一定不会陌生『\d』.『[a-z]+』之 ...
- cf C. Find Maximum
http://codeforces.com/contest/353/problem/C 先预处理前i个数的和,然后找到第一个出现的1,然后变成0后的和与目前的和比较,如果大就更新. #include ...
- 如何给开源的DUILib支持Accessibility(论述了DUILib的六个缺点,很精彩)
最近的工作是给开源的DUILib支持Accessibility, 一些经验记录并分享下. 微软的Accessibility其实Windows平台上一个挺重要的东西, 尽管在国内不受重视,但是如果你 ...
- 关于volatile
也许读者会注意到,端口寄存器的变量使用了volatile 修饰符,这是因为C语言在编译的时候会进行某种优化来提高效率,比如下面这段代码int i = 1;int a = i;int b = i;对于编 ...
- poj2689:素数筛
题目大意,给定l和u,求区间[l,u]内的素数中,相邻两个差最大和最小的素数其中 u的范围达到了2e9本质上需要找出n以内的所有素数,使用筛法.先保存50000(大于sqrt(2e9))内的所有素数, ...