less学习笔记

less要点:变量,混合,嵌套,函数&运算,扩展javascript

一,变量

(1)less经过@来定义变量;如:@color:#333;
(2)不只能够用变量来管理属性值,也能够用在选择器名称,属性名,URL以及@import语句中;
例一:选择器变量
less:css

//定义一个选择器变量; 
@mySelector:banner;
//应用
.@{mySelector}{
    width:100px;
    height:100px;
}

编译后的css:java

.banner{
    width:100px;
    height:100px;
}

例二:URL变量编程

@img:'../img';
//应用
.widget{
    width:100px;
    height:100px;
    background:url('@{img}/widget.png') no-repeat;
}

例三:属性变量less

@property:color;
//应用
.widget{
   width:100px;
   height:100px;
   @{property}:#eee;
}

二,混合(Mixin)

相似于函数。混合能够将一个定义好的class A轻松的引入到另外一个class B中,从而简单实现class B继承 class A中的全部属性。咱们还能够带参数地调用,就像使用函数同样。
例一:无参编程语言

//定义一个color类
.color{
   color:#eee;
   background-color:#f00;
}
//应用
.widget{
   width:100px;
   height:100px;
   .color;
}

例二:有参函数

//定义一个color类
.color (@color:#eee){
    color:@color;
    background-color:#f00;
}
//应用
.widget{
    width:100px;
    height:100px;
    .color();//不传参时,即用默认的参数;
    .color(#0f0);//传入参数的状况
}

有些时候看到以下的用法:this

.color () {
    color:#eee;
}

当你但愿.color()不出如今css里,且又能引入其它类时,就能够这样写。
例三:
在媒体查询里的嵌套写法稍有区别,以下所示;
clipboard.pngurl

三,匹配模式

匹配模式的写法相似于混合。它的做用相似于if语句。spa

.mixin(dark,@color) {
  color: darken(@color, 15%);
}
.mixin(light,@color) {
  color: lighten(@color, 15%);
}
//下面代码的做用是,无论匹配上面哪一种模式,下面样式都会加进去。注意:第一个参数必定是@_,后面的每一个参数都要加上
.mixin(@_,@color) {
width:100px;
height:100px;
}
.line {
  .mixin(dark,#FF0000);
}

编译后:

.line {
    color: #b30000;
    width: 100px;
    height: 100px;
}

四,嵌套

(1)在一个选择器中嵌套另外一个选择器来实现继承;(&表示当前选择器的父选择器)
(2)媒体查询和嵌套媒体查询
less:

#header{
    background-color:#eee;
    overflow:hidden;
    .logo{
        float:left;
        width:50px;
        height:30px;
        a{
            display:block;
        }
    }
}

编译后:

#header{
    background-color:#eee;
    overflow:hidden;
}
#header .logo{
        float:left;
        width:50px;
        height:30px;
}
#header .logo a{
    display:block;
}

五,函数&运算

任何数值,颜色和变量均可以进行运算;less能够进行加、减、乘、除的运算;less提供了内置的函数,如Color函数,Math函数;

@width:50px;
#header{
width:@width + 50;
}

六,命名空间和访问器

有时候,出于组织的目的,或者为了提供一些封装,你会但愿将你的mixins 组合在一块儿。以便稍候复用或者分发。
命名空间至关于一个混合的集合;能够在须要的地方引用单独的样式。

#bundle{
    .button{
        display:block;
    }
    .tab{……}
    .citation{……}
}

如今若是咱们想在#header a中混合.button类,那么能够这样写:

#header a{
    #bundle > .button
}

须要注意的是命名空间内声明的变量将只做用于该命名空间,你会用它来引用一个mixin (#Namespace > .mixin-name)。但你不能这么作: (#Namespace > @this-will-not-work)。

七,做用域

less 中的做用域与编程语言中的做用域概念很是类似。首先会在局部查找变量和混合,若是没找到,编译器就会在父做用域中查找,依次类推。

八,注释

/*块注释*/
//行注释(不会输出到编译后的css文件中)

九,扩展

extend是一个less伪类,它会合并它所在的选择其和它所匹配的引用。
less:

nav ul{
    &:extend(.inline);
    background:blue;
}
.inline{
    color:red;
}

编译后:

nav ul{
    background:blue;
}
.inline,nav ul{
    color:red;
}

十,arguments变量

arguments变量包含了所有的传进来的参数。若是不想一个参数一个参数的写,那么能够用arguments参数。
less:

.border(@w:10px,@c:red,@xx:solid) {
    border:@arguments;
}
div{
    .border(20px);
}

编译后:

div{
    border:20px red solid;
}

十一,避免编译

有时候咱们须要输出一些不正确的css语法或less不认识的专有语法。要输出这样的值咱们能够在字符串前加上‘~’
例:

div{
    width:~' calc(100% - 35)';
}

十二,!important关键字

相似于css !important关键字。

相关文章
相关标签/搜索