zoukankan      html  css  js  c++  java
  • css-Less

    介绍

    Less 是一门 CSS 预处理语言,它扩充了 CSS 语言,增加了诸如变量、混合(mixin)、函数等功能,让 CSS 更易维护,提高开发效率。

    但正因为它是预处理语言,因此不能直接被使用,需要进行编译后才可以。

    less需要 nodejs支持。

    安装: > npm install -g less

    查看:    > lessc

    编译

    命令编译: 

    > lessc  aaa.less aaa.css

    @charset "utf-8";
    @bgColor:red; body{ background-color:@bgColor; }

    html页面引入:

    <link rel="stylesheet"  href="index.css" type="text/css" />

    <style type="text/css" >
    @import url("index.css"); </style>

    Koala外部编译器可编译Sass和Less文件:

    安装地址:http://koala-app.com/index-zh.html

    在内部将less文件放入到一个less文件夹下,同时建立css文件夹,则会自动将less文件转化为css文件。

    因编译后的css,如果压缩,Output Style:Compress, 如果有问题不好跟踪,因此在设置中建立map地址映射(资源地图文件)。 》Setting -》Less -》Default Options -》Sourse Map.

    这样就会在页面css跳出时,直接映射到less文件上。

    Webstorm 内置编译器:

    File-》Setting -》 Tools -》 File watcher -》 Add Less(添加Less)

    注意:npm已经添加有less命令,同时 注意output路径中默认是编译到同级目录下,因此如果不同级注意 ../css/*****

    语法:

    •  注释
    •  变量
    •  混合(mixins)
    •  模式匹配
    •  颜色函数
    • 嵌套
    • 运算

     变量

    @charset "utf-8";
    @bColor: green;
    @boderColor: red;
    @imgurl: "../img";
    body{
        background-color:@bColor;
    }
    div{
        border: solid 1px @boderColor;
    }
    div{
        background-image: url("@{imgurl}/01.png");
    }

     变量使用

    》@变量名: 变量值;   在使用的地方 @变量名, 注意变量值应为css内容。

    》@变量名: 拼接字符串;      "@{变量名}拼接内容"  注意 要为{}括号

    注释

      // 单行注释,编译后不保留,因css本身不支持 //

          /**/ 多行注释,编译后保留

    混合

        犹如js函数一般,将一部分css,包裹在一个函数中,在使用的地方直接调用即可。

    .font(@color: #ffffff, @size: 14px){
      font-size: @size;
      color: @color;
    }
    
    
    .error{
    .font(#ff0000, 18px);
    }
    .normal{
      .font();
    }

     混合定义: 》.混合(@参数名:默认参数值){****}  

     注意:必须以 点 开头, 混合中的参数为形参,可传可不传(依据是否有默认值决定),且不可以有引号,使用如同js方法一样使用即可。

    模式匹配

    模式匹配,如同js的switch一样, 当遇到相同的内容就走对应的代码段。以创建三角形为例。

    .trangle(@_,@color,@size){
        0px;
        height: 0px;
        border:solid @size;
        border-color: transparent;
    }
    .trangle(right, @color, @size){
        border-right-color: @color;
    }
    .trangle(left, @color, @size){
        border-left-color: @color;
    }
    .trangle(top, @color, @size){
        border-right-color: @color;
    }
    .trangle(bottom, @color, @size){
        border-left-color: @color;
    }
    
    .trangle-l{
        .trangle(left, #ff00ff, 18px);
    }

     @_  为通配符,相当于switch 中的 default,不论匹配哪个,此内容都会被执行,因此用于定义共通样式。

     第一个参数为string的固定值,相当于case,当传入的内容匹配此内容时,会执行内部的内容。

    注意:模式匹配要求定义的函数名称要求一致,且入参的内容要注意和模式的匹配要吻合。

    颜色函数

     颜色组成: 色相(spin-色轮),明度(dark-light),饱和度(saturate)

    函数:   

    lighten(@color, @percent)      //percent最高百分之50

    darken(@color, @percent)     //percent最高百分之50

    spin(@color, @index)                //index 表示色轮指定颜色的偏移量,适合颜色逐渐变化

    saturate(@color, @percent)       //饱和度提升百分比

    desaturate(@color, @percent)   //减饱和度

    mix(@color1, @color2)      //取颜色1和颜色2混合到一起形成的新颜色

    /**ul{
        list-style: none;
        li:nth-of-type(1){
            background-color:darken(red, 0%);
        }
        li:nth-child(2){
            background-color:darken(red, 10%);
        }
         li:nth-child(3){
            background-color:darken(red, 20%);
        }
        li:nth-child(4){
            background-color:darken(red, 30%);
        }
        li:nth-child(5){
            background-color:darken(red, 50%);
        }
    } **/
    
    ul{
        list-style: none;
        li:nth-of-type(1){
            background-color:lighten(red, 0%);
        }
        li:nth-child(2){
            background-color:lighten(red, 10%);
        }
         li:nth-child(3){
            background-color:lighten(red, 20%);
        }
        li:nth-child(4){
            background-color:lighten(red, 30%);
        }
        li:nth-child(5){
            background-color:lighten(red, 50%);
        }
        
        li:nth-child(6){
            background-color:saturate(red, 100%);
        }
        li:nth-child(7){
            background-color:desaturate(red, 50%);
        }
        li:nth-child(8){
            background-color:spin(red, -20);
        }
        li:nth-child(9){
            background-color:spin(red, 20);
        }
        li:nth-child(10){
            background-color:mix(red, green);
        }
        
    } 

    注意:此处的nth-child也可支持(even,odd)做奇偶不同用。

    ul{
      list-style: none; 
      li:nth-child(odd){
        background-color:lighten(red, 20%);
      }
      li:nth-child(even){
        background-color:darken(red, 20%);
      } 
    }

     嵌套:

    将子或子子元素的样式以包含的形式被融入到父样式中类似

    .a .b{****}  =>   .a{ .b{}}  

    这样的好处是,可以将某一模块的所有样式统一在一起,不会那么零散。

    注意:&表示父亲, 对邻居父子同级元素伪类 (+ ~   > :)都要使用&来表示。

    .font-btn{
      color: #9A9A9A;
      &:hover{
        color: #926AA3;
        .icon{
          background-color: rgba(146,106,163,.2);
        }
      }
      &:focus{
        color: #480968;
        .icon{
          background-color: rgba(146,106,163,.2);
        }
      }
    }

     运算:

    运算符分类: 加减乘除。用于角度,颜色,宽度,高度进行计算。

    宽度高度

    ul{
        list-style: none; 
        li{
            background-color: @bgcommon;
        } 
          
        li:nth-of-type(1){
             @w1;
            background-color: @bgcommon + #990000;
        } 
        li:nth-of-type(2){
             @w2 + @w1; //注意最好带空格,变量之间运算可以不带空格,和数据计算要带空格
            background-color: @bgcommon * 5;
        }
        li:nth-of-type(3){
             @w1 + 500px; //注意要加空格
        }
    }

    // TODO

  • 相关阅读:
    Oracle ORA-01033: ORACLE initialization or shutdown in progress 错误解决办法
    Oracle用imp导入dmp 提示遇到 ORACLE 错误 12560 TNS: 协议适配器错误 解决方法
    Oracle恢复误删除表操作语句
    DevExpress GridControl使用方法总结
    PL/SQL Developer 中的问题:Initialization error Could not load ".../oci.dll"解决方法
    Oracle中查询当前数据库中的所有表空间和对应的数据文件语句命令
    [PHP]利用XAMPP搭建本地服务器, 然后利用iOS客户端上传数据到本地服务器中(三. PHP端代码实现)
    [iOS]ios archives 出现的是other items而不是iOS Apps的解决方案
    [PHP]利用XAMPP搭建本地服务器, 然后利用iOS客户端上传数据到本地服务器中(二.配置MySQL数据库)
    [软件]XAMPP错误解决
  • 原文地址:https://www.cnblogs.com/DennyZhao/p/8781832.html
Copyright © 2011-2022 走看看