Less简单入门

一:使用Koala编译less文件

        koala是一个前端预处理器语言图形编译工具,支持Less、Sass、Compass、CoffeeScript,帮助web开发者更高效地使用它们进行开发。跨平台运行,完美兼容windows、linux、mac。

  首先我们在Koala官网http://koala-app.com/index-zh.html下载压缩包并安装。

  

  下载安装好以后,打开koala软件,将你需要编译的less文件直接拖进来,如下图所示,点击文件右键,设置输出路径,并且勾选自动编译和输出方式为normal。(输出方式如果设置为compress,编译以后输出的css文件,将是打包以后的文件,不建议使用这种方式)。

  

二:Less用法

  1、Less中的注释

    在编写less时,注释可以使用css的/* */,也可以使用//(这种方法,编译时会自动过滤掉,不会显示在css中)

    

  2、Less变量

    less中想申明变量的话,一定要用@开头,例如:@变量名:值

    

    效果如下图所示:

    

  3、混合模式

    如果一个div有多个class,使用less,我们不必要将这些class全全都罗列到html中,在这个div上,只定义一个class

    

<div class="box2"></div>
@box_width : 200px;
.box2{
	width: @box_width;
	height: @box_width;
	background-color: red;
        .border;
        .margin;
}    
.border{
	border: 5px solid green;
}
.margin{
	margin:0 20px;
}

  编译后的index.css显示为如下:

.box2 {
  width: 200px;
  height: 200px;
  background-color: red;
  border: 5px solid green;
  margin: 0 20px;
}
.border {
  border: 5px solid green;
}
.margin {
  margin: 0 20px;
}

  混合模式------可带参数

  

.border_02(@border-width){
    border:solid yellow @border-width;
}
.box2{
    .border_02(20px);  //括号里面的值是必须要写的
}

   编译后的样式

.box2 {
  border: solid yellow 20px;
}

  界面显示如下:

  

   混合模式-----默认带值

   

.border_03(@border-width:30px){
    border:solid yellow @border-width;
}
.box2{
    .border_03();
    /*括号里面的值可以写也可以不写,不写的话,会用默认的值*/
    /*.border_03(40px);*/ 
}

  编译后样式显示:

.box2 {
  border: solid yellow 30px;
  /*括号里面的值可以写也可以不写,不写的话,会用默认的值*/
  /*.border_03(40px);*/
}

  4、匹配模式(可以理解为if-else模式,但不是所有的都可以这么理解)

    画一个三角形

/*正常写法*/
.triangle{
    width: 0px;
    height: 0px;
    overflow: hidden;
    border-width: 10px;
    border-color: transparent transparent red transparent;
    border-style: solid;      /*这样写的话,ie6会出现兼容性,三角形会有一个黑色的背景*/
    border-style: dashed dashed solid dashed;    /*这样写的话,可以解决ie6的兼容性*/
}
/*匹配模式*/
.triangle_01(top,@w:50px,@c:green){
    border-width: @w;
    border-color: transparent transparent @c transparent;
    border-style: dashed dashed solid dashed;
}
.triangle{
    .triangle_01(top);
}

  编译后的样式

/*正常写法*/
.triangle {
  width: 0px;
  height: 0px;
  overflow: hidden;
  border-width: 10px;
  border-color: transparent transparent red transparent;
  border-style: solid;
  /*这样写的话,ie6会出现兼容性,三角形会有一个黑色的背景*/
  border-style: dashed dashed solid dashed;
  /*这样写的话,可以解决ie6的兼容性*/
}
/*匹配模式*/
.triangle {
  border-width: 50px;
  border-color: transparent transparent green transparent;
  border-style: dashed dashed solid dashed;
}

  界面显示效果

  

  如果想要一个向下的三角形

/*匹配模式*/
.triangle_02(bottom,@w:50px,@c:green){
    border-width: @w;
    border-color: @c transparent transparent transparent;
    border-style: solid dashed dashed dashed;
}
.triangle{
    .triangle_02(bottom);
}

  以此类推,可以画出向左、向右的三角形。

  再比如定位:

.pos(r){
    position: relative;
}

.pos(a){
    position: absolute;
}
.pos(f){
    position: fixed;
}
.triangle{
    .pos(a);
}

  5、运算

    less中的运算,任何数字、颜色或者变量均可参与运算,运算应该被包裹到括号中,比如:+ - * /

@test_width : 30px;
.box2{
    width: (@test_width - 20) *5;
}

   编译以后的样式

.box2 {
  width: 50px;
}

  6、嵌套

    

<ul>
        <li><a href="#">Morbi in sem quis dui placerat ornare.</a><span>我在右边显示</span></li>
        <li><a href="#">Praesent dapibus, neque id cursus </a><span>我在右边显示</span></li>
        <li><a href="#">Phasellus ultrices nulla quis  </a><span>我在右边显示</span></li></li>
        <li><a href="#">Pellentesque fermentum</a><span>我在右边显示</span></li></li>
    </ul>
ul{
    width: 600px;
    margin: 30px auto;
    padding: 0px;
    list-style: none;
    li{
        height: 30px;
        line-height: 30px;
        background-color: red;
        margin-bottom: 10px;
        padding: 0 10px;
    }
    /*a和span标签的定义可以写在li标签里面,也可以和li同级。避免嵌套过深,我们写在同级*/
    a{
        float: left;
        color: #fff;
        &:hover{       /* &符号代表他的上一层选择器*/
            color:green;
        }
    }
    span{
        float: right;
    }
}

  编译后的css样式

ul {
  width: 600px;
  margin: 30px auto;
  padding: 0px;
  list-style: none;
  /*a和span标签的定义可以写在li标签里面,也可以和li同级。避免嵌套过深,我们写在同级*/
}
ul li {
  height: 30px;
  line-height: 30px;
  background-color: red;
  margin-bottom: 10px;
  padding: 0 10px;
}
ul a {
  float: left;
  color: #fff;
}
ul a:hover {
  color: green;
}
ul span {
  float: right;
}

  界面效果显示

  7、@arguments变量

    @arguments可以代表所有的变量

.border_04(@w:20px,@c:red,@style:solid){
    border:@arguments;
}
.box2{
    .border_04();
}

  编译后的css样式

.box2 {
  border: 20px red solid;
}

  8、避免编译

    在less中,有时我们需要输出一些不正确的CSS语法或者使用一些LESS不认识的专有语法,我们需要less不编译这些语法。

.box2{
    width: calc(200px-20px);
    width: ~'calc(200px-20px)';  /*不希望编译*/
}

  编译以后的css样式

.box2 {
  width: calc(180px);
  width: calc(200px-20px);
  /*不希望编译*/
}

    !important 关键字,在css中,优先级市最高的。在less中,会为所有混合所带来的样式,添加!important

 

    如以上书写有任何疑问或者错误的地方,请随时留言指出,不胜感激!

posted @ 2017-07-24 20:57  Jennry  阅读(474)  评论(0编辑  收藏  举报