动态样式语言—LESS
博客原文地址:Claiyre的个人博客 https://claiyre.github.io/
博客园地址:http://www.cnblogs.com/nuannuan7362/
如需转载,请在文章开头注明原文地址
前言
less作为css语言的扩展,赋予了css动态语言的特性,如:变量,继承,运算,函数等。如果你原本就是程序员,你一定会非常喜爱less,它可以帮你节省很多重复工作,可以让你像编写一门动态语言一样地编写css。
本文总结了less的相关语法和使用方式,可供查阅和入门使用。
正文
语法
变量
less允许使用变量,可以将一个多次用到的值设为一个变量。less中没有类型限制,以符号@标识变量,在声明或使用变量时再变量名前添加符号@即可
@bg-color: #fff;
@base-font-size: 16px;
//使用
.body{
background-color: @bg-color;
font-size: @base-font-size;
}
多数情况下,我们是将这个变量当做一个常量来使用;less中变量也只能被定义一次这一点使之更像常量。
混合
将需要用到多次的全局css样式集成为一个css类,在其他类中可以直接引用这个集成类,这个过程称为混合。
实例:
.base-border{
border: 2px solid #0c6dc7;
border-radius: 6px;
}
.img-top{
width: 150px;
height: 150px;
.base-border
}
.img-bottom{
width: 200px;
height: 150px;
.base-border
}
上面的会被解析为
.img-top{
width: 150px;
height: 150px;
border: 2px solid #0c6dc7;
border-radius: 6px;
}
.img-bottom{
width: 200px;
height: 150px;
border: 2px solid #0c6dc7;
border-radius: 6px;
}
个人认为混合与传统OO语言的继承颇为相似,子类继承父类的特征的同时,也可以添加自己专有的特征。
带参数的混合
在使用混合时,less允许给父类传入参数,参数使我们可以更加灵活地运用混合
比如,可以稍微改动上面的.base-border类
.base-border(@radius){
border: 2px solid #0c6dc7;
border-radius: @radius;
}
//使用
.img-top{
width: 150px;
height: 150px;
.base-border(10px);
}
.img-bottom{
width: 200px;
height: 150px;
.base-border(15px);
}
还可以设置参数的默认值,多个参数用逗号隔开:
.base-border(@color: #0c6dc7,@radius: 6px){
border: 2px solid @color;
border-radius: @radius;
}
//使用
.img-top{
width: 150px;
height: 150px;
.base-border; //默认是颜色#0c6dc7,半径6px
}
.img-bottom{
width: 200px;
height: 150px;
.base-border(#ff0000,15px);
}
在一个带参数的类中,我们可以通过@arguments来获取传进来的所有参数,可以整体作为某个属性的值。
嵌套规则
嵌套规则基于html的文档结构,可以减少我们对一些css选择器的使用,使代码更易懂,更简洁。
例如,我们需要设置这样的样式:
.parent{
background-color: #ff0000;
}
.parent .child{
height: 200px;
width: 200px;
}
.parent.ancestor{
border: 2px solid #000;
}
用less可以这样嵌套,文档结构更加明显:
.parent{
background-color: #ff0000;
.child{
height: 200px;
width: 200px;
}
&.ancestor{
border: 2px solid #000;
}
}
符号&,表示“and”,也可以理解为父级选择器。
颜色函数
less提供了多个颜色运算的函数,非常方便
| 函数 | 功能 |
|---|---|
| lighten(@color,10%) | 返回一个比@color亮10%的颜色 |
| darken(@color,10%) | 返回一个比@color暗10%的颜色 |
| saturate(@color,10%) | 返回一个比@color饱和度高10%的颜色 |
| desaturate(@color,10%) | 返回一个比@color饱和度低10%的颜色 |
| fadein(@color,10%) | 返回一个比@color透明度低10%的颜色,透明度低,颜色更深 |
| fadeout(@color,10%) | 返回一个比@color透明度高10%的颜色,透明度高,颜色更浅 |
| fade(@color,90%) | 返回一个透明度为0.9的颜色,等于fadeout(@color,10%) |
| spin(@color,10) | 返回颜色的hue值比@color大10度 |
| spin(@color,-10) | 返回颜色的hue值比@color小10度 |
| mix(@color-1,@color-2) | 返回@color-1和@color-2混合后的颜色 |
这些颜色运算函数会先将颜色转化为HSL色彩空间,然后在通道级别运算
math函数
less还提供了几个math函数,用来处理数字
| 函数 | 功能 |
|---|---|
| ceil(@number) | 向上取整 |
| floor(@number) | 向下取整 |
| round(@number) | 四舍五入 |
匹配模式
less匹配即判断是否满足条件,相当于switch或if-else if的用法,弥补了less不支持switchh和if的缺憾。
实例用法:
.special-border(top,@color){ // 匹配top 1
border-top: 2px solid @color;
border-top-left-radius: 10px;
border-top-right-radius: 20px;
}
.special-border(bottom,@color){ // 匹配bottom 2
border-bottom: 2px solid @color;
border-bottom-left-radius: 5px;
border-bottom-right-radius: 10px;
}
.special-border(@_,@color){ //匹配所有 3
border-right: 2px solid @color;
border-left: 2px solid @color;
}
.content{
.special-border(bottom, #73d79c);
height: 200px;
width: 200px;
}
上述代码中.content类匹配了2和3
导引
导引是对参数是否满足一定条件的匹配,不是对参数值得匹配。搭配when语句使用。
.class(@a) when(@a > 10){ ... }
.class(@a) when(iscolor(@a)){ ... }
.class(@this-media) when(@this-media = mobile){ ... }
.class(@a) when(@a){ ... } //仅当@a = true 时才可匹配
注意,在导引后的when语句中,若是只有单独的值,则除布尔值true以外的任何值都被视作假
导入
在文件开头通过关键字@import导入其他样式文件
@import "style.less"
@import "style"
@import "style.css"
以.less为后缀的文件的后缀名带不带均可
另: less不会处理.css的文件
变量作用域
less中的变量作用域和其他语言类似,首先会从本地查找变量或者混合模块,如果没找到的话会去父级作用域中查找,直到找到为止.
注释
两种注释方法,应注意其区别:
/*这是注释,编译为css后不会被滤掉*/
//这也是注释,编译为css后会被滤掉
使用
less可以在客户端使用,也可以在服务端使用
客户端使用
- 在html头部引入你的
.less样式文件 - 在html头部引入
less.js文件
上述引入文件的顺序不可颠倒
服务器端使用
- 先安装,最简便的方法是通过npm包管理器安装
$ npm install less
// 或安装最新稳定版本的 LESS
$ npm install less@latest
- 在文件头部通过require引入less即可使用
在命令行中手动将less编译为css文件
$ lessc styles.less > styles.css
结语
less并未减弱css的任何强大之处,在任何时候都可以回退至原始css,同时让习惯动态语言的程序员可以更方便地编写less。与其功能类似的有sass,两者各有优点,都值得一学。
动态样式语言—LESS的更多相关文章
- Less (一种动态样式语言)
Less (一种动态样式语言). LESS是一种由Alexis Sellier设计的动态层叠样式表语言,受Sass所影响,同时也影响了 Sass的新语法:SCSS. LESS是开源的,其第一个版本由R ...
- 动态样式语言Sass&Less介绍与区别
一. Sass/Scss&Less是什么? Sass (Syntactically Awesome Stylesheets)是一种动态样式语言,语法跟css一样(但多了些功能),比css好写, ...
- less 一种 动态 样式 语言
LESS « 一种动态样式语言 http://www.bootcss.com/p/lesscss/ 一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算, 函数 ...
- 动态样式语言Less学习笔记
介绍资料参见:http://www.bootcss.com/p/lesscss/ LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承,运算, 函数. LESS 既可以在 客户端 上运行 (支 ...
- Bootstrap进阶六:动态样式语言LESS简介
LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6+, Webkit, Firefox),也可以借助Node.js或者R ...
- 动态样式语言—LESS基础知识
CSS是一门非程序式语言,缺少逻辑性,不便于维护 LESS在CSS现有语法的基础上,为CSS加入程序式语言的特性 引入了变量.混入.运算.函数等功能,大大简化CSS的编写,降低了CSS的维护成本 LE ...
- Web前端一种动态样式语言-- Less
变量 变量允许我们单独定义一系列通用的样式,然后在需要的时候去调用.所以在做全局样式调整的时候我们可能只需要修改几行代码就可以了. // LESS @color: #4D926F; #header { ...
- 动态样式语言less初识
资料参考与http://lesscss.cn/ Bootstrap--(less)下载安装配置 http://lesscss.cn Less使用两种方法 (1)在客户端使用LESS--学习 编写 x. ...
- 深入理解脚本化CSS系列第五篇——动态样式
前面的话 很多时候,DOM操作比较简单明了,因此用javascript生成那些通常原本是HTML代码生成的内容并不麻烦.但由于浏览器充斥着隐藏的陷阱和不兼容问题,处理DOM中的某些部分时要复杂一些,比 ...
随机推荐
- Badboy安装与使用
Badboy是一个录制web脚本的工具 1.下载Badboy:http://www.badboy.com.au/download/add 2.启动Badboy,认识主界面 3.使用Badboy录制we ...
- UVa 507 - Jill Rides Again
题目大意:最大和子序列问题.由于具有最大和的子序列具有一下性质:第一项不为负数,并且从第一项开始累加,中间不会有和出现负数,因为一旦有负数我们可以抛弃前边的部分以得到更大的子序列和,这将会产生矛盾. ...
- ArcGIS Server的切图原理深入(转载)
http://forum.osgearth.org/template/NamlServlet.jtp?macro=search_page&node=2174485&query=arcg ...
- wildfly 如何设置外网访问
wildfly的默认配置是不支持外网访问的, 要想实现外网访问需要修改standalone.xml配置文件. 配置文件所在路径:wildfly/standalone/configuration/sta ...
- 负载均衡探测器lbd
负载均衡探测器lbd 大型网站为了解决海量访问问题,往往采用负载均衡技术,将用户的访问分配到不同的服务器上.网站的负载均衡可以从DNS和HTTP两个环节进行实施.在进行Web渗透测试的时候,需要先 ...
- Usermod:user oracle is currently logged in 家目录不能改变解决方法
[root@HE1 ~]# usermod -u 200 -g oinstall -G dba,asmdba,oper oracle[root@HE1 ~]# id oracleuid=200(ora ...
- 数据库设计的误区—>CHAR与VARCHAR
字符型字段是数据库表中最常见的字段,而字符型字段又分为定长和变长两种.一般来说,VARCHAR类型用于存储内容长度变化较大的数据,CHAR类型用于存储内容长度没有变化或变化不大的数据. 在数据的内部存 ...
- Pomelo的Filter
在pomelo中,filter分为before filter和after filter.在一个请求到达Handler被处理之前,可以经过多个before Filter组成的filter链进行一些前置处 ...
- Pomelo聊天室框架
聊天室是验证服务器最典型的例子,Pomelo的运行架构: 在这个架构里,前端服务器也就是connector专门负责承载连接, 后端的聊天服务器则是处理具体逻辑的地方. 这样扩展的运行架构具有如下优势: ...
- 关于异常“The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine”的处理
我们在利用SqlBlukcopy技术倒2010 或者2007格式的文件到SqlServer 数据库的时候,会发生如下错误: 原因如下: 1.在用SQL SERVER 2005访问.xlsx文件(off ...