less学习笔记二

作为CSS的一个扩展语言,Less不仅向后兼容CSS,它新增的特殊功能也可以使用现有css的语法。这使学习Less是一件轻而易举的事。

1、Variables:变量定义,变量实际上是只能定义一次的常量

@nice-blue:#5B83AD;
@light-blue:@nice-blue + #111;

.header{
    color:@light-blue;
}

/**outputs**/

.header{
    color:#6c94be;
}

使用@定义了变量nice-blue,类.header中样式引用变量@light-blue.

2、Mixins:混合,一个规则集合在另一个规则集合中的调用。

.bordered {
  border-top: dotted 1px black;
  border-bottom: solid 2px black;
}
.mgt10{margin-top:10px;}

.menu a {
  color: #111;
  display:inline-block;
  padding:10px;
  .bordered;
}

/**outputs**/

.menu a { color: #111;
      display:inline-block;
      padding:10px;       
      border-top: dotted 1px black;
      border-bottom: solid 2px black;
  
}

选择器类.bordered在另一个选择器.menu a中调用。.bordered中的样式属性会在.menu a中解析成它原来的样子。

混合类可以是类选择器,id选择器;被引用时可以使用圆括号(可选的)

 

.paragraph{color:@nice-blue;}
.section-p{
    .paragraph();
}

 

如果你想创建一个不输出到页面样式文件的混合类,你可以在定义混合类的时候在它后面使用圆括号

.paragraph(){color:@nice-blue;}
.paragraphl{background:@light-blue;}
.section-p{
    .paragraph();
    .paragraphl();
}

/**outputs**/
.paragraphl {
  background: #6c94be;
}
.section-p {
  color: #5B83AD;
  background: #6c94be;
}

混合类中不止可以包含样式属性,也可以包含选择器

.hover-mixin(){
    &:hover{
        color:red;
    }
}
.menu a{
    .hover-mixin();
}
.section-p{
    .hover-mixin();
} /**outputs**/ .menu a:hover { color: red; }
.section-p{
  color: red;
}

符号&代表调用混合类hover-mixin的选择器,个人认为类似js中的this,指向调用该方法的对象。

Namespaces:命名空间,混合类嵌套定义

如果你想在一个更加复杂的选择器中混合多个样式属性,你可以堆积多层id或class

.article{
    .inner{color:red;}
}
.header-2{
    /*.article > .inner;*/
    /*.article > .inner();*/
    /*.article .inner;*/
    /*.article .inner();*/
    /*.article.inner;*/
        .article.inner();
}    

/**outputs**/
.article .inner {
  color: red;
}
.header-2 {
    /*.article > .inner;*/
    /*.article > .inner();*/
    /*.article .inner;*/
    /*.article .inner();*/
    /*.article.inner;*/
    color: red;
}

当需要在其他选择器中调用选择器中定义的混合类时,可以通过符号>和空格来实现。个人认为类似于js中调用对象中的属性方法时的操作 obj.func

此处,符号>和空格都是可选的。

Guarded Namespaces,条件命名空间

如果命名空间含有一个条件限制,它内部定义的混合类只有在条件状态返回true时才能被调用。定义命名空间上的条件限制与其内部混合类上的条件限制是等价的。

.....

!important关键字,使用在混合类后,将混合类中继承过来的所有属性标记为!important.

.unimportant{
        .paragraph();
    }
    .important{
        .paragraph() !important;
    }

/**outputs**/
.unimportant {
    color: #5B83AD;
}
.important {
    color: #5B83AD !important;
}

 

posted @ 2017-06-01 13:23  Youngly  阅读(176)  评论(0编辑  收藏  举报