LESS的基本用法
什么是LESS:
LESS是一个动态样式语言,属于CSS预处理语言的一种,为CSS的赋予了动态语言的特性,如变量、继承、运算、函数等,更方便CSS的编写和维护,让CSS更具有维护性,主题性,扩展性。
LESS可以在多种语言、环境中使用,包括浏览器端、桌面客户端、服务端。
LESS的官方网站:www.lesscss.org
如何使用LESS:
在使用时,应当用编译工具进行编译后使用!
使用的编译工具:Koala
官网下载:koala-app.com
LESS文件中的注释:
1、//注释的内容 只会在less文件中显示,不会编译到css文件中去;
2、/ *注释的内容 */ 会被编译到css文件中去;
LESS中的变量
普通变量
定义方式:@变量名:变量值
@green: #801f77; @baise:white;
作为选择器和属性名
定义方式:@{ 变量名 }
@kuandu:width; .@{kuandu}{ @{kuandu}:150px }
作为URL
使用方式:用" "将变量的值扩起来,同样将变量以 @{ 变量名 } 的方式使用
@imgurl:"https://www.baidu.com/img/"; header{ background: @green url("@{imgurl}bdlogo.png"); height: 500px; }
定义多个相同名称变量
@var: 0; .class { @var: 1; .brass { @var: 2; three: @var; //这时的值是3 @var: 3; } one: @var; //这时的值是1 }
注意:在定义一个变量两次时,只会使用最后定义的变量
LESS混合
普通混合:
即将一系列属性从一个规则集引入到另一个规则集的方式
.font_hn{ color: red; font-family: microsoft yahei, "黑体", Arial, Simsun, "Arial Unicode MS", Mingliu, Helvetica; } h1{ font-size: 28px; .font_hn; } h2{ font-size: 24px; .font_hn; }
编译后:
.font_hn { color: red; font-family: microsoft yahei, "黑体", Arial, Simsun, "Arial Unicode MS", Mingliu, Helvetica; } h1 { font-size: 28px; color: red; font-family: microsoft yahei, "黑体", Arial, Simsun, "Arial Unicode MS", Mingliu, Helvetica; } h2 { font-size: 24px; color: red; font-family: microsoft yahei, "黑体", Arial, Simsun, "Arial Unicode MS", Mingliu, Helvetica; }
不带输出的混合
在不想输出的混合集的名字后面加()即可
LESS写法:
.font_hn(){ color: red; font-family: microsoft yahei, "黑体", Arial, Simsun, "Arial Unicode MS", Mingliu, Helvetica; } h1{ font-size: 28px; .font_hn; } h2{ font-size: 24px; .font_hn; }
编译后CSS:
h1 { font-size: 28px; color: red; font-family: microsoft yahei, "黑体", Arial, Simsun, "Arial Unicode MS", Mingliu, Helvetica; } h2 { font-size: 24px; color: red; font-family: microsoft yahei, "黑体", Arial, Simsun, "Arial Unicode MS", Mingliu, Helvetica; }
带参数的混合
.border(@color){ border: 1px solid @color; } h1{ &:hover{ .border(green); } } h2{ &:hover{ .border(#000); } }
编译后CSS:
h1:hover { border: 1px solid #008000; } h2:hover { border: 1px solid #000000; }
注意:&符号的使用—如果你想写串联选择器,而不是写后代选择器,就可以用到&
了. 这点对伪类尤其有用如 :hover
和 :focus
带多个参数的混合
什么是多参数:一个组合可以带多个参数,参数之间推荐使用分号分开。
LESS写法:
.mixin(@color; @padding:xxx; @margin: 2) { color-3: @color; padding-3: @padding; margin: @margin @margin @margin @margin; } .div1{ .mixin(red;) } .div2 { .mixin(1,2,3;something, ele;132); } .div3 { .mixin(1,2,3); } .div4 { .mixin(1,2,3;); }
编译后CSS:
.div1 { color-3: #ff0000; padding-3: xxx; margin: 2 2 2 2; } .div2 { color-3: 1, 2, 3; padding-3: something, ele; margin: 132 132 132 132; } .div3 { color-3: 1; padding-3: 2; margin: 3 3 3 3; } .div4 { color-3: 1, 2, 3; padding-3: xxx; margin: 2 2 2 2; }
注:如果传参的括号中全都是以逗号分隔,那么会依次传给各个属性值;如果传参的括号中既有逗号,又有分号,那么会把分号前面的看作一个整体传给一个参数值。
命名参数
LESS写法:
.mixin(@color: black; @margin: 10px; @padding: 20px) { color: @color; margin: @margin; padding: @padding; } .class1 { .mixin(@margin: 20px; @color: #33acfe); } .class2 { .mixin(#efca44; @padding: 40px); }
编译后CSS:
.class1 { color: #33acfe; margin: 20px; padding: 20px; } .class2 { color: #efca44; margin: 10px; padding: 40px; }
注意:引用混合时通过参数名称来为混合提供参数值,不必按照任意特定的顺序来使用参数
arguments变量
.border(@x:solid,@c:red){ 编译后:.div1 { border: 21px @arguments; border:21px,solid,#ff0000; } } .div1{ .border(); }
注:arguments代表所有可变参数,参数的先后顺序就是( )里的参数顺序,假如给第一个和第三个赋值,不能写成(值1,值2,... ,值n),需要加上原来的默认值。
函数和运算
运算提供了加,减,乘,除操作;我们可以做属性值和颜色的运算,这样就可以实现属性值之间的复杂关系。
LESS写法:
@the-border: 1px; @base-color: #111; @red: #842210; #header { color: (@base-color * 3); border-left: @the-border; border-right: (@the-border * 2); } #footer { color: (@base-color + #003300); border-color: desaturate(@red, 10%); }
编译后:
#header { color: #333; border-left: 1px; border-right: 2px; } #footer { color: #114411; border-color: #7d2717; }
函数(了解)
color: 颜色转换函数。
image-size: 从文件中获取图像的宽度及高度,可作为 image-size 样式的值。
image-width : 从文件中获取图像的宽度。
image-height: 从文件中获取图像的高度。
convert: 单位转换,如 convert(10cm, mm)。
data-uri: 用于嵌入资源,data-uri(url, mimeType)。
unit: 可用于指定单位,unit(dimension, unit)。
get-unit: 可用于获取单位,如 get-unit(30px)。
svg-gradient: 可用于转换颜色,
if: 按条件返回指定的值,if(condition, value1, value2),当 condition 成立时,返回 value1,否则返回 value2。
字符串函数
escape: 对特殊字符使用URL编码来对字符串或信息进行编码。
e: 去除字符串的引号。
%: format 函数,用于转化字符串,如 %(string,arguments ...)。
replace: 用于替换字符串,如 replace(string, pattern, replacement, flags)。
列表函数
length: 用于获取列表的长度,如 @list: "audi", "benz", "toyota", "honda"; length(@list)。
extract: 用于获取列表中指定位置的值,如 @list: "audi", "benz", "toyota", "honda"; length(@list, 2)。
数学函数
ceil: 向上取整。
floor: 向下取整。
percentage: 将浮点数转换为百分比字符串。
round: 四舍五入。
sqrt: 获取平方根。
abs: 取绝对值,如 abs(30ft) 将获得 30ft。
sin, asin, cos, acos, tan, atan: 计算正弦、反正弦等。
pi: 返回 pi 的值。
pow: 计算幂。
mod: 计算首参相对次参的模。
min: 计算最小值,如 min(70,30,45,20)。
max: 计算最大值。
类型函数
类型函数包含 iscolor, isnumber, isstring, iskeyword, isurl, ispixel, ispercentage, isem, isunit, isruleset,返回布尔值。
参考