Less基础学习记录

1.嵌套

.container{
  width:100%;
  height 100%;
  h1{
    font-size: 25px;
    color:#E45456;
  }
}

经过less编译以后为

.container{
  width:100%;
  height 100%;
}
.container h1{
  font-size: 25px;
  color:#E45456;
}

2.使用变量

@fontSize: 10px;
.myclass {
 font-size: @fontSize * 2;
 color:green;
}

经过less编译以后为

.myclass {
 font-size: 20px;
 color:green;
}

3.转义

p {
  color: ~"green";
}

经过less编译以后为,~“some_text"中的任何内容将显示为 some_text

p {
  color: green;
}

4.函数

@color: #FF8000;
@width:1.0;
.mycolor{
color: @color;
 width: percentage(@width);
}

经过less编译以后为,percentage相当于是转换为百分比。1就是100%,如果是0.6那就是60%

.mycolor {
  color: #FF8000;
  width: 100%;
}

5.命名空间以及访问器

.class1 {
  .class2 {
    .val(@param) {
      font-size: @param;
      color:green;
    }
  }
}

.myclass {
  .class1 > .class2 > .val(20px);
}

经过less编译以后为,用于将mixins分组在通用名称下。 使用命名空间可以避免名称冲突,并从外部封装mixin组,通过命名来降低代码的冗余度

.myclass {
  font-size: 20px;
  color: green;
}

6.变量范围

@var: @a;
@a: 15px;

.myclass {
  font-size: @var;
  @a:20px;
  color: green;
}

经过less编译以后为,变量范围指定可用变量的位置。 变量将从本地作用域搜索,如果它们不可用,则编译器将从父作用域搜索,因为@var指向的是@a,在.myclass中定义了@a的值为20px,所以font-size的值为20px,如果在.myclass中未定义,那么指向的值为父作用域中的15px

.myclass {
  font-size: 20px;
  color: green;
}

7.导入外部文件,后面指向的是文件路径@import

@import "myfile.less";

8.扩展extend

h2 {
  &:extend(.style);
  font-style: italic;
}
.style {
  background: green;
}

经过less编译以后为,Extend是一个Less伪类,它通过使用:extend 选择器在一个选择器中扩展其他选择器样式,&相当于h2,有点类似js中的this,指向它的本身,extend指向了.style,相当于h2具有了.style这个类中的所有样式

h2 {
  font-style: italic;
}
.style,h2 {
  background: green;
}

也可以类似理解为

h2 {
  font-style: italic;
  background: green;
}
.style{
  background: green;
}

9.混合Mixins

.p1{
  color:red;
}
.p2{
  background : #64d9c0;
  .p1();
}
.p3{
   background : #DAA520;
  .p1;
}

经过less编译以后为,混合类似于编程语言中的函数。 Mixins是一组CSS属性,允许您将一个类的属性用于另一个类,并且包含类名作为其属性。 在Less中,可以使用类或id选择器以与CSS样式相同的方式声明mixin。 它可以存储多个值,并且可以在必要时在代码中重复使用。相当于你的所有类或者id选择器都是可以复用的,相当于js中的方法

.p1 {
  color: red;
}
.p2 {
  background: #64d9c0;
  color: red;
}
.p3 {
  background: #DAA520;
  color: red;
}

10.混合参数

.border(@width; @style; @color) {
    border: @width @style @color;
}
.myheader {
    .border(2px; dashed; green);
}

经过less编译以后为,参数mixin使用一个或多个参数,通过参数和其属性来扩展Less的功能,以便在混合到另一个块时自定义mixin输出,相当于js中的方法传参,不过要注意中间的参数用;分割

.myheader {
     border: 2px dashed green;
}

10.Mixin Guards

.mixin (@a) when (lightness(@a) >= 50%) {
   font-size: 14px;
}
.mixin (@a) when (lightness(@a) < 50%) {
   font-size: 16px;
}
.mixin (@a) {
   color: @a;
}
.class1 {
   .mixin(#FF0000)
}
.class2 {
   .mixin(#555)
}

经过less编译以后为,如果你想在表达式上匹配简单的值或参数数量,那么你可以使用Guards。 它与mixin声明相关联,并包括附加到mixin的条件。 每个mixin将有一个或多个由逗号分隔的防护,并且guard必须括在括号中。Less使用Guardsmixins而不是if / else语句,并执行计算以指定匹配的mixin,个人理解有点像是js中的switch,进行条件的匹配,选择相应的结果。lightness()函数是取得颜色值的亮度,返回值0~100%,rgb()里的三个值越大,亮度越高,值越小,亮度越低。这段代码从下往上理解会更方便一些,首先是第一个.class1,调用了.mixin,传参为#FF0000,相当于@a的值定义为#FF0000,然后进入when的的条件判断,由于lightness('#FF0000')的值大于等于50%,所以字体大小为14px,第二个.class2同理

.class1 {
  font-size: 14px;
  color: #FF0000;
}
.class2 {
  font-size: 16px;
  color: #555;
}

10.CSS Guards,不仅Mixins可以使用Guards,CSS也可以使用Guards

@usedScope: global;
.mixin() {
  @usedScope: mixin;
  .cont when (@usedScope=global) {
    background-color: red;
    color: black;
  }
  .style when (@usedScope=mixin) {
    background-color: blue;
    color: white;
  }
  @usedScope: mixin;
}
.mixin();

经过less编译以后为,Guard用于匹配表达式上的简单值或参数个数。 它应用于CSS选择器。 它是用于声明mixin并立即调用它的语法。 要成功地引出if类型语句; 将此功能与功能结合使用,您可以将多个guards分组。由于本地作用域中定义了变量usedScope的值为mixin,(如果本地作用域中未定义,那么将访问父作用域中的值,那么usedScope的值将为global)。在进行判断,那么.styleGuard将成立,输出结果为.style

.style {
  background-color: blue;
  color: white;
}

11.循环

.cont(@count) when (@count > 0) {
  .cont((@count - 1));
  width: (25px * @count);
}
div {
  .cont(7);
}

经过less编译以后为,Loops语句允许我们多次执行一个语句或一组语句。 当递归mixinGuard表达式和模式匹配组合时,可以创建各种迭代/循环结构。可以看到传入的值为7,每次循环-1,当数值=0的时候,循环就停止了,总共循环了7次,每次累加25px

div {
  width: 25px;
  width: 50px;
  width: 75px;
  width: 100px;
  width: 125px;
  width: 150px;
  width: 175px;
}

12.父选择器&,其实前面的案例中已经有所使用了

a {
  color: #5882FA;
  &:hover {
    background-color: #A9F5F2;
  }
}

经过less编译以后为,&可以理解为js中的this,指向了它的父级a

a {
  color: #5882FA;
}
a:hover {
  background-color: red;
}

参考于w3cschool.

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容