less用法

余生颓废 提交于 2019-12-06 04:48:35

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,返回布尔值。

参考

LESS教程

LESS语言特性

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!